Pārlūkot izejas kodu

(cloudwatch) add ec2_instance_attribute() query

Mitsuhiro Tanda 9 gadi atpakaļ
vecāks
revīzija
0052e9d136
1 mainītis faili ar 23 papildinājumiem un 1 dzēšanām
  1. 23 1
      public/app/plugins/datasource/cloudwatch/datasource.js

+ 23 - 1
public/app/plugins/datasource/cloudwatch/datasource.js

@@ -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 filter = _.map(filterJson, function(f) {
+          return {
+            Name: f.slice(0, f.indexOf('=')),
+            Values: f.slice(f.indexOf('=') + 1).split(',')
+          };
+        });
+        var targetAttributeName = templateSrv.replace(ec2InstanceAttributeQuery[2]);
+
+        return this.performEC2DescribeInstances(region, filter, 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([]);
     };