From d2a1a7797b3b61c8b17121250863b4b09589fffd Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Wed, 27 May 2020 09:55:57 +0300 Subject: [PATCH] always return array from problems requests --- src/datasource-zabbix/problemsHandler.ts | 3 ++- src/datasource-zabbix/utils.ts | 4 ++++ .../zabbix/connectors/zabbix_api/zabbixAPIConnector.ts | 8 ++++---- src/datasource-zabbix/zabbix/zabbix.ts | 5 ++++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/datasource-zabbix/problemsHandler.ts b/src/datasource-zabbix/problemsHandler.ts index c1ecf8c..197b583 100644 --- a/src/datasource-zabbix/problemsHandler.ts +++ b/src/datasource-zabbix/problemsHandler.ts @@ -5,6 +5,7 @@ import { ZBXProblem, ZBXTrigger, ProblemDTO, ZBXEvent } from './types'; export function joinTriggersWithProblems(problems: ZBXProblem[], triggers: ZBXTrigger[]): ProblemDTO[] { const problemDTOList: ProblemDTO[] = []; + for (let i = 0; i < problems.length; i++) { const p = problems[i]; const triggerId = Number(p.objectid); @@ -52,8 +53,8 @@ interface JoinOptions { export function joinTriggersWithEvents(events: ZBXEvent[], triggers: ZBXTrigger[], options?: JoinOptions): ProblemDTO[] { const { valueFromEvent } = options; - const problemDTOList: ProblemDTO[] = []; + for (let i = 0; i < events.length; i++) { const e = events[i]; const triggerId = Number(e.objectid); diff --git a/src/datasource-zabbix/utils.ts b/src/datasource-zabbix/utils.ts index 4fa43d1..c5ba1e9 100644 --- a/src/datasource-zabbix/utils.ts +++ b/src/datasource-zabbix/utils.ts @@ -380,3 +380,7 @@ export function parseTags(tagStr: string): any[] { }); return tags; } + +export function mustArray(result: any): any[] { + return result || []; +} diff --git a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 5fe2cf5..b30cb5c 100644 --- a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -425,7 +425,7 @@ export class ZabbixAPIConnector { params.time_till = timeTo; } - return this.request('problem.get', params); + return this.request('problem.get', params).then(utils.mustArray); } getTriggersByIds(triggerids: string[]) { @@ -445,7 +445,7 @@ export class ZabbixAPIConnector { preservekeys: '1', }; - return this.request('trigger.get', params); + return this.request('trigger.get', params).then(utils.mustArray); } getTriggers(groupids, hostids, applicationids, options) { @@ -507,7 +507,7 @@ export class ZabbixAPIConnector { params.sortorder = 'DESC'; } - return this.request('event.get', params); + return this.request('event.get', params).then(utils.mustArray); } getEventsHistory(groupids, hostids, applicationids, options) { @@ -543,7 +543,7 @@ export class ZabbixAPIConnector { params.value = value; } - return this.request('event.get', params); + return this.request('event.get', params).then(utils.mustArray); } getExtendedEventData(eventids) { diff --git a/src/datasource-zabbix/zabbix/zabbix.ts b/src/datasource-zabbix/zabbix/zabbix.ts index 557a085..9328f34 100644 --- a/src/datasource-zabbix/zabbix/zabbix.ts +++ b/src/datasource-zabbix/zabbix/zabbix.ts @@ -340,7 +340,10 @@ export class Zabbix implements ZabbixConnector { .then(query => this.zabbixAPI.getProblems(query.groupids, query.hostids, query.applicationids, options)) .then(problems => { const triggerids = problems?.map(problem => problem.objectid); - return Promise.all([Promise.resolve(problems), this.zabbixAPI.getTriggersByIds(triggerids)]); + return Promise.all([ + Promise.resolve(problems), + this.zabbixAPI.getTriggersByIds(triggerids) + ]); }) .then(([problems, triggers]) => joinTriggersWithProblems(problems, triggers)) .then(triggers => this.filterTriggersByProxy(triggers, proxyFilter))