From deedd166dbfe90b960005e110746fd98cb3834e8 Mon Sep 17 00:00:00 2001 From: Mitsuhiro Tanda Date: Tue, 11 Aug 2015 00:09:25 +0900 Subject: [PATCH] add metricFindQuery --- .../datasource/cloudwatch/datasource.js | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/public/app/plugins/datasource/cloudwatch/datasource.js b/public/app/plugins/datasource/cloudwatch/datasource.js index 9b3edd88995..92a13893127 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.js +++ b/public/app/plugins/datasource/cloudwatch/datasource.js @@ -315,6 +315,61 @@ function (angular, _, kbn) { return d.promise; }; + CloudWatchDatasource.prototype.metricFindQuery = function(query) { + var region; + var namespace; + var metricName; + var dimensions; + + var transformSuggestData = function(suggestData) { + return _.map(suggestData, function(v) { + return { text: v }; + }); + }; + + var d = $q.defer(); + + var regionQuery = query.match(/^region\(\)/); + if (regionQuery) { + d.resolve(transformSuggestData(this.performSuggestRegion())); + return d.promise; + } + + var namespaceQuery = query.match(/^namespace\(\)/); + if (namespaceQuery) { + d.resolve(transformSuggestData(this.performSuggestNamespace())); + return d.promise; + } + + var metricNameQuery = query.match(/^metrics\(([^\)]+?)\)/); + if (metricNameQuery) { + namespace = metricNameQuery[1]; + d.resolve(transformSuggestData(this.performSuggestMetrics(namespace))); + return d.promise; + } + + var dimensionKeysQuery = query.match(/^dimension_keys\(([^\)]+?)\)/); + if (dimensionKeysQuery) { + namespace = dimensionKeysQuery[1]; + d.resolve(transformSuggestData(this.performSuggestDimensionKeys(namespace))); + return d.promise; + } + + var dimensionValuesQuery = query.match(/^dimension_values\(([^,]+?),\s?([^,]+?),\s?([^,]+?),\s?([^,]+?)\)/); + if (dimensionValuesQuery) { + region = dimensionValuesQuery[1]; + namespace = dimensionValuesQuery[2]; + metricName = dimensionValuesQuery[3]; + dimensions = {}; + var targetDimensionKey = dimensionValuesQuery[4]; + + return this.performSuggestDimensionValues(region, namespace, metricName, dimensions, targetDimensionKey) + .then(transformSuggestData); + } + + return $q.when([]); + }; + CloudWatchDatasource.prototype.testDatasource = function() { /* use billing metrics for test */ var region = 'us-east-1';