From 8d3a00d7837a04b221665a7044e524c616d0b51e Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Sat, 16 Jan 2016 19:34:45 +0300 Subject: [PATCH] Format api response. --- plugins/datasource-zabbix/zabbixAPIWrapper.js | 20 ++++------ plugins/datasource-zabbix/zabbixCacheSrv.js | 38 ++++++++++++++----- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/plugins/datasource-zabbix/zabbixAPIWrapper.js b/plugins/datasource-zabbix/zabbixAPIWrapper.js index 51feb76..9fe2ff2 100644 --- a/plugins/datasource-zabbix/zabbixAPIWrapper.js +++ b/plugins/datasource-zabbix/zabbixAPIWrapper.js @@ -120,8 +120,7 @@ function (angular, _) { p.getGroups = function() { var params = { output: ['name'], - sortfield: 'name', - selectHosts: [] + sortfield: 'name' }; return this.performZabbixAPIRequest('hostgroup.get', params); @@ -130,7 +129,8 @@ function (angular, _) { p.getHosts = function() { var params = { output: ['name', 'host'], - sortfield: 'name' + sortfield: 'name', + selectGroups: [] }; return this.performZabbixAPIRequest('host.get', params); @@ -139,7 +139,8 @@ function (angular, _) { p.getApplications = function() { var params = { output: ['name'], - sortfield: 'name' + sortfield: 'name', + selectHosts: [] }; return this.performZabbixAPIRequest('application.get', params); @@ -147,16 +148,9 @@ function (angular, _) { p.getItems = function() { var params = { - output: ['name', 'key_', 'value_type'], + output: ['name', 'key_', 'value_type', 'hostid', 'status', 'state'], sortfield: 'name', - //Include web items in the result - webitems: true, - // Return only numeric items - filter: { - value_type: [0, 3] - }, - // Return only enabled items - monitored: true + selectApplications: [] }; return this.performZabbixAPIRequest('item.get', params); diff --git a/plugins/datasource-zabbix/zabbixCacheSrv.js b/plugins/datasource-zabbix/zabbixCacheSrv.js index 75d92bc..d65212a 100644 --- a/plugins/datasource-zabbix/zabbixCacheSrv.js +++ b/plugins/datasource-zabbix/zabbixCacheSrv.js @@ -1,7 +1,7 @@ define([ 'angular', 'lodash' - ], +], function (angular, _) { 'use strict'; @@ -11,9 +11,22 @@ function (angular, _) { function ZabbixCache(zabbixAPI, lifetime) { var self = this; + this.zabbixAPI = zabbixAPI; this.lifetime = lifetime; + this._groups = []; + this._hosts = []; + this._applications = []; + this._items = []; + + this.refresh(); + } + + var p = ZabbixCache.prototype; + + p.refresh = function () { + var self = this; var promises = [ this.zabbixAPI.getGroups(), this.zabbixAPI.getHosts(), @@ -22,17 +35,23 @@ function (angular, _) { ]; $q.all(promises).then(function (results) { - console.log(results); if (results.length) { self._groups = results[0]; - self._hosts = results[1]; + + self._hosts = _.forEach(results[1], function(host) { + host.groups = _.map(host.groups, 'groupid'); + return host; + }); + self._applications = groupApplications(results[2]); - self._items = results[3]; + + self._items = _.forEach(results[3], function(item) { + item.applications = _.map(item.applications, 'applicationid'); + return item; + }); } }); - } - - var p = ZabbixCache.prototype; + }; p.getGroups = function() { return this._groups; @@ -52,14 +71,13 @@ function (angular, _) { /** * Group Zabbix applications by name - * @param {[type]} applications [description] - * @return {[type]} [description] */ function groupApplications(applications) { return _.map(_.groupBy(applications, 'name'), function (value, key) { return { name: key, - ids: _.map(value, 'applicationid') + applicationids: _.map(value, 'applicationid'), + hostids: _.uniq(_.map(_.flatten(value, 'hosts'), 'hostid')) }; }); }