Просмотр исходного кода

New config setting for graphite datasource to control if json render request is POST or GET (Closes #345)

Torkel Ödegaard 11 лет назад
Родитель
Сommit
9e4656e43f
3 измененных файлов с 28 добавлено и 14 удалено
  1. 1 0
      CHANGELOG.md
  2. 12 8
      src/app/services/graphite/graphiteDatasource.js
  3. 15 6
      src/config.sample.js

+ 1 - 0
CHANGELOG.md

@@ -4,6 +4,7 @@
   for very short absolute ranges (Issue #320)
 - Increased resolution for graphite datapoints (maxDataPoints), now equal to panel pixel width. (Closes #5)
 - Improvement to influxdb query editor, can now add where clause and alias (Issue #331, thanks @mavimo)
+- New config setting for graphite datasource to control if json render request is POST or GET (Issue #345)
 
 # 1.5.3 (2014-04-17)
 - Add support for async scripted dashboards (Issue #274)

+ 12 - 8
src/app/services/graphite/graphiteDatasource.js

@@ -19,6 +19,7 @@ function (angular, _, $, config, kbn, moment) {
       this.url = datasource.url;
       this.editorSrc = 'app/partials/graphite/editor.html';
       this.name = datasource.name;
+      this.render_method = datasource.render_method || 'POST';
     }
 
     GraphiteDatasource.prototype.query = function(options) {
@@ -37,14 +38,17 @@ function (angular, _, $, config, kbn, moment) {
           return $q.when(this.url + '/render' + '?' + params.join('&'));
         }
 
-        return this.doGraphiteRequest({
-          method: 'POST',
-          url: '/render',
-          data: params.join('&'),
-          headers: {
-            'Content-Type': 'application/x-www-form-urlencoded',
-          }
-        });
+        var httpOptions = { method: this.render_method, url: '/render' };
+
+        if (httpOptions.method === 'GET') {
+          httpOptions.url = httpOptions.url + '?' + params.join('&');
+        }
+        else {
+          httpOptions.data = params.join('&');
+          httpOptions.headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
+        }
+
+        return this.doGraphiteRequest(httpOptions);
       }
       catch(err) {
         return $q.reject(err);

+ 15 - 6
src/config.sample.js

@@ -25,12 +25,21 @@ function (Settings) {
     graphiteUrl: "http://"+window.location.hostname+":8080",
 
     /**
-     * Multiple graphite servers? Comment out graphiteUrl and replace with
-     *
-     *  datasources: {
-     *    data_center_us: { type: 'graphite',  url: 'http://<graphite_url>',  default: true },
-     *    data_center_eu: { type: 'graphite',  url: 'http://<graphite_url>' }
-     *  }
+     * Multiple graphite servers? Comment out graphiteUrl and replace with something like this:
+
+      datasources: {
+        data_center_us: {
+          type: 'graphite',
+          url: 'http://<graphite_url>',
+          default: true
+        },
+        data_center_eu: {
+          type: 'graphite',
+          url: 'http://<graphite_url>',
+          render_method: 'GET' // optional, use this to change render calls from POST to GET
+        }
+      },
+
      */
 
     default_route: '/dashboard/file/default.json',