Skip to content

Commit b1551bb

Browse files
authored
Bump go plugin SDK to 0.184.0 (#100)
* bump to 0.180.0 * fix imports * fix another import * update readme * bump to 0.182.0 * bump to latest
1 parent d99b10a commit b1551bb

File tree

8 files changed

+36
-35
lines changed

8 files changed

+36
-35
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ if err := datasource.Manage("my-datasource", datasourceFactory, datasource.Manag
1616
os.Exit(1)
1717
}
1818

19-
func datasourceFactory(s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
19+
func datasourceFactory(ctx context.Context, s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
2020
ds := sqlds.NewDatasource(&myDatasource{})
21-
return ds.NewDatasource(s)
21+
return ds.NewDatasource(ctx, s)
2222
}
2323
```
2424

datasource.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ func getDatasourceUID(settings backend.DataSourceInstanceSettings) string {
8080

8181
// NewDatasource creates a new `SQLDatasource`.
8282
// It uses the provided settings argument to call the ds.Driver to connect to the SQL server
83-
func (ds *SQLDatasource) NewDatasource(settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
84-
db, err := ds.c.Connect(settings, nil)
83+
func (ds *SQLDatasource) NewDatasource(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
84+
db, err := ds.c.Connect(ctx, settings, nil)
8585
if err != nil {
8686
return nil, DownstreamError(err)
8787
}
@@ -95,7 +95,7 @@ func (ds *SQLDatasource) NewDatasource(settings backend.DataSourceInstanceSettin
9595
}
9696

9797
ds.CallResourceHandler = httpadapter.New(mux)
98-
ds.driverSettings = ds.c.Settings(settings)
98+
ds.driverSettings = ds.c.Settings(ctx, settings)
9999

100100
return ds, nil
101101
}
@@ -154,12 +154,12 @@ func (ds *SQLDatasource) QueryData(ctx context.Context, req *backend.QueryDataRe
154154
return response.Response(), nil
155155
}
156156

157-
func (ds *SQLDatasource) GetDBFromQuery(q *Query, datasourceUID string) (*sql.DB, error) {
158-
_, dbConn, err := ds.getDBConnectionFromQuery(q, datasourceUID)
157+
func (ds *SQLDatasource) GetDBFromQuery(ctx context.Context, q *Query, datasourceUID string) (*sql.DB, error) {
158+
_, dbConn, err := ds.getDBConnectionFromQuery(ctx, q, datasourceUID)
159159
return dbConn.db, err
160160
}
161161

162-
func (ds *SQLDatasource) getDBConnectionFromQuery(q *Query, datasourceUID string) (string, dbConnection, error) {
162+
func (ds *SQLDatasource) getDBConnectionFromQuery(ctx context.Context, q *Query, datasourceUID string) (string, dbConnection, error) {
163163
if !ds.EnableMultipleConnections && !ds.driverSettings.ForwardHeaders && len(q.ConnectionArgs) > 0 {
164164
return "", dbConnection{}, MissingMultipleConnectionsConfig
165165
}
@@ -179,7 +179,7 @@ func (ds *SQLDatasource) getDBConnectionFromQuery(q *Query, datasourceUID string
179179
return key, cachedConn, nil
180180
}
181181

182-
db, err := ds.c.Connect(dbConn.settings, q.ConnectionArgs)
182+
db, err := ds.c.Connect(ctx, dbConn.settings, q.ConnectionArgs)
183183
if err != nil {
184184
return "", dbConnection{}, DownstreamError(err)
185185
}
@@ -215,7 +215,7 @@ func (ds *SQLDatasource) handleQuery(ctx context.Context, req backend.DataQuery,
215215
}
216216

217217
// Retrieve the database connection
218-
cacheKey, dbConn, err := ds.getDBConnectionFromQuery(q, datasourceUID)
218+
cacheKey, dbConn, err := ds.getDBConnectionFromQuery(ctx, q, datasourceUID)
219219
if err != nil {
220220
return getErrorFrameFromQuery(q), err
221221
}
@@ -254,7 +254,7 @@ func (ds *SQLDatasource) handleQuery(ctx context.Context, req backend.DataQuery,
254254
if shouldRetry(ds.driverSettings.RetryOn, err.Error()) {
255255
for i := 0; i < ds.driverSettings.Retries; i++ {
256256
backend.Logger.Warn(fmt.Sprintf("query failed: %s. Retrying %d times", err.Error(), i))
257-
db, err := ds.dbReconnect(dbConn, q, cacheKey)
257+
db, err := ds.dbReconnect(ctx, dbConn, q, cacheKey)
258258
if err != nil {
259259
return nil, DownstreamError(err)
260260
}
@@ -278,7 +278,7 @@ func (ds *SQLDatasource) handleQuery(ctx context.Context, req backend.DataQuery,
278278
if errors.Is(err, context.DeadlineExceeded) {
279279
for i := 0; i < ds.driverSettings.Retries; i++ {
280280
backend.Logger.Warn(fmt.Sprintf("connection timed out. retrying %d times", i))
281-
db, err := ds.dbReconnect(dbConn, q, cacheKey)
281+
db, err := ds.dbReconnect(ctx, dbConn, q, cacheKey)
282282
if err != nil {
283283
continue
284284
}
@@ -293,12 +293,12 @@ func (ds *SQLDatasource) handleQuery(ctx context.Context, req backend.DataQuery,
293293
return nil, err
294294
}
295295

296-
func (ds *SQLDatasource) dbReconnect(dbConn dbConnection, q *Query, cacheKey string) (*sql.DB, error) {
296+
func (ds *SQLDatasource) dbReconnect(ctx context.Context, dbConn dbConnection, q *Query, cacheKey string) (*sql.DB, error) {
297297
if err := dbConn.db.Close(); err != nil {
298298
backend.Logger.Warn(fmt.Sprintf("closing existing connection failed: %s", err.Error()))
299299
}
300300

301-
db, err := ds.c.Connect(dbConn.settings, q.ConnectionArgs)
301+
db, err := ds.c.Connect(ctx, dbConn.settings, q.ConnectionArgs)
302302
if err != nil {
303303
return nil, DownstreamError(err)
304304
}
@@ -318,14 +318,14 @@ func (ds *SQLDatasource) CheckHealth(ctx context.Context, req *backend.CheckHeal
318318
return ds.check(dbConn)
319319
}
320320

321-
return ds.checkWithRetries(dbConn, key, req.GetHTTPHeaders())
321+
return ds.checkWithRetries(ctx, dbConn, key, req.GetHTTPHeaders())
322322
}
323323

324324
func (ds *SQLDatasource) DriverSettings() DriverSettings {
325325
return ds.driverSettings
326326
}
327327

328-
func (ds *SQLDatasource) checkWithRetries(conn dbConnection, key string, headers http.Header) (*backend.CheckHealthResult, error) {
328+
func (ds *SQLDatasource) checkWithRetries(ctx context.Context, conn dbConnection, key string, headers http.Header) (*backend.CheckHealthResult, error) {
329329
var result *backend.CheckHealthResult
330330

331331
q := &Query{}
@@ -334,7 +334,7 @@ func (ds *SQLDatasource) checkWithRetries(conn dbConnection, key string, headers
334334
}
335335

336336
for i := 0; i < ds.driverSettings.Retries; i++ {
337-
db, err := ds.dbReconnect(conn, q, key)
337+
db, err := ds.dbReconnect(ctx, conn, q, key)
338338
if err != nil {
339339
return nil, err
340340
}

datasource_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type fakeDriver struct {
2323
Driver
2424
}
2525

26-
func (d fakeDriver) Connect(settings backend.DataSourceInstanceSettings, msg json.RawMessage) (db *sql.DB, err error) {
26+
func (d fakeDriver) Connect(_ context.Context, _ backend.DataSourceInstanceSettings, msg json.RawMessage) (db *sql.DB, err error) {
2727
return d.openDBfn(msg)
2828
}
2929

@@ -83,7 +83,7 @@ func Test_getDBConnectionFromQuery(t *testing.T) {
8383
ds.storeDBConnection(key, dbConnection{tt.existingDB, settings})
8484
}
8585

86-
key, dbConn, err := ds.getDBConnectionFromQuery(&Query{ConnectionArgs: json.RawMessage(tt.args)}, tt.dsUID)
86+
key, dbConn, err := ds.getDBConnectionFromQuery(context.Background(), &Query{ConnectionArgs: json.RawMessage(tt.args)}, tt.dsUID)
8787
if err != nil {
8888
t.Fatalf("unexpected error %v", err)
8989
}
@@ -98,15 +98,15 @@ func Test_getDBConnectionFromQuery(t *testing.T) {
9898

9999
t.Run("it should return an error if connection args are used without enabling multiple connections", func(t *testing.T) {
100100
ds := &SQLDatasource{c: d, EnableMultipleConnections: false}
101-
_, _, err := ds.getDBConnectionFromQuery(&Query{ConnectionArgs: json.RawMessage("foo")}, "dsUID")
101+
_, _, err := ds.getDBConnectionFromQuery(context.Background(), &Query{ConnectionArgs: json.RawMessage("foo")}, "dsUID")
102102
if err == nil || !errors.Is(err, MissingMultipleConnectionsConfig) {
103103
t.Errorf("expecting error: %v", MissingMultipleConnectionsConfig)
104104
}
105105
})
106106

107107
t.Run("it should return an error if the default connection is missing", func(t *testing.T) {
108108
ds := &SQLDatasource{c: d}
109-
_, _, err := ds.getDBConnectionFromQuery(&Query{}, "dsUID")
109+
_, _, err := ds.getDBConnectionFromQuery(context.Background(), &Query{}, "dsUID")
110110
if err == nil || !errors.Is(err, MissingDBConnection) {
111111
t.Errorf("expecting error: %v", MissingDBConnection)
112112
}
@@ -199,7 +199,7 @@ func Test_error_retries(t *testing.T) {
199199

200200
key := defaultKey(dsUID)
201201
// Add the mandatory default db
202-
db, _ := timeoutDriver.Connect(settings, nil)
202+
db, _ := timeoutDriver.Connect(context.Background(), settings, nil)
203203
ds.storeDBConnection(key, dbConnection{db, settings})
204204
ctx := context.Background()
205205

@@ -262,7 +262,7 @@ func Test_query_apply_headers(t *testing.T) {
262262

263263
key := defaultKey(dsUID)
264264
// Add the mandatory default db
265-
db, _ := timeoutDriver.Connect(settings, nil)
265+
db, _ := timeoutDriver.Connect(context.Background(), settings, nil)
266266
ds.storeDBConnection(key, dbConnection{db, settings})
267267
ctx := context.Background()
268268

@@ -331,7 +331,7 @@ func Test_check_health_with_headers(t *testing.T) {
331331

332332
key := defaultKey(dsUID)
333333
// Add the mandatory default db
334-
db, _ := timeoutDriver.Connect(settings, nil)
334+
db, _ := timeoutDriver.Connect(context.Background(), settings, nil)
335335
ds.storeDBConnection(key, dbConnection{db, settings})
336336
ctx := context.Background()
337337

driver-mock.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package sqlds
22

33
import (
4+
"context"
45
"database/sql"
56
"encoding/json"
67
"os"
@@ -19,7 +20,7 @@ type SQLMock struct {
1920
folder string
2021
}
2122

22-
func (h *SQLMock) Settings(config backend.DataSourceInstanceSettings) DriverSettings {
23+
func (h *SQLMock) Settings(_ context.Context, _ backend.DataSourceInstanceSettings) DriverSettings {
2324
return DriverSettings{
2425
FillMode: &data.FillMissing{
2526
Mode: data.FillModeNull,
@@ -29,7 +30,7 @@ func (h *SQLMock) Settings(config backend.DataSourceInstanceSettings) DriverSett
2930
}
3031

3132
// Connect opens a sql.DB connection using datasource settings
32-
func (h *SQLMock) Connect(config backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error) {
33+
func (h *SQLMock) Connect(_ context.Context, _ backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error) {
3334
backend.Logger.Debug("connecting to mock data")
3435
folder := h.folder
3536
if folder == "" {

driver.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ type DriverSettings struct {
2626
// Plugin creators will need to implement this in order to create a managed datasource
2727
type Driver interface {
2828
// Connect connects to the database. It does not need to call `db.Ping()`
29-
Connect(backend.DataSourceInstanceSettings, json.RawMessage) (*sql.DB, error)
29+
Connect(context.Context, backend.DataSourceInstanceSettings, json.RawMessage) (*sql.DB, error)
3030
// Settings are read whenever the plugin is initialized, or after the data source settings are updated
31-
Settings(backend.DataSourceInstanceSettings) DriverSettings
31+
Settings(context.Context, backend.DataSourceInstanceSettings) DriverSettings
3232
Macros() Macros
3333
Converters() []sqlutil.Converter
3434
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.20
55
require (
66
github.com/go-sql-driver/mysql v1.4.0
77
github.com/google/go-cmp v0.5.9
8-
github.com/grafana/grafana-plugin-sdk-go v0.181.0
8+
github.com/grafana/grafana-plugin-sdk-go v0.184.0
99
github.com/mithrandie/csvq-driver v1.6.8
1010
github.com/stretchr/testify v1.8.3
1111
)

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1
9090
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
9191
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
9292
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
93-
github.com/grafana/grafana-plugin-sdk-go v0.180.0 h1:+5aFolBj2H7ze7oejIUjrkmZ9lSydnsbo3e4Kn1CN1Y=
94-
github.com/grafana/grafana-plugin-sdk-go v0.180.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts=
95-
github.com/grafana/grafana-plugin-sdk-go v0.181.0 h1:loAGW1547V73i6YNTkvU4tuosrc4Djcl71JHesm/Urc=
96-
github.com/grafana/grafana-plugin-sdk-go v0.181.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts=
93+
github.com/grafana/grafana-plugin-sdk-go v0.182.0 h1:UDhzFEXDeskgJi5uG/uHJc350vrQp1hi/Eg8KUFw5Io=
94+
github.com/grafana/grafana-plugin-sdk-go v0.182.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts=
95+
github.com/grafana/grafana-plugin-sdk-go v0.184.0 h1:1bIQZnOLqktYwaFybkghE9TmWv+gLKB4plB2wL4DCdQ=
96+
github.com/grafana/grafana-plugin-sdk-go v0.184.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts=
9797
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
9898
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
9999
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=

mock/csv/csv_mock.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type SQLCSVMock struct {
2222
folder string
2323
}
2424

25-
func (h *SQLCSVMock) Settings(config backend.DataSourceInstanceSettings) sqlds.DriverSettings {
25+
func (h *SQLCSVMock) Settings(_ context.Context, _ backend.DataSourceInstanceSettings) sqlds.DriverSettings {
2626
return sqlds.DriverSettings{
2727
FillMode: &data.FillMissing{
2828
Mode: data.FillModeNull,
@@ -32,7 +32,7 @@ func (h *SQLCSVMock) Settings(config backend.DataSourceInstanceSettings) sqlds.D
3232
}
3333

3434
// Connect opens a sql.DB connection using datasource settings
35-
func (h *SQLCSVMock) Connect(config backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error) {
35+
func (h *SQLCSVMock) Connect(_ context.Context, _ backend.DataSourceInstanceSettings, msg json.RawMessage) (*sql.DB, error) {
3636
backend.Logger.Debug("connecting to mock data")
3737
folder := h.folder
3838
if folder == "" {

0 commit comments

Comments
 (0)