Problems: move tag filter to API query

This commit is contained in:
Alexander Zobnin
2020-07-20 17:29:33 +03:00
parent a2e978e451
commit a4931e36b0
3 changed files with 17 additions and 14 deletions

View File

@@ -427,12 +427,24 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
tags: { filter: tagsFilter }, tags: { filter: tagsFilter },
}; };
// replaceTemplateVars() builds regex-like string, so we should trim it.
const tagsFilterStr = tagsFilter.replace('/^', '').replace('$/', '');
const tags = utils.parseTags(tagsFilterStr);
tags.forEach(tag => {
// Zabbix uses {"tag": "<tag>", "value": "<value>", "operator": "<operator>"} format, where 1 means Equal
tag.operator = 1;
});
const problemsOptions: any = { const problemsOptions: any = {
recent: showProblems === ShowProblemTypes.Recent, recent: showProblems === ShowProblemTypes.Recent,
minSeverity: target.options?.minSeverity, minSeverity: target.options?.minSeverity,
limit: target.options?.limit, limit: target.options?.limit,
}; };
if (tags && tags.length) {
problemsOptions.tags = tags;
}
if (target.options?.acknowledged === 0 || target.options?.acknowledged === 1) { if (target.options?.acknowledged === 0 || target.options?.acknowledged === 1) {
problemsOptions.acknowledged = target.options?.acknowledged ? true : false; problemsOptions.acknowledged = target.options?.acknowledged ? true : false;
} }

View File

@@ -137,19 +137,6 @@ export function filterTriggersPre(triggerList, replacedTarget) {
triggerList = filterTriggers(triggerList, triggerFilter); 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 // Filter by maintenance status
if (!replacedTarget.options.hostsInMaintenance) { if (!replacedTarget.options.hostsInMaintenance) {
triggerList = _.filter(triggerList, (trigger) => !trigger.maintenance); triggerList = _.filter(triggerList, (trigger) => !trigger.maintenance);

View File

@@ -354,7 +354,7 @@ export class ZabbixAPIConnector {
} }
getProblems(groupids, hostids, applicationids, options): Promise<ZBXProblem[]> { getProblems(groupids, hostids, applicationids, options): Promise<ZBXProblem[]> {
const { timeFrom, timeTo, recent, severities, limit, acknowledged } = options; const { timeFrom, timeTo, recent, severities, limit, acknowledged, tags } = options;
const params: any = { const params: any = {
output: 'extend', output: 'extend',
@@ -381,6 +381,10 @@ export class ZabbixAPIConnector {
params.acknowledged = acknowledged; params.acknowledged = acknowledged;
} }
if (tags) {
params.tags = tags;
}
if (limit) { if (limit) {
params.limit = limit; params.limit = limit;
} }