CloudWatch: migrate old variable queries with empty array (#49197)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user