Mitsuhiro Tanda 10 лет назад
Родитель
Сommit
5dd64b97d2
1 измененных файлов с 31 добавлено и 16 удалено
  1. 31 16
      public/app/plugins/datasource/cloudwatch/datasource.js

+ 31 - 16
public/app/plugins/datasource/cloudwatch/datasource.js

@@ -353,6 +353,30 @@ function (angular, _, dateMath) {
       return d.promise;
       return d.promise;
     };
     };
 
 
+    CloudWatchDatasource.prototype.performEC2DescribeInstances = function(region, filters, instanceIds) {
+      var ec2 = this.getAwsClient(region, 'EC2');
+
+      var params = {};
+      if (filters.length > 0) {
+        params.Filters = filters;
+      }
+      if (instanceIds.length > 0) {
+        params.InstanceIds = instanceIds;
+      }
+
+      var d = $q.defer();
+
+      ec2.describeInstances(params, function(err, data) {
+        if (err) {
+          return d.reject(err);
+        }
+
+        return d.resolve(data);
+      });
+
+      return d.promise;
+    };
+
     CloudWatchDatasource.prototype.getTemplateVariableNames = function() {
     CloudWatchDatasource.prototype.getTemplateVariableNames = function() {
       var variables = [];
       var variables = [];
       templateSrv.fillVariableValuesForUrl(variables);
       templateSrv.fillVariableValuesForUrl(variables);
@@ -440,27 +464,18 @@ function (angular, _, dateMath) {
       if (ebsVolumeIdsQuery) {
       if (ebsVolumeIdsQuery) {
         region = templateSrv.replace(ebsVolumeIdsQuery[1]);
         region = templateSrv.replace(ebsVolumeIdsQuery[1]);
         var instanceId = templateSrv.replace(ebsVolumeIdsQuery[2]);
         var instanceId = templateSrv.replace(ebsVolumeIdsQuery[2]);
+        var instanceIds = [
+          instanceId
+        ];
 
 
-        var ec2 = this.getAwsClient(region, 'EC2');
-
-        var params = {
-          InstanceIds: [
-            instanceId
-          ]
-        };
-        ec2.describeInstances(params, function(err, data) {
-          if (err) {
-            throw err;
-          }
-
-          var volumeIds = _.map(data.Reservations[0].Instances[0].BlockDeviceMappings, function(mapping) {
+        return this.performEC2DescribeInstances(region, [], instanceIds)
+        .then(function(result) {
+          var volumeIds = _.map(result.Reservations[0].Instances[0].BlockDeviceMappings, function(mapping) {
             return mapping.EBS.VolumeID;
             return mapping.EBS.VolumeID;
           });
           });
 
 
-          d.resolve(transformSuggestData(volumeIds));
+          return transformSuggestData(volumeIds);
         });
         });
-
-        return d.promise;
       }
       }
 
 
       return $q.when([]);
       return $q.when([]);