From b76449d151f2b99f1f8592805ec5b9848043af3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Sat, 9 Jan 2016 21:42:26 +0100 Subject: [PATCH] feat(plugins): upgraded influxdb to new data source plugin model --- .../plugins/datasource/influxdb/datasource.js | 47 ++++++++----------- .../influxdb/{directives.js => module.js} | 10 +++- .../plugins/datasource/influxdb/plugin.json | 8 +--- 3 files changed, 30 insertions(+), 35 deletions(-) rename public/app/plugins/datasource/influxdb/{directives.js => module.js} (69%) diff --git a/public/app/plugins/datasource/influxdb/datasource.js b/public/app/plugins/datasource/influxdb/datasource.js index 9516abdeacd..62eca66dd9e 100644 --- a/public/app/plugins/datasource/influxdb/datasource.js +++ b/public/app/plugins/datasource/influxdb/datasource.js @@ -4,7 +4,6 @@ define([ 'app/core/utils/datemath', './influx_series', './influx_query', - './directives', './query_ctrl', ], function (angular, _, dateMath, InfluxSeries, InfluxQuery) { @@ -12,27 +11,22 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) { InfluxQuery = InfluxQuery.default; - var module = angular.module('grafana.services'); + function InfluxDatasource(instanceSettings, $q, backendSrv, templateSrv) { + this.type = 'influxdb'; + this.urls = _.map(instanceSettings.url.split(','), function(url) { + return url.trim(); + }); - module.factory('InfluxDatasource', function($q, backendSrv, templateSrv) { + this.username = instanceSettings.username; + this.password = instanceSettings.password; + this.name = instanceSettings.name; + this.database = instanceSettings.database; + this.basicAuth = instanceSettings.basicAuth; - function InfluxDatasource(datasource) { - this.type = 'influxdb'; - this.urls = _.map(datasource.url.split(','), function(url) { - return url.trim(); - }); + this.supportAnnotations = true; + this.supportMetrics = true; - this.username = datasource.username; - this.password = datasource.password; - this.name = datasource.name; - this.database = datasource.database; - this.basicAuth = datasource.basicAuth; - - this.supportAnnotations = true; - this.supportMetrics = true; - } - - InfluxDatasource.prototype.query = function(options) { + this.query = function(options) { var timeFilter = getTimeFilter(options); var queryTargets = []; var i, y; @@ -93,7 +87,7 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) { }); }; - InfluxDatasource.prototype.annotationQuery = function(options) { + this.annotationQuery = function(options) { var timeFilter = getTimeFilter({rangeRaw: options.rangeRaw}); var query = options.annotation.query.replace('$timeFilter', timeFilter); query = templateSrv.replace(query); @@ -106,7 +100,7 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) { }); }; - InfluxDatasource.prototype.metricFindQuery = function (query) { + this.metricFindQuery = function (query) { var interpolated; try { interpolated = templateSrv.replace(query); @@ -133,17 +127,17 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) { }); }; - InfluxDatasource.prototype._seriesQuery = function(query) { + this._seriesQuery = function(query) { return this._influxRequest('GET', '/query', {q: query, epoch: 'ms'}); }; - InfluxDatasource.prototype.testDatasource = function() { + this.testDatasource = function() { return this.metricFindQuery('SHOW MEASUREMENTS LIMIT 1').then(function () { return { status: "success", message: "Data source is working", title: "Success" }; }); }; - InfluxDatasource.prototype._influxRequest = function(method, url, data) { + this._influxRequest = function(method, url, data) { var self = this; var currentUrl = self.urls.shift(); @@ -219,9 +213,8 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) { } return (date.valueOf() / 1000).toFixed(0) + 's'; } + } - return InfluxDatasource; - - }); + return InfluxDatasource; }); diff --git a/public/app/plugins/datasource/influxdb/directives.js b/public/app/plugins/datasource/influxdb/module.js similarity index 69% rename from public/app/plugins/datasource/influxdb/directives.js rename to public/app/plugins/datasource/influxdb/module.js index a4c66137751..2a15ecad839 100644 --- a/public/app/plugins/datasource/influxdb/directives.js +++ b/public/app/plugins/datasource/influxdb/module.js @@ -1,7 +1,8 @@ define([ 'angular', + './datasource', ], -function (angular) { +function (angular, InfluxDatasource) { 'use strict'; var module = angular.module('grafana.directives'); @@ -18,4 +19,11 @@ function (angular) { return {templateUrl: 'app/plugins/datasource/influxdb/partials/annotations.editor.html'}; }); + module.directive('datasourceCustomSettingsViewInfluxdb', function() { + return {templateUrl: 'app/plugins/datasource/influxdb/partials/config.html'}; + }); + + return { + Datasource: InfluxDatasource + }; }); diff --git a/public/app/plugins/datasource/influxdb/plugin.json b/public/app/plugins/datasource/influxdb/plugin.json index 3a9aea175cb..29d6a5a0f58 100644 --- a/public/app/plugins/datasource/influxdb/plugin.json +++ b/public/app/plugins/datasource/influxdb/plugin.json @@ -3,13 +3,7 @@ "name": "InfluxDB 0.9.x", "id": "influxdb", - "serviceName": "InfluxDatasource", - - "module": "app/plugins/datasource/influxdb/datasource", - - "partials": { - "config": "app/plugins/datasource/influxdb/partials/config.html" - }, + "module": "app/plugins/datasource/influxdb/module", "defaultMatchFormat": "regex values", "metrics": true,