From ae4bcdd54b63ddbd79e6031eab64e5bc4474d9f8 Mon Sep 17 00:00:00 2001
From: Mitsuhiro Tanda <mitsuhiro.tanda@gmail.com>
Date: Sun, 12 Nov 2017 00:41:14 +0900
Subject: [PATCH] fix query inspector for cloudwatch

---
 .../plugins/datasource/cloudwatch/datasource.js    | 12 ++++++------
 .../cloudwatch/specs/datasource_specs.ts           | 14 +++++---------
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/public/app/plugins/datasource/cloudwatch/datasource.js b/public/app/plugins/datasource/cloudwatch/datasource.js
index d21bcf6413c..23662cddb93 100644
--- a/public/app/plugins/datasource/cloudwatch/datasource.js
+++ b/public/app/plugins/datasource/cloudwatch/datasource.js
@@ -113,7 +113,7 @@ function (angular, _, moment, dateMath, kbn, templatingVariable) {
     };
 
     this.performTimeSeriesQuery = function(request) {
-      return backendSrv.post('/api/tsdb/query', request).then(function (res) {
+      return this.awsRequest('/api/tsdb/query', request).then(function (res) {
         var data = [];
 
         if (res.results) {
@@ -139,7 +139,7 @@ function (angular, _, moment, dateMath, kbn, templatingVariable) {
 
     this.doMetricQueryRequest = function (subtype, parameters) {
       var range = timeSrv.timeRange();
-      return backendSrv.post('/api/tsdb/query', {
+      return this.awsRequest('/api/tsdb/query', {
         from: range.from.valueOf().toString(),
         to: range.to.valueOf().toString(),
         queries: [
@@ -277,7 +277,7 @@ function (angular, _, moment, dateMath, kbn, templatingVariable) {
         alarmNamePrefix: annotation.alarmNamePrefix || ''
       };
 
-      return backendSrv.post('/api/tsdb/query', {
+      return this.awsRequest('/api/tsdb/query', {
         from: options.range.from.valueOf().toString(),
         to: options.range.to.valueOf().toString(),
         queries: [
@@ -325,15 +325,15 @@ function (angular, _, moment, dateMath, kbn, templatingVariable) {
       });
     };
 
-    this.awsRequest = function(data) {
+    this.awsRequest = function(url, data) {
       var options = {
         method: 'POST',
-        url: this.proxyUrl,
+        url: url,
         data: data
       };
 
       return backendSrv.datasourceRequest(options).then(function(result) {
-        return result.data;
+        return result;
       });
     };
 
diff --git a/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts b/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts
index 02312148b6a..5d6d9ee5f51 100644
--- a/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts
+++ b/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts
@@ -66,8 +66,8 @@ describe('CloudWatchDatasource', function() {
     };
 
     beforeEach(function() {
-      ctx.backendSrv.post = function(path, params) {
-        requestParams = params;
+      ctx.backendSrv.datasourceRequest = function(params) {
+        requestParams = params.data;
         return ctx.$q.when(response);
       };
     });
@@ -211,8 +211,8 @@ describe('CloudWatchDatasource', function() {
     };
 
     beforeEach(function() {
-      ctx.backendSrv.post = function(path, params) {
-        requestParams = params;
+      ctx.backendSrv.datasourceRequest = function(params) {
+        requestParams = params.data;
         return ctx.$q.when(response);
       };
     });
@@ -234,11 +234,7 @@ describe('CloudWatchDatasource', function() {
         beforeEach(() => {
           setupCallback();
           ctx.backendSrv.datasourceRequest = args => {
-            scenario.request = args;
-            return ctx.$q.when({ data: scenario.requestResponse });
-          };
-          ctx.backendSrv.post = (path, args) => {
-            scenario.request = args;
+            scenario.request = args.data;
             return ctx.$q.when(scenario.requestResponse);
           };
           ctx.ds.metricFindQuery(query).then(args => {