mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CloudWatch: migrate variable query dimension filter (#48562)
* CloudWatch: migrate variable query dimension filter * separate tests
This commit is contained in:
parent
5c32a6b6f6
commit
ce1b1bc36b
@ -71,26 +71,56 @@ describe('variableQueryMigrations', () => {
|
||||
});
|
||||
});
|
||||
describe('when OldVariableQuery is used', () => {
|
||||
it('should parse the query', () => {
|
||||
const baseOldQuery: OldVariableQuery = {
|
||||
queryType: VariableQueryType.Regions,
|
||||
namespace: '',
|
||||
region: 'us-east-1',
|
||||
metricName: '',
|
||||
dimensionKey: '',
|
||||
dimensionFilters: '',
|
||||
ec2Filters: '',
|
||||
instanceID: '',
|
||||
attributeName: '',
|
||||
resourceType: '',
|
||||
tags: '',
|
||||
refId: '',
|
||||
};
|
||||
it('should parse ec2 query', () => {
|
||||
const oldQuery: OldVariableQuery = {
|
||||
...baseOldQuery,
|
||||
queryType: VariableQueryType.EC2InstanceAttributes,
|
||||
namespace: '',
|
||||
region: 'us-east-1',
|
||||
metricName: '',
|
||||
dimensionKey: '',
|
||||
ec2Filters: '{"environment":["$environment"]}',
|
||||
instanceID: '',
|
||||
attributeName: 'rds:db',
|
||||
resourceType: 'elasticloadbalancing:loadbalancer',
|
||||
tags: '{"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]}',
|
||||
refId: '',
|
||||
};
|
||||
const query = migrateVariableQuery(oldQuery);
|
||||
expect(query.region).toBe('us-east-1');
|
||||
expect(query.attributeName).toBe('rds:db');
|
||||
expect(query.ec2Filters).toStrictEqual({ environment: ['$environment'] });
|
||||
});
|
||||
it('should parse resource arn query', () => {
|
||||
const oldQuery: OldVariableQuery = {
|
||||
...baseOldQuery,
|
||||
queryType: VariableQueryType.ResourceArns,
|
||||
resourceType: 'elasticloadbalancing:loadbalancer',
|
||||
tags: '{"elasticbeanstalk:environment-name":["myApp-dev","myApp-prod"]}',
|
||||
};
|
||||
const query = migrateVariableQuery(oldQuery);
|
||||
expect(query.region).toBe('us-east-1');
|
||||
expect(query.resourceType).toBe('elasticloadbalancing:loadbalancer');
|
||||
expect(query.tags).toStrictEqual({ 'elasticbeanstalk:environment-name': ['myApp-dev', 'myApp-prod'] });
|
||||
});
|
||||
it('should parse dimension values query', () => {
|
||||
const oldQuery: OldVariableQuery = {
|
||||
...baseOldQuery,
|
||||
queryType: VariableQueryType.DimensionValues,
|
||||
metricName: 'foo',
|
||||
dimensionKey: 'bar',
|
||||
dimensionFilters: '{"InstanceId":"$instanceid"}',
|
||||
};
|
||||
const query = migrateVariableQuery(oldQuery);
|
||||
expect(query.metricName).toBe('foo');
|
||||
expect(query.dimensionKey).toBe('bar');
|
||||
expect(query.dimensionFilters).toStrictEqual({ InstanceId: '$instanceid' });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -13,10 +13,18 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery | OldVaria
|
||||
|
||||
// rawQuery is OldVariableQuery
|
||||
if (typeof rawQuery !== 'string') {
|
||||
const newQuery: VariableQuery = omit(rawQuery, ['ec2Filters', 'tags']);
|
||||
const newQuery: VariableQuery = omit(rawQuery, ['dimensionFilters', 'ec2Filters', 'tags']);
|
||||
newQuery.dimensionFilters = {};
|
||||
newQuery.ec2Filters = {};
|
||||
newQuery.tags = {};
|
||||
|
||||
if (rawQuery.dimensionFilters !== '') {
|
||||
try {
|
||||
newQuery.dimensionFilters = JSON.parse(rawQuery.dimensionFilters);
|
||||
} catch {
|
||||
throw new Error(`unable to migrate poorly formed filters: ${rawQuery.dimensionFilters}`);
|
||||
}
|
||||
}
|
||||
if (rawQuery.ec2Filters !== '') {
|
||||
try {
|
||||
newQuery.ec2Filters = JSON.parse(rawQuery.ec2Filters);
|
||||
|
@ -384,7 +384,7 @@ export interface OldVariableQuery extends DataQuery {
|
||||
region: string;
|
||||
metricName: string;
|
||||
dimensionKey: string;
|
||||
dimensionFilters?: Dimensions;
|
||||
dimensionFilters: string;
|
||||
ec2Filters: string;
|
||||
instanceID: string;
|
||||
attributeName: string;
|
||||
|
Loading…
Reference in New Issue
Block a user