From 8e08128f83568e89f46b8d56bd147ef826d0fb45 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Wed, 2 Mar 2022 10:46:17 +0100 Subject: [PATCH] CloudWatch: List all metrics properly in SQL autocomplete (#45898) * make sure right value is passed for metric * add unit test --- .../datasource/cloudwatch/datasource.test.ts | 20 +++++++++++++++++++ .../datasource/cloudwatch/datasource.ts | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/cloudwatch/datasource.test.ts b/public/app/plugins/datasource/cloudwatch/datasource.test.ts index 840e90ffbad..00eb29f9bb7 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.test.ts +++ b/public/app/plugins/datasource/cloudwatch/datasource.test.ts @@ -249,6 +249,26 @@ describe('datasource', () => { }); }); }); + describe('resource requests', () => { + it('should map resource response to metric response', async () => { + const datasource = setupMockedDataSource().datasource; + datasource.doMetricResourceRequest = jest.fn().mockResolvedValue([ + { + text: 'AWS/EC2', + value: 'CPUUtilization', + }, + { + text: 'AWS/Redshift', + value: 'CPUPercentage', + }, + ]); + const allMetrics = await datasource.getAllMetrics('us-east-2'); + expect(allMetrics[0].metricName).toEqual('CPUUtilization'); + expect(allMetrics[0].namespace).toEqual('AWS/EC2'); + expect(allMetrics[1].metricName).toEqual('CPUPercentage'); + expect(allMetrics[1].namespace).toEqual('AWS/Redshift'); + }); + }); describe('performTimeSeriesQuery', () => { it('should return the same length of data as result', async () => { diff --git a/public/app/plugins/datasource/cloudwatch/datasource.ts b/public/app/plugins/datasource/cloudwatch/datasource.ts index 32f1f374671..4e1c038829e 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.ts +++ b/public/app/plugins/datasource/cloudwatch/datasource.ts @@ -670,7 +670,7 @@ export class CloudWatchDatasource region: this.templateSrv.replace(this.getActualRegion(region)), }); - return values.map((v) => ({ metricName: v.label, namespace: v.text })); + return values.map((v) => ({ metricName: v.value, namespace: v.text })); } async getDimensionKeys(