From 5dd64b97d25b48e7a011e8f612171a2af9dbca3e Mon Sep 17 00:00:00 2001 From: Mitsuhiro Tanda Date: Fri, 18 Sep 2015 20:00:11 +0900 Subject: [PATCH] refactor --- .../datasource/cloudwatch/datasource.js | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/public/app/plugins/datasource/cloudwatch/datasource.js b/public/app/plugins/datasource/cloudwatch/datasource.js index 0a2fdb08b3e..210e80f0575 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.js +++ b/public/app/plugins/datasource/cloudwatch/datasource.js @@ -353,6 +353,30 @@ function (angular, _, dateMath) { 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() { var variables = []; templateSrv.fillVariableValuesForUrl(variables); @@ -440,27 +464,18 @@ function (angular, _, dateMath) { if (ebsVolumeIdsQuery) { region = templateSrv.replace(ebsVolumeIdsQuery[1]); 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; }); - d.resolve(transformSuggestData(volumeIds)); + return transformSuggestData(volumeIds); }); - - return d.promise; } return $q.when([]);