Changing zabbix api wrapper for working with ZabbixAPIService.

This commit is contained in:
Alexander Zobnin
2016-01-23 13:28:24 +03:00
parent 7e0a41ed45
commit 037b4b523a
2 changed files with 42 additions and 11 deletions

View File

@@ -73,6 +73,14 @@ function (angular) {
return this._request(api_url, 'user.login', params, options, null); return this._request(api_url, 'user.login', params, options, null);
}; };
/**
* Get Zabbix API version
* Matches the version of Zabbix starting from Zabbix 2.0.4
*/
this.getVersion = function(api_url, options) {
return this._request(api_url, 'apiinfo.version', [], options);
};
}); });
// Define zabbix API exception type // Define zabbix API exception type

View File

@@ -1,21 +1,26 @@
define([ define([
'angular', 'angular',
'lodash' 'lodash',
'./zabbixAPIService'
], ],
function (angular, _) { function (angular, _) {
'use strict'; 'use strict';
var module = angular.module('grafana.services'); var module = angular.module('grafana.services');
module.factory('ZabbixAPI', function($q, backendSrv) { module.factory('ZabbixAPI', function($q, backendSrv, ZabbixAPIService) {
// Initialize Zabbix API.
function ZabbixAPI(api_url, username, password, basicAuth, withCredentials) { function ZabbixAPI(api_url, username, password, basicAuth, withCredentials) {
// Initialize API parameters.
this.url = api_url; this.url = api_url;
this.username = username; this.username = username;
this.password = password; this.password = password;
this.basicAuth = basicAuth; this.auth = null;
this.withCredentials = withCredentials;
this.requestOptions = {
basicAuth: basicAuth,
withCredentials: withCredentials
};
} }
var p = ZabbixAPI.prototype; var p = ZabbixAPI.prototype;
@@ -24,6 +29,21 @@ function (angular, _) {
// Core methods // // Core methods //
////////////////// //////////////////
p.request = function(method, params) {
var self = this;
if (this.auth) {
return ZabbixAPIService._request(this.url, method, params, this.requestOptions, this.auth);
} else {
// Login first
return ZabbixAPIService.login(this.url, this.username, this.password, this.requestOptions)
.then(function(auth) {
self.auth = auth;
return ZabbixAPIService._request(self.url, method, params, self.requestOptions, self.auth);
});
}
};
/** /**
* Request data from Zabbix API * Request data from Zabbix API
* *
@@ -123,7 +143,10 @@ function (angular, _) {
sortfield: 'name' sortfield: 'name'
}; };
return this.performZabbixAPIRequest('hostgroup.get', params); return this.request('hostgroup.get', params).then(function(result) {
console.log("getGroups", result);
return result;
});
}; };
p.getHosts = function() { p.getHosts = function() {
@@ -133,7 +156,7 @@ function (angular, _) {
selectGroups: [] selectGroups: []
}; };
return this.performZabbixAPIRequest('host.get', params); return this.request('host.get', params);
}; };
p.getApplications = function() { p.getApplications = function() {
@@ -143,7 +166,7 @@ function (angular, _) {
selectHosts: [] selectHosts: []
}; };
return this.performZabbixAPIRequest('application.get', params); return this.request('application.get', params);
}; };
p.getItems = function() { p.getItems = function() {
@@ -153,7 +176,7 @@ function (angular, _) {
selectApplications: [] selectApplications: []
}; };
return this.performZabbixAPIRequest('item.get', params); return this.request('item.get', params);
}; };
///////////////////////// /////////////////////////
@@ -225,7 +248,7 @@ function (angular, _) {
params.time_till = end; params.time_till = end;
} }
return this.performZabbixAPIRequest('history.get', params); return this.request('history.get', params);
}, this)).then(function (results) { }, this)).then(function (results) {
return _.flatten(results); return _.flatten(results);
}); });
@@ -261,7 +284,7 @@ function (angular, _) {
params.time_till = end; params.time_till = end;
} }
return this.performZabbixAPIRequest('trend.get', params); return this.request('trend.get', params);
}, this)).then(function (results) { }, this)).then(function (results) {
return _.flatten(results); return _.flatten(results);
}); });