triggers panel: update migrations
This commit is contained in:
@@ -1,19 +1,30 @@
|
||||
// Actual schema version
|
||||
const CURRENT_SCHEMA_VERSION = 3;
|
||||
|
||||
export function migratePanelSchema(panel) {
|
||||
if (isEmptyPanel(panel)) {
|
||||
return panel;
|
||||
}
|
||||
|
||||
const schemaVersion = getSchemaVersion(panel);
|
||||
switch (schemaVersion) {
|
||||
case 1:
|
||||
panel.datasources = [panel.datasource];
|
||||
panel.targets = {};
|
||||
panel.targets[panel.datasources[0]] = panel.triggers;
|
||||
panel.schemaVersion = CURRENT_SCHEMA_VERSION;
|
||||
|
||||
// delete old props
|
||||
delete panel.triggers;
|
||||
delete panel.datasource;
|
||||
break;
|
||||
if (schemaVersion < 2) {
|
||||
panel.datasources = [panel.datasource];
|
||||
panel.targets = {};
|
||||
panel.targets[panel.datasources[0]] = panel.triggers;
|
||||
|
||||
// delete old props
|
||||
delete panel.triggers;
|
||||
delete panel.datasource;
|
||||
}
|
||||
|
||||
if (schemaVersion < 3) {
|
||||
// delete old props
|
||||
delete panel.lastChangeField;
|
||||
delete panel.ageField;
|
||||
delete panel.infoField;
|
||||
delete panel.scroll;
|
||||
}
|
||||
|
||||
return panel;
|
||||
|
||||
@@ -10,6 +10,8 @@ describe('Triggers Panel schema migration', () => {
|
||||
get: () => Promise.resolve({})
|
||||
};
|
||||
|
||||
let timeoutMock = () => {};
|
||||
|
||||
beforeEach(() => {
|
||||
ctx = {
|
||||
scope: {
|
||||
@@ -39,29 +41,25 @@ describe('Triggers Panel schema migration', () => {
|
||||
});
|
||||
|
||||
it('should update old panel schema', () => {
|
||||
let updatedPanelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
||||
let updatedPanelCtrl = new TriggerPanelCtrl(ctx.scope, {}, timeoutMock, datasourceSrvMock, {}, {}, {});
|
||||
|
||||
let expected = {
|
||||
schemaVersion: 2,
|
||||
schemaVersion: 3,
|
||||
datasources: ['zabbix'],
|
||||
targets: {
|
||||
'zabbix': DEFAULT_TARGET
|
||||
},
|
||||
hostField: true,
|
||||
hostTechNameField: false,
|
||||
statusField: false,
|
||||
severityField: false,
|
||||
lastChangeField: true,
|
||||
ageField: true,
|
||||
infoField: true,
|
||||
hideHostsInMaintenance: false,
|
||||
showTriggers: 'all triggers',
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: '1' },
|
||||
limit: 10,
|
||||
fontSize: '100%',
|
||||
fontColor: null,
|
||||
pageSize: 10,
|
||||
scroll: true,
|
||||
customLastChangeFormat: false,
|
||||
lastChangeFormat: "",
|
||||
triggerSeverity: DEFAULT_SEVERITY,
|
||||
@@ -77,26 +75,22 @@ describe('Triggers Panel schema migration', () => {
|
||||
let updatedPanelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
||||
|
||||
let expected = {
|
||||
schemaVersion: 2,
|
||||
schemaVersion: 3,
|
||||
datasources: ['zabbix_default'],
|
||||
targets: {
|
||||
'zabbix_default': DEFAULT_TARGET
|
||||
},
|
||||
hostField: true,
|
||||
statusField: false,
|
||||
severityField: false,
|
||||
lastChangeField: true,
|
||||
ageField: true,
|
||||
infoField: true,
|
||||
hostTechNameField: false,
|
||||
statusField: true,
|
||||
severityField: true,
|
||||
hideHostsInMaintenance: false,
|
||||
showTriggers: 'all triggers',
|
||||
sortTriggersBy: { text: 'last change', value: 'lastchange' },
|
||||
showEvents: { text: 'Problems', value: '1' },
|
||||
limit: 10,
|
||||
limit: 100,
|
||||
fontSize: '100%',
|
||||
fontColor: null,
|
||||
pageSize: 10,
|
||||
scroll: true,
|
||||
customLastChangeFormat: false,
|
||||
lastChangeFormat: "",
|
||||
triggerSeverity: DEFAULT_SEVERITY,
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import _ from 'lodash';
|
||||
import {TriggerPanelCtrl} from '../triggers_panel_ctrl';
|
||||
import {PANEL_DEFAULTS, DEFAULT_TARGET} from '../triggers_panel_ctrl';
|
||||
// import { create } from 'domain';
|
||||
|
||||
describe('TriggerPanelCtrl', () => {
|
||||
let ctx = {};
|
||||
let datasourceSrvMock, zabbixDSMock;
|
||||
let timeoutMock = () => {};
|
||||
let createPanelCtrl;
|
||||
|
||||
beforeEach(() => {
|
||||
ctx = {scope: {panel: PANEL_DEFAULTS}};
|
||||
@@ -26,12 +29,13 @@ describe('TriggerPanelCtrl', () => {
|
||||
},
|
||||
get: () => Promise.resolve(zabbixDSMock)
|
||||
};
|
||||
createPanelCtrl = () => new TriggerPanelCtrl(ctx.scope, {}, timeoutMock, datasourceSrvMock, {}, {}, {});
|
||||
});
|
||||
|
||||
describe('When adding new panel', () => {
|
||||
it('should suggest all zabbix data sources', () => {
|
||||
ctx.scope.panel = {};
|
||||
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
||||
let panelCtrl = createPanelCtrl();
|
||||
expect(panelCtrl.available_datasources).toEqual([
|
||||
'zabbix_default', 'zabbix'
|
||||
]);
|
||||
@@ -39,7 +43,7 @@ describe('TriggerPanelCtrl', () => {
|
||||
|
||||
it('should load first zabbix data source as default', () => {
|
||||
ctx.scope.panel = {};
|
||||
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
||||
let panelCtrl = createPanelCtrl();
|
||||
expect(panelCtrl.panel.datasources).toEqual([
|
||||
'zabbix_default'
|
||||
]);
|
||||
@@ -63,7 +67,7 @@ describe('TriggerPanelCtrl', () => {
|
||||
});
|
||||
|
||||
it('should sort triggers', (done) => {
|
||||
let panelCtrl = new TriggerPanelCtrl(ctx.scope, {}, {}, datasourceSrvMock, {}, {}, {});
|
||||
let panelCtrl = createPanelCtrl();
|
||||
panelCtrl.onRefresh().then(() => {
|
||||
let trigger_ids = _.map(panelCtrl.triggerList, 'triggerid');
|
||||
expect(trigger_ids).toEqual([
|
||||
|
||||
@@ -61,7 +61,7 @@ const triggerStatusMap = {
|
||||
export class TriggerPanelCtrl extends PanelCtrl {
|
||||
|
||||
/** @ngInject */
|
||||
constructor($scope, $injector, $element, $timeout, datasourceSrv, templateSrv, contextSrv, dashboardSrv) {
|
||||
constructor($scope, $injector, $timeout, datasourceSrv, templateSrv, contextSrv, dashboardSrv) {
|
||||
super($scope, $injector);
|
||||
this.datasourceSrv = datasourceSrv;
|
||||
this.templateSrv = templateSrv;
|
||||
|
||||
Reference in New Issue
Block a user