mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CloudWatch: Refactor "getDimensionValuesForWildcards" (#83335)
This commit is contained in:
parent
6097ce5b61
commit
bdeff84068
@ -14,13 +14,8 @@ import (
|
||||
|
||||
// getDimensionValues gets the actual dimension values for dimensions with a wildcard
|
||||
func (e *cloudWatchExecutor) getDimensionValuesForWildcards(ctx context.Context, pluginCtx backend.PluginContext, region string,
|
||||
client models.CloudWatchMetricsAPIProvider, origQueries []*models.CloudWatchQuery, tagValueCache *cache.Cache) ([]*models.CloudWatchQuery, error) {
|
||||
instance, err := e.getInstance(ctx, pluginCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
metricsClient := clients.NewMetricsClient(client, instance.Settings.GrafanaSettings.ListMetricsPageLimit)
|
||||
client models.CloudWatchMetricsAPIProvider, origQueries []*models.CloudWatchQuery, tagValueCache *cache.Cache, listMetricsPageLimit int) ([]*models.CloudWatchQuery, error) {
|
||||
metricsClient := clients.NewMetricsClient(client, listMetricsPageLimit)
|
||||
service := services.NewListMetricsService(metricsClient)
|
||||
// create copies of the original query. All the fields besides Dimensions are primitives
|
||||
queries := copyQueries(origQueries)
|
||||
|
@ -27,7 +27,7 @@ func TestGetDimensionValuesForWildcards(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)
|
||||
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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 +38,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)
|
||||
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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 +57,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)
|
||||
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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 +73,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)
|
||||
_, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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)
|
||||
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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 +93,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)
|
||||
queries, err := executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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 +104,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)
|
||||
queries, err = executor.getDimensionValuesForWildcards(ctx, pluginCtx, "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)
|
||||
|
@ -97,7 +97,7 @@ func (e *cloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, req *ba
|
||||
}
|
||||
|
||||
if features.IsEnabled(ctx, features.FlagCloudWatchWildCardDimensionValues) {
|
||||
requestQueries, err = e.getDimensionValuesForWildcards(ctx, req.PluginContext, region, client, requestQueries, instance.tagValueCache)
|
||||
requestQueries, err = e.getDimensionValuesForWildcards(ctx, req.PluginContext, region, client, requestQueries, instance.tagValueCache, instance.Settings.GrafanaSettings.ListMetricsPageLimit)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user