From a4931e36b059388d3073703457d489a41b9911e6 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 20 Jul 2020 17:29:33 +0300 Subject: [PATCH] Problems: move tag filter to API query --- src/datasource-zabbix/datasource.ts | 12 ++++++++++++ src/datasource-zabbix/problemsHandler.ts | 13 ------------- .../connectors/zabbix_api/zabbixAPIConnector.ts | 6 +++++- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/datasource-zabbix/datasource.ts b/src/datasource-zabbix/datasource.ts index f8c4893..274cda8 100644 --- a/src/datasource-zabbix/datasource.ts +++ b/src/datasource-zabbix/datasource.ts @@ -427,12 +427,24 @@ export class ZabbixDatasource extends DataSourceApi { + // Zabbix uses {"tag": "", "value": "", "operator": ""} format, where 1 means Equal + tag.operator = 1; + }); + const problemsOptions: any = { recent: showProblems === ShowProblemTypes.Recent, minSeverity: target.options?.minSeverity, limit: target.options?.limit, }; + if (tags && tags.length) { + problemsOptions.tags = tags; + } + if (target.options?.acknowledged === 0 || target.options?.acknowledged === 1) { problemsOptions.acknowledged = target.options?.acknowledged ? true : false; } diff --git a/src/datasource-zabbix/problemsHandler.ts b/src/datasource-zabbix/problemsHandler.ts index 197b583..aa0faf6 100644 --- a/src/datasource-zabbix/problemsHandler.ts +++ b/src/datasource-zabbix/problemsHandler.ts @@ -137,19 +137,6 @@ export function filterTriggersPre(triggerList, replacedTarget) { triggerList = filterTriggers(triggerList, triggerFilter); } - // Filter by tags - if (replacedTarget.tags.filter) { - let tagsFilter = replacedTarget.tags.filter; - // replaceTemplateVars() builds regex-like string, so we should trim it. - tagsFilter = tagsFilter.replace('/^', '').replace('$/', ''); - const tags = utils.parseTags(tagsFilter); - triggerList = _.filter(triggerList, trigger => { - return _.every(tags, tag => { - return _.find(trigger.tags, t => t.tag === tag.tag && (!tag.value || t.value === tag.value)); - }); - }); - } - // Filter by maintenance status if (!replacedTarget.options.hostsInMaintenance) { triggerList = _.filter(triggerList, (trigger) => !trigger.maintenance); diff --git a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 2214459..e8622cf 100644 --- a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -354,7 +354,7 @@ export class ZabbixAPIConnector { } getProblems(groupids, hostids, applicationids, options): Promise { - const { timeFrom, timeTo, recent, severities, limit, acknowledged } = options; + const { timeFrom, timeTo, recent, severities, limit, acknowledged, tags } = options; const params: any = { output: 'extend', @@ -381,6 +381,10 @@ export class ZabbixAPIConnector { params.acknowledged = acknowledged; } + if (tags) { + params.tags = tags; + } + if (limit) { params.limit = limit; }