From 7f9f388293cc1b65b38f4b1e1f0dbcf95ac1d76c Mon Sep 17 00:00:00 2001 From: bergquist Date: Thu, 21 Sep 2017 10:44:25 +0200 Subject: [PATCH] rename executor into tsdbqueryendpoint --- pkg/tsdb/batch.go | 4 ++-- pkg/tsdb/executor.go | 36 ------------------------------- pkg/tsdb/fake_test.go | 2 +- pkg/tsdb/graphite/graphite.go | 6 +++--- pkg/tsdb/influxdb/influxdb.go | 6 +++--- pkg/tsdb/mysql/mysql.go | 6 +++--- pkg/tsdb/opentsdb/opentsdb.go | 6 +++--- pkg/tsdb/prometheus/prometheus.go | 6 +++--- pkg/tsdb/query_endpoint.go | 36 +++++++++++++++++++++++++++++++ pkg/tsdb/testdata/testdata.go | 6 +++--- pkg/tsdb/tsdb_test.go | 2 +- 11 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 pkg/tsdb/executor.go create mode 100644 pkg/tsdb/query_endpoint.go diff --git a/pkg/tsdb/batch.go b/pkg/tsdb/batch.go index 9439d36cd3a..f743911ba64 100644 --- a/pkg/tsdb/batch.go +++ b/pkg/tsdb/batch.go @@ -21,7 +21,7 @@ func newBatch(dsId int64, queries []*Query) *Batch { } func (bg *Batch) process(ctx context.Context, resultChan chan *BatchResult, tsdbQuery *TsdbQuery) { - executor, err := getExecutorFor(bg.Queries[0].DataSource) + executor, err := getTsdbQueryEndpointFor(bg.Queries[0].DataSource) if err != nil { bg.Done = true @@ -36,7 +36,7 @@ func (bg *Batch) process(ctx context.Context, resultChan chan *BatchResult, tsdb return } - res := executor.Execute(ctx, &TsdbQuery{ + res := executor.Query(ctx, &TsdbQuery{ Queries: bg.Queries, TimeRange: tsdbQuery.TimeRange, }) diff --git a/pkg/tsdb/executor.go b/pkg/tsdb/executor.go deleted file mode 100644 index a4beec38a04..00000000000 --- a/pkg/tsdb/executor.go +++ /dev/null @@ -1,36 +0,0 @@ -package tsdb - -import ( - "context" - "fmt" - - "github.com/grafana/grafana/pkg/models" -) - -type Executor interface { - Execute(ctx context.Context, query *TsdbQuery) *BatchResult -} - -var registry map[string]GetExecutorFn - -type GetExecutorFn func(dsInfo *models.DataSource) (Executor, error) - -func init() { - registry = make(map[string]GetExecutorFn) -} - -func getExecutorFor(dsInfo *models.DataSource) (Executor, error) { - if fn, exists := registry[dsInfo.Type]; exists { - executor, err := fn(dsInfo) - if err != nil { - return nil, err - } - - return executor, nil - } - return nil, fmt.Errorf("Could not find executor for data source type: %s", dsInfo.Type) -} - -func RegisterExecutor(pluginId string, fn GetExecutorFn) { - registry[pluginId] = fn -} diff --git a/pkg/tsdb/fake_test.go b/pkg/tsdb/fake_test.go index 0dc039843db..a1ca4d0c659 100644 --- a/pkg/tsdb/fake_test.go +++ b/pkg/tsdb/fake_test.go @@ -20,7 +20,7 @@ func NewFakeExecutor(dsInfo *models.DataSource) (*FakeExecutor, error) { }, nil } -func (e *FakeExecutor) Execute(ctx context.Context, context *TsdbQuery) *BatchResult { +func (e *FakeExecutor) Query(ctx context.Context, context *TsdbQuery) *BatchResult { result := &BatchResult{QueryResults: make(map[string]*QueryResult)} for _, query := range context.Queries { if results, has := e.results[query.RefId]; has { diff --git a/pkg/tsdb/graphite/graphite.go b/pkg/tsdb/graphite/graphite.go index 413d780c0c5..a5f4c770a6b 100644 --- a/pkg/tsdb/graphite/graphite.go +++ b/pkg/tsdb/graphite/graphite.go @@ -25,7 +25,7 @@ type GraphiteExecutor struct { HttpClient *http.Client } -func NewGraphiteExecutor(datasource *models.DataSource) (tsdb.Executor, error) { +func NewGraphiteExecutor(datasource *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { httpClient, err := datasource.GetHttpClient() if err != nil { @@ -44,10 +44,10 @@ var ( func init() { glog = log.New("tsdb.graphite") - tsdb.RegisterExecutor("graphite", NewGraphiteExecutor) + tsdb.RegisterTsdbQueryEndpoint("graphite", NewGraphiteExecutor) } -func (e *GraphiteExecutor) Execute(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *GraphiteExecutor) Query(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{} from := "-" + formatTimeRange(context.TimeRange.From) diff --git a/pkg/tsdb/influxdb/influxdb.go b/pkg/tsdb/influxdb/influxdb.go index 52b2633776e..8799e6de804 100644 --- a/pkg/tsdb/influxdb/influxdb.go +++ b/pkg/tsdb/influxdb/influxdb.go @@ -23,7 +23,7 @@ type InfluxDBExecutor struct { HttpClient *http.Client } -func NewInfluxDBExecutor(datasource *models.DataSource) (tsdb.Executor, error) { +func NewInfluxDBExecutor(datasource *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { httpClient, err := datasource.GetHttpClient() if err != nil { @@ -44,10 +44,10 @@ var ( func init() { glog = log.New("tsdb.influxdb") - tsdb.RegisterExecutor("influxdb", NewInfluxDBExecutor) + tsdb.RegisterTsdbQueryEndpoint("influxdb", NewInfluxDBExecutor) } -func (e *InfluxDBExecutor) Execute(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *InfluxDBExecutor) Query(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{} query, err := e.getQuery(context.Queries, context) diff --git a/pkg/tsdb/mysql/mysql.go b/pkg/tsdb/mysql/mysql.go index bcb34bf8993..f95b5ecdd26 100644 --- a/pkg/tsdb/mysql/mysql.go +++ b/pkg/tsdb/mysql/mysql.go @@ -38,10 +38,10 @@ var engineCache = engineCacheType{ } func init() { - tsdb.RegisterExecutor("mysql", NewMysqlExecutor) + tsdb.RegisterTsdbQueryEndpoint("mysql", NewMysqlExecutor) } -func NewMysqlExecutor(datasource *models.DataSource) (tsdb.Executor, error) { +func NewMysqlExecutor(datasource *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { executor := &MysqlExecutor{ datasource: datasource, log: log.New("tsdb.mysql"), @@ -81,7 +81,7 @@ func (e *MysqlExecutor) initEngine() error { return nil } -func (e *MysqlExecutor) Execute(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *MysqlExecutor) Query(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{ QueryResults: make(map[string]*tsdb.QueryResult), } diff --git a/pkg/tsdb/opentsdb/opentsdb.go b/pkg/tsdb/opentsdb/opentsdb.go index a82ee00c570..7850e0dc115 100644 --- a/pkg/tsdb/opentsdb/opentsdb.go +++ b/pkg/tsdb/opentsdb/opentsdb.go @@ -26,7 +26,7 @@ type OpenTsdbExecutor struct { httpClient *http.Client } -func NewOpenTsdbExecutor(datasource *models.DataSource) (tsdb.Executor, error) { +func NewOpenTsdbExecutor(datasource *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { httpClient, err := datasource.GetHttpClient() if err != nil { @@ -45,10 +45,10 @@ var ( func init() { plog = log.New("tsdb.opentsdb") - tsdb.RegisterExecutor("opentsdb", NewOpenTsdbExecutor) + tsdb.RegisterTsdbQueryEndpoint("opentsdb", NewOpenTsdbExecutor) } -func (e *OpenTsdbExecutor) Execute(ctx context.Context, queryContext *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *OpenTsdbExecutor) Query(ctx context.Context, queryContext *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{} var tsdbQuery OpenTsdbQuery diff --git a/pkg/tsdb/prometheus/prometheus.go b/pkg/tsdb/prometheus/prometheus.go index 85d17433fb0..7ca005f820c 100644 --- a/pkg/tsdb/prometheus/prometheus.go +++ b/pkg/tsdb/prometheus/prometheus.go @@ -39,7 +39,7 @@ func (bat basicAuthTransport) RoundTrip(req *http.Request) (*http.Response, erro return bat.Transport.RoundTrip(req) } -func NewPrometheusExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) { +func NewPrometheusExecutor(dsInfo *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { transport, err := dsInfo.GetHttpTransport() if err != nil { return nil, err @@ -58,7 +58,7 @@ var ( func init() { plog = log.New("tsdb.prometheus") - tsdb.RegisterExecutor("prometheus", NewPrometheusExecutor) + tsdb.RegisterTsdbQueryEndpoint("prometheus", NewPrometheusExecutor) legendFormat = regexp.MustCompile(`\{\{\s*(.+?)\s*\}\}`) } @@ -84,7 +84,7 @@ func (e *PrometheusExecutor) getClient() (apiv1.API, error) { return apiv1.NewAPI(client), nil } -func (e *PrometheusExecutor) Execute(ctx context.Context, queryContext *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *PrometheusExecutor) Query(ctx context.Context, queryContext *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{} client, err := e.getClient() diff --git a/pkg/tsdb/query_endpoint.go b/pkg/tsdb/query_endpoint.go new file mode 100644 index 00000000000..cc336c53316 --- /dev/null +++ b/pkg/tsdb/query_endpoint.go @@ -0,0 +1,36 @@ +package tsdb + +import ( + "context" + "fmt" + + "github.com/grafana/grafana/pkg/models" +) + +type TsdbQueryEndpoint interface { + Query(ctx context.Context, query *TsdbQuery) *BatchResult +} + +var registry map[string]GetTsdbQueryEndpointFn + +type GetTsdbQueryEndpointFn func(dsInfo *models.DataSource) (TsdbQueryEndpoint, error) + +func init() { + registry = make(map[string]GetTsdbQueryEndpointFn) +} + +func getTsdbQueryEndpointFor(dsInfo *models.DataSource) (TsdbQueryEndpoint, error) { + if fn, exists := registry[dsInfo.Type]; exists { + executor, err := fn(dsInfo) + if err != nil { + return nil, err + } + + return executor, nil + } + return nil, fmt.Errorf("Could not find executor for data source type: %s", dsInfo.Type) +} + +func RegisterTsdbQueryEndpoint(pluginId string, fn GetTsdbQueryEndpointFn) { + registry[pluginId] = fn +} diff --git a/pkg/tsdb/testdata/testdata.go b/pkg/tsdb/testdata/testdata.go index 596510677ae..2b4046b85ba 100644 --- a/pkg/tsdb/testdata/testdata.go +++ b/pkg/tsdb/testdata/testdata.go @@ -13,7 +13,7 @@ type TestDataExecutor struct { log log.Logger } -func NewTestDataExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) { +func NewTestDataExecutor(dsInfo *models.DataSource) (tsdb.TsdbQueryEndpoint, error) { return &TestDataExecutor{ DataSource: dsInfo, log: log.New("tsdb.testdata"), @@ -21,10 +21,10 @@ func NewTestDataExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) { } func init() { - tsdb.RegisterExecutor("grafana-testdata-datasource", NewTestDataExecutor) + tsdb.RegisterTsdbQueryEndpoint("grafana-testdata-datasource", NewTestDataExecutor) } -func (e *TestDataExecutor) Execute(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { +func (e *TestDataExecutor) Query(ctx context.Context, context *tsdb.TsdbQuery) *tsdb.BatchResult { result := &tsdb.BatchResult{} result.QueryResults = make(map[string]*tsdb.QueryResult) diff --git a/pkg/tsdb/tsdb_test.go b/pkg/tsdb/tsdb_test.go index 668068c407c..bb86caa4b2f 100644 --- a/pkg/tsdb/tsdb_test.go +++ b/pkg/tsdb/tsdb_test.go @@ -169,7 +169,7 @@ func TestMetricQuery(t *testing.T) { func registerFakeExecutor() *FakeExecutor { executor, _ := NewFakeExecutor(nil) - RegisterExecutor("test", func(dsInfo *models.DataSource) (Executor, error) { + RegisterTsdbQueryEndpoint("test", func(dsInfo *models.DataSource) (TsdbQueryEndpoint, error) { return executor, nil })