From 9e4656e43fc05b2ffa328940ec3e97b56158483c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 24 Apr 2014 17:52:12 +0200 Subject: [PATCH] New config setting for graphite datasource to control if json render request is POST or GET (Closes #345) --- CHANGELOG.md | 1 + .../services/graphite/graphiteDatasource.js | 20 +++++++++++------- src/config.sample.js | 21 +++++++++++++------ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02f64ca7835..8d96f4dfbdf 100644 --- a/CHANGELOG.md +++ b/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) diff --git a/src/app/services/graphite/graphiteDatasource.js b/src/app/services/graphite/graphiteDatasource.js index 4aa757c4a17..d48fdf7dd12 100644 --- a/src/app/services/graphite/graphiteDatasource.js +++ b/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); diff --git a/src/config.sample.js b/src/config.sample.js index 3673e97c417..511e2bc69e8 100644 --- a/src/config.sample.js +++ b/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://', default: true }, - * data_center_eu: { type: 'graphite', url: 'http://' } - * } + * Multiple graphite servers? Comment out graphiteUrl and replace with something like this: + + datasources: { + data_center_us: { + type: 'graphite', + url: 'http://', + default: true + }, + data_center_eu: { + type: 'graphite', + url: 'http://', + render_method: 'GET' // optional, use this to change render calls from POST to GET + } + }, + */ default_route: '/dashboard/file/default.json',