Problems: more work on options migration

This commit is contained in:
Alexander Zobnin
2020-05-13 18:13:25 +03:00
parent bfbd2907ce
commit 2588fd5c50
9 changed files with 131 additions and 55 deletions

View File

@@ -1,5 +1,6 @@
import _ from 'lodash';
import { getNextRefIdChar } from './utils';
import { ShowProblemTypes } from '../datasource-zabbix/types';
// Actual schema version
export const CURRENT_SCHEMA_VERSION = 8;
@@ -19,9 +20,7 @@ export const getDefaultTarget = (targets?) => {
export function getDefaultTargetOptions() {
return {
hostsInMaintenance: true,
showTriggers: 'all triggers',
sortTriggersBy: { text: 'last change', value: 'lastchange' },
showEvents: { text: 'Problems', value: 1 },
};
}
@@ -99,14 +98,45 @@ export function migratePanelSchema(panel) {
for (const target of panel.targets) {
// set queryType to PROBLEMS
target.queryType = 5;
target.options = getDefaultTargetOptions();
_.defaults(target, {tags: {filter: ""}});
target.showProblems = migrateShowEvents(panel);
target.options = migrateOptions(panel);
_.defaults(target.options, getDefaultTargetOptions());
_.defaults(target, { tags: { filter: "" } });
}
delete panel.showEvents;
delete panel.showTriggers;
delete panel.hostsInMaintenance;
}
return panel;
}
function migrateOptions(panel) {
let acknowledged = 2;
if (panel.showTriggers === 'acknowledged') {
acknowledged = 1;
} else if (panel.showTriggers === 'unacknowledged') {
acknowledged = 0;
}
return {
hostsInMaintenance: panel.hostsInMaintenance,
sortTriggersBy: panel.sortTriggersBy,
acknowledged: acknowledged,
};
}
function migrateShowEvents(panel) {
if (panel.showEvents?.value === 1) {
return ShowProblemTypes.Problems;
} else if (panel.showEvents?.value === 0 || panel.showEvents?.value?.length > 1) {
return ShowProblemTypes.History;
} else {
return ShowProblemTypes.Problems;
}
}
function getSchemaVersion(panel) {
return panel.schemaVersion || 1;
}

View File

@@ -34,8 +34,9 @@ describe('Triggers Panel schema migration', () => {
ageField: true,
infoField: true,
limit: 10,
showTriggers: 'all triggers',
showTriggers: 'unacknowledged',
hideHostsInMaintenance: false,
hostsInMaintenance: false,
sortTriggersBy: { text: 'last change', value: 'lastchange' },
showEvents: { text: 'Problems', value: '1' },
triggerSeverity: DEFAULT_SEVERITY,
@@ -61,12 +62,12 @@ describe('Triggers Panel schema migration', () => {
{
...DEFAULT_TARGET,
queryType: 5,
showProblems: 'problems',
options: {
hostsInMaintenance: true,
showTriggers: 'all triggers',
hostsInMaintenance: false,
acknowledged: 0,
sortTriggersBy: { text: 'last change', value: 'lastchange' },
showEvents: { text: 'Problems', value: 1 },
}
},
}
],
ageField: true,

View File

@@ -20,6 +20,7 @@ export const DEFAULT_TARGET = {
trigger: {filter: ""},
tags: {filter: ""},
proxy: {filter: ""},
showProblems: 'problems',
};
export const DEFAULT_SEVERITY = [
@@ -41,7 +42,6 @@ export const PANEL_DEFAULTS = {
hostField: true,
hostTechNameField: false,
hostGroups: false,
hostProxy: false,
showTags: true,
statusField: true,
statusIcon: false,
@@ -50,11 +50,8 @@ export const PANEL_DEFAULTS = {
descriptionField: true,
descriptionAtNewLine: false,
// Options
hostsInMaintenance: true,
showTriggers: 'all triggers',
sortTriggersBy: { text: 'last change', value: 'lastchange' },
showEvents: { text: 'Problems', value: 1 },
limit: 100,
limit: null,
// View options
layout: 'table',
fontSize: '100%',
@@ -175,7 +172,9 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
triggers = this.sortTriggers(triggers);
// Limit triggers number
triggers = triggers.slice(0, this.panel.limit || PANEL_DEFAULTS.limit);
if (this.panel.limit) {
triggers = triggers.slice(0, this.panel.limit);
}
this.renderData = triggers;
@@ -198,11 +197,6 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl {
});
}
// Filter by maintenance status
if (!this.panel.hostsInMaintenance) {
triggerList = _.filter(triggerList, (trigger) => trigger.maintenance === false);
}
// Filter triggers by severity
triggerList = _.filter(triggerList, trigger => {
if (trigger.lastEvent && trigger.lastEvent.severity) {