CloudWatch: migrate old variable queries with empty array (#49197)

This commit is contained in:
Isabella Siu
2022-05-19 10:43:26 -04:00
committed by GitHub
parent e273c9a958
commit 66220758b3
2 changed files with 22 additions and 6 deletions
@@ -35,6 +35,14 @@ describe('variableQueryMigrations', () => {
expect(query.dimensionFilters).toStrictEqual({});
});
});
describe('and filter value is an empty array', () => {
it('should leave an empty filter', () => {
const query = migrateVariableQuery(
'dimension_values(us-east-1,AWS/RDS,CPUUtilization,DBInstanceIdentifier, [])'
);
expect(query.dimensionFilters).toStrictEqual({});
});
});
describe('and filter param is defined by user', () => {
it('should use the user defined filter', () => {
const query = migrateVariableQuery(
@@ -60,6 +68,10 @@ describe('variableQueryMigrations', () => {
expect(query.resourceType).toBe('elasticloadbalancing:loadbalancer');
expect(query.tags).toStrictEqual({ 'elasticbeanstalk:environment-name': ['myApp-dev', 'myApp-prod'] });
});
it('should parse a empty array for tags', () => {
const query = migrateVariableQuery('resource_arns(eu-west-1,elasticloadbalancing:loadbalancer, [])');
expect(query.tags).toStrictEqual({});
});
});
describe('when ec2_instance_attribute query is used', () => {
it('should parse the query', () => {
@@ -69,6 +81,10 @@ describe('variableQueryMigrations', () => {
expect(query.attributeName).toBe('rds:db');
expect(query.ec2Filters).toStrictEqual({ environment: ['$environment'] });
});
it('should parse an empty array for filters', () => {
const query = migrateVariableQuery('ec2_instance_attribute(us-east-1,rds:db,[])');
expect(query.ec2Filters).toStrictEqual({});
});
});
describe('when OldVariableQuery is used', () => {
const baseOldQuery: OldVariableQuery = {
@@ -18,21 +18,21 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery | OldVaria
newQuery.ec2Filters = {};
newQuery.tags = {};
if (rawQuery.dimensionFilters !== '') {
if (rawQuery.dimensionFilters !== '' && rawQuery.ec2Filters !== '[]') {
try {
newQuery.dimensionFilters = JSON.parse(rawQuery.dimensionFilters);
} catch {
throw new Error(`unable to migrate poorly formed filters: ${rawQuery.dimensionFilters}`);
}
}
if (rawQuery.ec2Filters !== '') {
if (rawQuery.ec2Filters !== '' && rawQuery.ec2Filters !== '[]') {
try {
newQuery.ec2Filters = JSON.parse(rawQuery.ec2Filters);
} catch {
throw new Error(`unable to migrate poorly formed filters: ${rawQuery.ec2Filters}`);
}
}
if (rawQuery.tags !== '') {
if (rawQuery.tags !== '' && rawQuery.tags !== '[]') {
try {
newQuery.tags = JSON.parse(rawQuery.tags);
} catch {
@@ -93,7 +93,7 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery | OldVaria
newQuery.metricName = dimensionValuesQuery[3];
newQuery.dimensionKey = dimensionValuesQuery[4];
newQuery.dimensionFilters = {};
if (!!dimensionValuesQuery[6]) {
if (!!dimensionValuesQuery[6] && dimensionValuesQuery[6] !== '[]') {
try {
newQuery.dimensionFilters = JSON.parse(dimensionValuesQuery[6]);
} catch {
@@ -116,7 +116,7 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery | OldVaria
newQuery.queryType = VariableQueryType.EC2InstanceAttributes;
newQuery.region = ec2InstanceAttributeQuery[1];
newQuery.attributeName = ec2InstanceAttributeQuery[2];
if (ec2InstanceAttributeQuery[3]) {
if (ec2InstanceAttributeQuery[3] && ec2InstanceAttributeQuery[3] !== '[]') {
try {
newQuery.ec2Filters = JSON.parse(ec2InstanceAttributeQuery[3]);
} catch {
@@ -131,7 +131,7 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery | OldVaria
newQuery.queryType = VariableQueryType.ResourceArns;
newQuery.region = resourceARNsQuery[1];
newQuery.resourceType = resourceARNsQuery[2];
if (resourceARNsQuery[3]) {
if (resourceARNsQuery[3] && resourceARNsQuery[3] !== '[]') {
try {
newQuery.tags = JSON.parse(resourceARNsQuery[3]);
} catch {