(cherry picked from commit 66220758b3)
This commit is contained in:
@@ -210,6 +210,16 @@ describe('migration', () => {
|
||||
expect(query.dimensionFilters).toBe('');
|
||||
});
|
||||
});
|
||||
|
||||
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).toBe('');
|
||||
});
|
||||
});
|
||||
|
||||
describe('and filter param is defined by user', () => {
|
||||
it('should use the user defined filter', () => {
|
||||
const query = migrateVariableQuery(
|
||||
@@ -223,14 +233,35 @@ describe('migration', () => {
|
||||
expect(query.dimensionFilters).toBe('{"InstanceId":"$instance_id"}');
|
||||
});
|
||||
});
|
||||
describe('when resource_arns query is used', () => {
|
||||
it('should parse the query', () => {
|
||||
const query = migrateVariableQuery('resource_arns(us-east-1,rds:db,{"environment":["$environment"]})');
|
||||
expect(query.queryType).toBe(VariableQueryType.ResourceArns);
|
||||
expect(query.region).toBe('us-east-1');
|
||||
expect(query.resourceType).toBe('rds:db');
|
||||
expect(query.tags).toBe('{"environment":["$environment"]}');
|
||||
});
|
||||
});
|
||||
|
||||
describe('when resource_arns query is used', () => {
|
||||
it('should parse the query', () => {
|
||||
const query = migrateVariableQuery('resource_arns(us-east-1,rds:db,{"environment":["$environment"]})');
|
||||
expect(query.queryType).toBe(VariableQueryType.ResourceArns);
|
||||
expect(query.region).toBe('us-east-1');
|
||||
expect(query.resourceType).toBe('rds:db');
|
||||
expect(query.tags).toBe('{"environment":["$environment"]}');
|
||||
});
|
||||
|
||||
it('should parse a empty array for tags', () => {
|
||||
const query = migrateVariableQuery('resource_arns(us-east-1,rds:db, [])');
|
||||
expect(query.tags).toBe('');
|
||||
});
|
||||
});
|
||||
|
||||
describe('when ec2_instance_attribute query is used', () => {
|
||||
it('should parse the query', () => {
|
||||
const query = migrateVariableQuery('ec2_instance_attribute(us-east-1,rds:db,{"environment":["$environment"]})');
|
||||
expect(query.queryType).toBe(VariableQueryType.EC2InstanceAttributes);
|
||||
expect(query.region).toBe('us-east-1');
|
||||
expect(query.attributeName).toBe('rds:db');
|
||||
expect(query.ec2Filters).toBe('{"environment":["$environment"]}');
|
||||
});
|
||||
|
||||
it('should parse an empty array for filters', () => {
|
||||
const query = migrateVariableQuery('ec2_instance_attribute(us-east-1,rds:db,[])');
|
||||
expect(query.ec2Filters).toBe('');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -124,6 +124,9 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery): Variable
|
||||
newQuery.metricName = dimensionValuesQuery[3];
|
||||
newQuery.dimensionKey = dimensionValuesQuery[4];
|
||||
newQuery.dimensionFilters = dimensionValuesQuery[6] || '';
|
||||
if (newQuery.dimensionFilters === '[]') {
|
||||
newQuery.dimensionFilters = '';
|
||||
}
|
||||
return newQuery;
|
||||
}
|
||||
|
||||
@@ -141,6 +144,9 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery): Variable
|
||||
newQuery.region = ec2InstanceAttributeQuery[1];
|
||||
newQuery.attributeName = ec2InstanceAttributeQuery[2];
|
||||
newQuery.ec2Filters = ec2InstanceAttributeQuery[3] || '';
|
||||
if (newQuery.ec2Filters === '[]') {
|
||||
newQuery.ec2Filters = '';
|
||||
}
|
||||
return newQuery;
|
||||
}
|
||||
|
||||
@@ -150,6 +156,9 @@ export function migrateVariableQuery(rawQuery: string | VariableQuery): Variable
|
||||
newQuery.region = resourceARNsQuery[1];
|
||||
newQuery.resourceType = resourceARNsQuery[2];
|
||||
newQuery.tags = resourceARNsQuery[3] || '';
|
||||
if (newQuery.tags === '[]') {
|
||||
newQuery.tags = '';
|
||||
}
|
||||
return newQuery;
|
||||
}
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ describe('variables', () => {
|
||||
expect(getDimensionValues).not.toBeCalled();
|
||||
expect(result).toEqual([]);
|
||||
});
|
||||
|
||||
it('should run if values are set', async () => {
|
||||
const result = await variables.execute(query);
|
||||
expect(getDimensionValues).toBeCalledWith(query.region, query.namespace, query.metricName, query.dimensionKey, {
|
||||
@@ -81,6 +82,18 @@ describe('variables', () => {
|
||||
});
|
||||
expect(result).toEqual([{ text: 'e', value: 'e', expandable: true }]);
|
||||
});
|
||||
|
||||
it('should replace empty array filters with empty object', async () => {
|
||||
const result = await variables.execute({ ...query, dimensionFilters: '[]' });
|
||||
expect(getDimensionValues).toBeCalledWith(
|
||||
query.region,
|
||||
query.namespace,
|
||||
query.metricName,
|
||||
query.dimensionKey,
|
||||
{}
|
||||
);
|
||||
expect(result).toEqual([{ text: 'e', value: 'e', expandable: true }]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('EBS volume ids', () => {
|
||||
@@ -129,6 +142,12 @@ describe('variables', () => {
|
||||
expect(getEc2InstanceAttribute).toBeCalledWith(query.region, query.attributeName, { env: ['b'] });
|
||||
expect(result).toEqual([{ text: 'g', value: 'g', expandable: true }]);
|
||||
});
|
||||
|
||||
it('should replace empty array filters with empty object', async () => {
|
||||
const result = await variables.execute({ ...query, ec2Filters: '[]' });
|
||||
expect(getEc2InstanceAttribute).toBeCalledWith(query.region, query.attributeName, {});
|
||||
expect(result).toEqual([{ text: 'g', value: 'g', expandable: true }]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('resource arns', () => {
|
||||
@@ -154,6 +173,12 @@ describe('variables', () => {
|
||||
expect(getResourceARNs).toBeCalledWith(query.region, query.resourceType, { a: ['InstanceId', 'InstanceType'] });
|
||||
expect(result).toEqual([{ text: 'h', value: 'h', expandable: true }]);
|
||||
});
|
||||
|
||||
it('should replace empty array tags with empty object', async () => {
|
||||
const result = await variables.execute({ ...query, tags: '[]' });
|
||||
expect(getResourceARNs).toBeCalledWith(query.region, query.resourceType, {});
|
||||
expect(result).toEqual([{ text: 'h', value: 'h', expandable: true }]);
|
||||
});
|
||||
});
|
||||
|
||||
it('should run statistics', async () => {
|
||||
|
||||
@@ -96,7 +96,7 @@ export class CloudWatchVariableSupport extends CustomVariableSupport<CloudWatchD
|
||||
return [];
|
||||
}
|
||||
var filterJson = {};
|
||||
if (dimensionFilters) {
|
||||
if (dimensionFilters && dimensionFilters !== '[]') {
|
||||
filterJson = JSON.parse(dimensionFilters);
|
||||
}
|
||||
const keys = await this.datasource.getDimensionValues(region, namespace, metricName, dimensionKey, filterJson);
|
||||
@@ -124,7 +124,7 @@ export class CloudWatchVariableSupport extends CustomVariableSupport<CloudWatchD
|
||||
return [];
|
||||
}
|
||||
var filterJson = {};
|
||||
if (ec2Filters) {
|
||||
if (ec2Filters && ec2Filters !== '[]') {
|
||||
filterJson = JSON.parse(this.templateSrv.replace(ec2Filters));
|
||||
}
|
||||
const values = await this.datasource.getEc2InstanceAttribute(region, attributeName, filterJson);
|
||||
@@ -140,7 +140,7 @@ export class CloudWatchVariableSupport extends CustomVariableSupport<CloudWatchD
|
||||
return [];
|
||||
}
|
||||
var tagJson = {};
|
||||
if (tags) {
|
||||
if (tags && tags !== '[]') {
|
||||
tagJson = JSON.parse(this.templateSrv.replace(tags));
|
||||
}
|
||||
const keys = await this.datasource.getResourceARNs(region, resourceType, tagJson);
|
||||
|
||||
Reference in New Issue
Block a user