diff --git a/grafana/ntopng-datasource/README.md b/grafana/ntopng-datasource/README.md index 9187326517..9ce65b46a3 100644 --- a/grafana/ntopng-datasource/README.md +++ b/grafana/ntopng-datasource/README.md @@ -160,6 +160,10 @@ This plugin requires node 6.10.0 ### Changelog +1.3.4 +- Adds support for With Credentials (sends grafana cookies with request) when using Direct mode +- Fix for the typeahead component for metrics dropdown (/search endpoint). + 1.3.3 - Adds support for basic authentication diff --git a/grafana/ntopng-datasource/dist/README.md b/grafana/ntopng-datasource/dist/README.md index 9187326517..9ce65b46a3 100644 --- a/grafana/ntopng-datasource/dist/README.md +++ b/grafana/ntopng-datasource/dist/README.md @@ -160,6 +160,10 @@ This plugin requires node 6.10.0 ### Changelog +1.3.4 +- Adds support for With Credentials (sends grafana cookies with request) when using Direct mode +- Fix for the typeahead component for metrics dropdown (/search endpoint). + 1.3.3 - Adds support for basic authentication diff --git a/grafana/ntopng-datasource/dist/datasource.js b/grafana/ntopng-datasource/dist/datasource.js index 105d6350c5..b880116720 100644 --- a/grafana/ntopng-datasource/dist/datasource.js +++ b/grafana/ntopng-datasource/dist/datasource.js @@ -44,6 +44,7 @@ System.register(['lodash'], function (_export, _context) { this.q = $q; this.backendSrv = backendSrv; this.templateSrv = templateSrv; + this.withCredentials = instanceSettings.withCredentials; this.headers = { 'Content-Type': 'application/json' }; if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) { this.headers['Authorization'] = instanceSettings.basicAuth; @@ -62,20 +63,18 @@ System.register(['lodash'], function (_export, _context) { return this.q.when({ data: [] }); } - return this.backendSrv.datasourceRequest({ + return this.doRequest({ url: this.url + '/query', data: query, - method: 'POST', - headers: this.headers + method: 'POST' }); } }, { key: 'testDatasource', value: function testDatasource() { - return this.backendSrv.datasourceRequest({ + return this.doRequest({ url: this.url + '/', - method: 'GET', - headers: this.headers + method: 'GET' }).then(function (response) { if (response.status === 200) { return { status: "success", message: "Data source is working", title: "Success" }; @@ -98,10 +97,9 @@ System.register(['lodash'], function (_export, _context) { rangeRaw: options.rangeRaw }; - return this.backendSrv.datasourceRequest({ + return this.doRequest({ url: this.url + '/annotations', method: 'POST', - headers: this.headers, data: annotationQuery }).then(function (result) { return result.data; @@ -109,17 +107,15 @@ System.register(['lodash'], function (_export, _context) { } }, { key: 'metricFindQuery', - value: function metricFindQuery(options) { - var target = typeof options === "string" ? options : options.target; + value: function metricFindQuery(query) { var interpolated = { - target: this.templateSrv.replace(target, null, 'regex') + target: this.templateSrv.replace(query, null, 'regex') }; - return this.backendSrv.datasourceRequest({ + return this.doRequest({ url: this.url + '/search', data: interpolated, - method: 'POST', - headers: this.headers + method: 'POST' }).then(this.mapToTextValue); } }, { @@ -134,6 +130,14 @@ System.register(['lodash'], function (_export, _context) { return { text: d, value: d }; }); } + }, { + key: 'doRequest', + value: function doRequest(options) { + options.withCredentials = this.withCredentials; + options.headers = this.headers; + + return this.backendSrv.datasourceRequest(options); + } }, { key: 'buildQueryParameters', value: function buildQueryParameters(options) { @@ -146,7 +150,7 @@ System.register(['lodash'], function (_export, _context) { var targets = _.map(options.targets, function (target) { return { - target: _this.templateSrv.replace(target.target), + target: _this.templateSrv.replace(target.target, options.scopedVars, 'regex'), refId: target.refId, hide: target.hide, type: target.type || 'timeserie' diff --git a/grafana/ntopng-datasource/dist/datasource.js.map b/grafana/ntopng-datasource/dist/datasource.js.map index a88d65acc2..48e30bc264 100644 --- a/grafana/ntopng-datasource/dist/datasource.js.map +++ b/grafana/ntopng-datasource/dist/datasource.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/datasource.js"],"names":["_","GenericDatasource","instanceSettings","$q","backendSrv","templateSrv","type","url","name","q","headers","basicAuth","length","options","query","buildQueryParameters","targets","filter","t","hide","when","data","datasourceRequest","method","then","response","status","message","title","replace","annotation","annotationQuery","range","datasource","enable","iconColor","rangeRaw","result","target","interpolated","mapToTextValue","map","d","i","text","value","isObject","refId"],"mappings":"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","file":"datasource.js","sourcesContent":["import _ from \"lodash\";\n\nexport class GenericDatasource {\n\n constructor(instanceSettings, $q, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.url = instanceSettings.url;\n this.name = instanceSettings.name;\n this.q = $q;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.headers = {'Content-Type': 'application/json'};\n if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) {\n this.headers['Authorization'] = instanceSettings.basicAuth;\n }\n }\n\n query(options) {\n var query = this.buildQueryParameters(options);\n query.targets = query.targets.filter(t => !t.hide);\n\n if (query.targets.length <= 0) {\n return this.q.when({data: []});\n }\n\n return this.backendSrv.datasourceRequest({\n url: this.url + '/query',\n data: query,\n method: 'POST',\n headers: this.headers\n });\n }\n\n testDatasource() {\n return this.backendSrv.datasourceRequest({\n url: this.url + '/',\n method: 'GET',\n headers: this.headers\n }).then(response => {\n if (response.status === 200) {\n return { status: \"success\", message: \"Data source is working\", title: \"Success\" };\n }\n });\n }\n\n annotationQuery(options) {\n var query = this.templateSrv.replace(options.annotation.query, {}, 'glob');\n var annotationQuery = {\n range: options.range,\n annotation: {\n name: options.annotation.name,\n datasource: options.annotation.datasource,\n enable: options.annotation.enable,\n iconColor: options.annotation.iconColor,\n query: query\n },\n rangeRaw: options.rangeRaw\n };\n\n return this.backendSrv.datasourceRequest({\n url: this.url + '/annotations',\n method: 'POST',\n headers: this.headers,\n data: annotationQuery\n }).then(result => {\n return result.data;\n });\n }\n\n metricFindQuery(options) {\n var target = typeof (options) === \"string\" ? options : options.target;\n var interpolated = {\n target: this.templateSrv.replace(target, null, 'regex')\n };\n\n return this.backendSrv.datasourceRequest({\n url: this.url + '/search',\n data: interpolated,\n method: 'POST',\n headers: this.headers\n }).then(this.mapToTextValue);\n }\n\n mapToTextValue(result) {\n return _.map(result.data, (d, i) => {\n if (d && d.text && d.value) {\n return { text: d.text, value: d.value };\n } else if (_.isObject(d)) {\n return { text: d, value: i};\n }\n return { text: d, value: d };\n });\n }\n\n buildQueryParameters(options) {\n //remove placeholder targets\n options.targets = _.filter(options.targets, target => {\n return target.target !== 'select metric';\n });\n\n var targets = _.map(options.targets, target => {\n return {\n target: this.templateSrv.replace(target.target),\n refId: target.refId,\n hide: target.hide,\n type: target.type || 'timeserie'\n };\n });\n\n options.targets = targets;\n\n return options;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/datasource.js"],"names":["_","GenericDatasource","instanceSettings","$q","backendSrv","templateSrv","type","url","name","q","withCredentials","headers","basicAuth","length","options","query","buildQueryParameters","targets","filter","t","hide","when","data","doRequest","method","then","response","status","message","title","replace","annotation","annotationQuery","range","datasource","enable","iconColor","rangeRaw","result","interpolated","target","mapToTextValue","map","d","i","text","value","isObject","datasourceRequest","scopedVars","refId"],"mappings":"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","file":"datasource.js","sourcesContent":["import _ from \"lodash\";\n\nexport class GenericDatasource {\n\n constructor(instanceSettings, $q, backendSrv, templateSrv) {\n this.type = instanceSettings.type;\n this.url = instanceSettings.url;\n this.name = instanceSettings.name;\n this.q = $q;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.withCredentials = instanceSettings.withCredentials;\n this.headers = {'Content-Type': 'application/json'};\n if (typeof instanceSettings.basicAuth === 'string' && instanceSettings.basicAuth.length > 0) {\n this.headers['Authorization'] = instanceSettings.basicAuth;\n }\n }\n\n query(options) {\n var query = this.buildQueryParameters(options);\n query.targets = query.targets.filter(t => !t.hide);\n\n if (query.targets.length <= 0) {\n return this.q.when({data: []});\n }\n\n return this.doRequest({\n url: this.url + '/query',\n data: query,\n method: 'POST'\n });\n }\n\n testDatasource() {\n return this.doRequest({\n url: this.url + '/',\n method: 'GET',\n }).then(response => {\n if (response.status === 200) {\n return { status: \"success\", message: \"Data source is working\", title: \"Success\" };\n }\n });\n }\n\n annotationQuery(options) {\n var query = this.templateSrv.replace(options.annotation.query, {}, 'glob');\n var annotationQuery = {\n range: options.range,\n annotation: {\n name: options.annotation.name,\n datasource: options.annotation.datasource,\n enable: options.annotation.enable,\n iconColor: options.annotation.iconColor,\n query: query\n },\n rangeRaw: options.rangeRaw\n };\n\n return this.doRequest({\n url: this.url + '/annotations',\n method: 'POST',\n data: annotationQuery\n }).then(result => {\n return result.data;\n });\n }\n\n metricFindQuery(query) {\n var interpolated = {\n target: this.templateSrv.replace(query, null, 'regex')\n };\n\n return this.doRequest({\n url: this.url + '/search',\n data: interpolated,\n method: 'POST',\n }).then(this.mapToTextValue);\n }\n\n mapToTextValue(result) {\n return _.map(result.data, (d, i) => {\n if (d && d.text && d.value) {\n return { text: d.text, value: d.value };\n } else if (_.isObject(d)) {\n return { text: d, value: i};\n }\n return { text: d, value: d };\n });\n }\n\n doRequest(options) {\n options.withCredentials = this.withCredentials;\n options.headers = this.headers;\n\n return this.backendSrv.datasourceRequest(options);\n }\n\n buildQueryParameters(options) {\n //remove placeholder targets\n options.targets = _.filter(options.targets, target => {\n return target.target !== 'select metric';\n });\n\n var targets = _.map(options.targets, target => {\n return {\n target: this.templateSrv.replace(target.target, options.scopedVars, 'regex'),\n refId: target.refId,\n hide: target.hide,\n type: target.type || 'timeserie'\n };\n });\n\n options.targets = targets;\n\n return options;\n }\n}\n"]} \ No newline at end of file diff --git a/grafana/ntopng-datasource/dist/partials/query.editor.html b/grafana/ntopng-datasource/dist/partials/query.editor.html index 0c373a20a2..e3240d4f4e 100644 --- a/grafana/ntopng-datasource/dist/partials/query.editor.html +++ b/grafana/ntopng-datasource/dist/partials/query.editor.html @@ -10,8 +10,11 @@