mirror of
https://github.com/grafana/grafana.git
synced 2024-11-25 10:20:29 -06:00
CloudWatch: decouple from ngalert/models and query packages (#81210)
This commit is contained in:
parent
da6614bf56
commit
5772662cee
@ -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.
|
||||
|
@ -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{
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user