mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -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-plugin-sdk-go/backend/resource/httpadapter"
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"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/setting"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/clients"
|
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/clients"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/kinds/dataquery"
|
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/kinds/dataquery"
|
||||||
@ -32,7 +30,15 @@ import (
|
|||||||
"github.com/patrickmn/go-cache"
|
"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 {
|
type DataQueryJson struct {
|
||||||
dataquery.CloudWatchAnnotationQuery
|
dataquery.CloudWatchAnnotationQuery
|
||||||
@ -168,8 +174,8 @@ func (e *cloudWatchExecutor) QueryData(ctx context.Context, req *backend.QueryDa
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, fromAlert := req.Headers[ngalertmodels.FromAlertHeaderName]
|
_, fromAlert := req.Headers[headerFromAlert]
|
||||||
fromExpression := req.GetHTTPHeader(query.HeaderFromExpression) != ""
|
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.
|
// 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
|
// 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.
|
// 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/backend/instancemgmt"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"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/models"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/utils"
|
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/utils"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -46,7 +44,7 @@ func Test_executeSyncLogQuery(t *testing.T) {
|
|||||||
executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures())
|
executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
_, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
_, 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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
Queries: []backend.DataQuery{
|
||||||
{
|
{
|
||||||
@ -72,7 +70,7 @@ func Test_executeSyncLogQuery(t *testing.T) {
|
|||||||
|
|
||||||
executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures())
|
executor := newExecutor(im, newTestConfig(), &sess, featuremgmt.WithFeatures())
|
||||||
_, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
_, 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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
Queries: []backend.DataQuery{
|
||||||
{
|
{
|
||||||
@ -97,12 +95,12 @@ func Test_executeSyncLogQuery(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
"alert header",
|
"alert header",
|
||||||
map[string]string{ngalertmodels.FromAlertHeaderName: "some value"},
|
map[string]string{headerFromAlert: "some value"},
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expression header",
|
"expression header",
|
||||||
map[string]string{fmt.Sprintf("http_%s", query.HeaderFromExpression): "some value"},
|
map[string]string{fmt.Sprintf("http_%s", headerFromExpression): "some value"},
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -212,7 +210,7 @@ func Test_executeSyncLogQuery_handles_RefId_from_input_queries(t *testing.T) {
|
|||||||
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
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())
|
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
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())
|
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
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())
|
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
_, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
_, 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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
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())
|
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||||
|
|
||||||
res, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
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{}},
|
PluginContext: backend.PluginContext{DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{}},
|
||||||
Queries: []backend.DataQuery{
|
Queries: []backend.DataQuery{
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user