Cloudwatch: Remove cloudWatchWildCardDimensionValues feature toggle (#84329)

This commit is contained in:
Isabella Siu
2024-03-15 09:49:53 -04:00
committed by GitHub
parent 06723b9647
commit a0b68deae4
11 changed files with 18 additions and 39 deletions
+2 -3
View File
@@ -7,9 +7,8 @@ import (
)
const (
FlagCloudWatchCrossAccountQuerying = "cloudWatchCrossAccountQuerying"
FlagCloudWatchWildCardDimensionValues = "cloudWatchWildCardDimensionValues"
FlagCloudWatchBatchQueries = "cloudWatchBatchQueries"
FlagCloudWatchCrossAccountQuerying = "cloudWatchCrossAccountQuerying"
FlagCloudWatchBatchQueries = "cloudWatchBatchQueries"
)
func IsEnabled(ctx context.Context, feature string) bool {
@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/clients"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models/resources"
@@ -13,7 +12,7 @@ import (
)
// getDimensionValues gets the actual dimension values for dimensions with a wildcard
func (e *cloudWatchExecutor) getDimensionValuesForWildcards(ctx context.Context, pluginCtx backend.PluginContext, region string,
func (e *cloudWatchExecutor) getDimensionValuesForWildcards(ctx context.Context, region string,
client models.CloudWatchMetricsAPIProvider, origQueries []*models.CloudWatchQuery, tagValueCache *cache.Cache, listMetricsPageLimit int) ([]*models.CloudWatchQuery, error) {
metricsClient := clients.NewMetricsClient(client, listMetricsPageLimit)
service := services.NewListMetricsService(metricsClient)
@@ -3,10 +3,8 @@ package cloudwatch
import (
"context"
"testing"
"time"
"github.com/aws/aws-sdk-go/service/cloudwatch"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/mocks"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models"
@@ -18,16 +16,13 @@ import (
func TestGetDimensionValuesForWildcards(t *testing.T) {
executor := &cloudWatchExecutor{im: defaultTestInstanceManager(), logger: log.NewNullLogger()}
ctx := context.Background()
pluginCtx := backend.PluginContext{
DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{ID: 1, Updated: time.Now()},
}
tagValueCache := cache.New(0, 0)
t.Run("Should not change non-wildcard dimension value", func(t *testing.T) {
query := getBaseQuery()
query.MetricName = "Test_MetricName1"
query.Dimensions = map[string][]string{"Test_DimensionName1": {"Value1"}}
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
assert.NotNil(t, queries[0].Dimensions["Test_DimensionName1"], 1)
@@ -38,7 +33,7 @@ func TestGetDimensionValuesForWildcards(t *testing.T) {
query := getBaseQuery()
query.MetricName = "Test_MetricName1"
query.Dimensions = map[string][]string{"Test_DimensionName1": {"*"}}
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
assert.NotNil(t, queries[0].Dimensions["Test_DimensionName1"])
@@ -57,7 +52,7 @@ func TestGetDimensionValuesForWildcards(t *testing.T) {
{MetricName: utils.Pointer("Test_MetricName4"), Dimensions: []*cloudwatch.Dimension{{Name: utils.Pointer("Test_DimensionName1"), Value: utils.Pointer("Value2")}}},
}}
api.On("ListMetricsPagesWithContext").Return(nil)
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
assert.Equal(t, map[string][]string{"Test_DimensionName1": {"Value1", "Value2", "Value3", "Value4"}}, queries[0].Dimensions)
@@ -73,13 +68,13 @@ func TestGetDimensionValuesForWildcards(t *testing.T) {
{MetricName: utils.Pointer("Test_MetricName"), Dimensions: []*cloudwatch.Dimension{{Name: utils.Pointer("Test_DimensionName"), Value: utils.Pointer("Value")}}},
}}
api.On("ListMetricsPagesWithContext").Return(nil)
_, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
_, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
// make sure the original query wasn't altered
assert.Equal(t, map[string][]string{"Test_DimensionName": {"*"}}, query.Dimensions)
//setting the api to nil confirms that it's using the cached value
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", nil, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
assert.Equal(t, map[string][]string{"Test_DimensionName": {"Value"}}, queries[0].Dimensions)
@@ -93,7 +88,7 @@ func TestGetDimensionValuesForWildcards(t *testing.T) {
query.MatchExact = false
api := &mocks.MetricsAPI{Metrics: []*cloudwatch.Metric{}}
api.On("ListMetricsPagesWithContext").Return(nil)
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err := executor.getDimensionValuesForWildcards(ctx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
// assert that the values was set to an empty array
@@ -104,7 +99,7 @@ func TestGetDimensionValuesForWildcards(t *testing.T) {
{MetricName: utils.Pointer("Test_MetricName"), Dimensions: []*cloudwatch.Dimension{{Name: utils.Pointer("Test_DimensionName2"), Value: utils.Pointer("Value")}}},
}
api.On("ListMetricsPagesWithContext").Return(nil)
queries, err = executor.getDimensionValuesForWildcards(ctx, pluginCtx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
queries, err = executor.getDimensionValuesForWildcards(ctx, "us-east-1", api, []*models.CloudWatchQuery{query}, tagValueCache, 50)
assert.Nil(t, err)
assert.Len(t, queries, 1)
assert.Equal(t, map[string][]string{"Test_DimensionName2": {"Value"}}, queries[0].Dimensions)
+3 -1
View File
@@ -21,6 +21,7 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
"github.com/grafana/grafana-plugin-sdk-go/experimental/featuretoggles"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/models"
"github.com/patrickmn/go-cache"
"github.com/stretchr/testify/mock"
)
@@ -210,7 +211,8 @@ func testInstanceManager(pageLimit int) instancemgmt.InstanceManager {
},
GrafanaSettings: awsds.AuthSettings{ListMetricsPageLimit: pageLimit},
},
sessions: &fakeSessionCache{}}, nil
sessions: &fakeSessionCache{},
tagValueCache: cache.New(0, 0)}, nil
}))
}
+3 -5
View File
@@ -96,11 +96,9 @@ func (e *cloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, req *ba
return err
}
if features.IsEnabled(ctx, features.FlagCloudWatchWildCardDimensionValues) {
requestQueries, err = e.getDimensionValuesForWildcards(ctx, req.PluginContext, region, client, requestQueries, instance.tagValueCache, instance.Settings.GrafanaSettings.ListMetricsPageLimit)
if err != nil {
return err
}
requestQueries, err = e.getDimensionValuesForWildcards(ctx, region, client, requestQueries, instance.tagValueCache, instance.Settings.GrafanaSettings.ListMetricsPageLimit)
if err != nil {
return err
}
res, err := e.parseResponse(startTime, endTime, mdo, requestQueries)