diff --git a/pkg/tsdb/cloudwatch/cloudwatch.go b/pkg/tsdb/cloudwatch/cloudwatch.go index fe704046e5e..96ca1f15f0b 100644 --- a/pkg/tsdb/cloudwatch/cloudwatch.go +++ b/pkg/tsdb/cloudwatch/cloudwatch.go @@ -23,8 +23,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/featuremgmt" - ngalertmodels "github.com/grafana/grafana/pkg/services/ngalert/models" - "github.com/grafana/grafana/pkg/services/query" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/clients" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/kinds/dataquery" @@ -32,7 +30,15 @@ import ( "github.com/patrickmn/go-cache" ) -const tagValueCacheExpiration = time.Hour * 24 +const ( + tagValueCacheExpiration = time.Hour * 24 + + // headerFromExpression is used by datasources to identify expression queries + headerFromExpression = "X-Grafana-From-Expr" + + // headerFromAlert is used by datasources to identify alert queries + headerFromAlert = "FromAlert" +) type DataQueryJson struct { dataquery.CloudWatchAnnotationQuery @@ -168,8 +174,8 @@ func (e *cloudWatchExecutor) QueryData(ctx context.Context, req *backend.QueryDa return nil, err } - _, fromAlert := req.Headers[ngalertmodels.FromAlertHeaderName] - fromExpression := req.GetHTTPHeader(query.HeaderFromExpression) != "" + _, fromAlert := req.Headers[headerFromAlert] + fromExpression := req.GetHTTPHeader(headerFromExpression) != "" // Public dashboard queries execute like alert queries, i.e. they execute on the backend, therefore, we need to handle them synchronously. // Since `model.Type` is set during execution on the frontend by the query runner and isn't saved with the query, we are checking here is // missing the `model.Type` property and if it is a log query in order to determine if it is a public dashboard query. diff --git a/pkg/tsdb/cloudwatch/log_sync_query_test.go b/pkg/tsdb/cloudwatch/log_sync_query_test.go index 9c02267b5d0..5619cb57b6e 100644 --- a/pkg/tsdb/cloudwatch/log_sync_query_test.go +++ b/pkg/tsdb/cloudwatch/log_sync_query_test.go @@ -17,8 +17,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" "github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana/pkg/services/featuremgmt" - ngalertmodels "github.com/grafana/grafana/pkg/services/ngalert/models" - "github.com/grafana/grafana/pkg/services/query" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/models" "github.com/grafana/grafana/pkg/tsdb/cloudwatch/utils" "github.com/stretchr/testify/assert" @@ -46,7 +44,7 @@ func Test_executeSyncLogQuery(t *testing.T) { executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures()) _, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -72,7 +70,7 @@ func Test_executeSyncLogQuery(t *testing.T) { executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures()) _, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -97,12 +95,12 @@ func Test_executeSyncLogQuery(t *testing.T) { }{ { "alert header", - map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + map[string]string{headerFromAlert: "some value"}, true, }, { "expression header", - map[string]string{fmt.Sprintf("http_%s", query.HeaderFromExpression): "some value"}, + map[string]string{fmt.Sprintf("http_%s", headerFromExpression): "some value"}, true, }, { @@ -212,7 +210,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) { executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures()) res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -241,7 +239,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) { executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures()) res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -310,7 +308,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) { executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures()) res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -356,7 +354,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) { executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures()) _, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ { @@ -388,7 +386,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) { executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures()) res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{ - Headers: map[string]string{ngalertmodels.FromAlertHeaderName: "some value"}, + Headers: map[string]string{headerFromAlert: "some value"}, PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}}, Queries: []backend.DataQuery{ {