Merge pull request #4335 from mtanda/cloudwatch_tag_query
(cloudwatch) support tag query
This commit is contained in:
@@ -64,9 +64,19 @@ Name | Description
|
||||
`metrics(namespace)` | Returns a list of metrics in the namespace.
|
||||
`dimension_keys(namespace)` | Returns a list of dimension keys in the namespace.
|
||||
`dimension_values(region, namespace, metric, dimension_key)` | Returns a list of dimension values matching the specified `region`, `namespace`, `metric` and `dimension_key`.
|
||||
`ebs_volume_ids(region, instance_id)` | Returns a list of volume id matching the specified `region`, `instance_id`.
|
||||
`ec2_instance_attribute(region, attribute_name, filters)` | Returns a list of attribute matching the specified `region`, `attribute_name`, `filters`.
|
||||
|
||||
For details about the metrics CloudWatch provides, please refer to the [CloudWatch documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html).
|
||||
|
||||
The `ec2_instance_attribute` query take `filters` in JSON format.
|
||||
You can specify [pre-defined filters of ec2:DescribeInstances](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).
|
||||
Specify like `{ filter_name1: [ filter_value1 ], filter_name2: [ filter_value2 ] }`
|
||||
|
||||
Example `ec2_instance_attribute()` query
|
||||
|
||||
ec2_instance_attribute(us-east-1, InstanceId, { "tag:Environment": [ "production" ] })
|
||||
|
||||

|
||||
|
||||
## Cost
|
||||
|
||||
@@ -143,7 +143,7 @@ function (angular, _, moment, dateMath, CloudWatchAnnotationQuery) {
|
||||
return this.awsRequest({
|
||||
region: region,
|
||||
action: 'DescribeInstances',
|
||||
parameters: { filter: filters, instanceIds: instanceIds }
|
||||
parameters: { filters: filters, instanceIds: instanceIds }
|
||||
});
|
||||
};
|
||||
|
||||
@@ -205,6 +205,28 @@ function (angular, _, moment, dateMath, CloudWatchAnnotationQuery) {
|
||||
});
|
||||
}
|
||||
|
||||
var ec2InstanceAttributeQuery = query.match(/^ec2_instance_attribute\(([^,]+?),\s?([^,]+?),\s?(.+?)\)/);
|
||||
if (ec2InstanceAttributeQuery) {
|
||||
region = templateSrv.replace(ec2InstanceAttributeQuery[1]);
|
||||
var filterJson = JSON.parse(templateSrv.replace(ec2InstanceAttributeQuery[3]));
|
||||
var filters = _.map(filterJson, function(values, name) {
|
||||
return {
|
||||
Name: name,
|
||||
Values: values
|
||||
};
|
||||
});
|
||||
var targetAttributeName = templateSrv.replace(ec2InstanceAttributeQuery[2]);
|
||||
|
||||
return this.performEC2DescribeInstances(region, filters, null).then(function(result) {
|
||||
var attributes = _.chain(result.Reservations)
|
||||
.map(function(reservations) {
|
||||
return _.pluck(reservations.Instances, targetAttributeName);
|
||||
})
|
||||
.flatten().value();
|
||||
return transformSuggestData(attributes);
|
||||
});
|
||||
}
|
||||
|
||||
return $q.when([]);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user