|
|
@@ -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';
|