From b466cc4cbc620a3dab5638eca8f07aa81956fb4a Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Sun, 12 Jul 2015 19:12:21 +0300 Subject: [PATCH] Resolved #54 - Implemented testDatasource() method for test connection to zabbix server. --- zabbix/datasource.js | 15 +++++++++++++++ zabbix/zabbixAPIWrapper.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/zabbix/datasource.js b/zabbix/datasource.js index f051866..656c2dd 100644 --- a/zabbix/datasource.js +++ b/zabbix/datasource.js @@ -41,6 +41,21 @@ function (angular, _, kbn) { this.zabbixAPI = new ZabbixAPI(this.url, this.username, this.password, this.basicAuth, this.withCredentials); } + /** + * Test connection to Zabbix API + * + * @return {object} Connection status and Zabbix API version + */ + ZabbixAPIDatasource.prototype.testDatasource = function() { + return this.zabbixAPI.getZabbixAPIVersion().then(function (apiVersion) { + return { + status: "success", + title: "Success", + message: "Zabbix API version: " + apiVersion + }; + }); + }; + /** * Calls for each panel in dashboard. * diff --git a/zabbix/zabbixAPIWrapper.js b/zabbix/zabbixAPIWrapper.js index 9e9fb15..78be787 100644 --- a/zabbix/zabbixAPIWrapper.js +++ b/zabbix/zabbixAPIWrapper.js @@ -117,6 +117,42 @@ function (angular, _) { // API method wrappers // ///////////////////////// + /** + * Request version of the Zabbix API. + * + * @return {string} Zabbix API version + */ + p.getZabbixAPIVersion = function() { + var options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + url: this.url, + data: { + jsonrpc: '2.0', + method: 'apiinfo.version', + params: [], + id: 1 + } + }; + + if (this.basicAuth || this.withCredentials) { + options.withCredentials = true; + } + if (this.basicAuth) { + options.headers = options.headers || {}; + options.headers.Authorization = this.basicAuth; + } + + return backendSrv.datasourceRequest(options).then(function (result) { + if (!result.data) { + return null; + } + return result.data.result; + }); + }; + /** * Perform history query from Zabbix API *