Problems: move tag filter to API query
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user