From 841b47edb5b82dd6b33c2111d5e3eea50e805395 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 21 May 2015 23:14:18 +0300 Subject: [PATCH] Add metricFindQuery for templated dashboards support. --- zabbix/datasource.js | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/zabbix/datasource.js b/zabbix/datasource.js index 8035b81..d1e4b04 100644 --- a/zabbix/datasource.js +++ b/zabbix/datasource.js @@ -229,6 +229,52 @@ function (angular, _, kbn) { }; + // For templated query + ZabbixAPIDatasource.prototype.metricFindQuery = function (query) { + var interpolated; + try { + interpolated = templateSrv.replace(query); + } + catch (err) { + return $q.reject(err); + } + + var parts = interpolated.split('.'); + var template = { + 'group': parts[0], + 'host': parts[1], + 'item': parts[2] + }; + + var params = { + output: ['name'], + sortfield: 'name', + // Case insensitive search + search: { + name : template.group + } + }; + + var self = this; + return this.performZabbixAPIRequest('hostgroup.get', params) + .then(function (result) { + var groupid = null; + if (result.length && template.group) { + groupid = result[0].groupid; + } + return self.performHostSuggestQuery(groupid) + .then(function (result) { + return _.map(result, function (host) { + return { + text: host.name, + expandable: false + }; + }); + }); + }); + }; + + ZabbixAPIDatasource.prototype.annotationQuery = function(annotation, rangeUnparsed) { var from = Math.ceil(kbn.parseDate(rangeUnparsed.from).getTime() / 1000); var to = Math.ceil(kbn.parseDate(rangeUnparsed.to).getTime() / 1000);