problem panels: get problem actions

This commit is contained in:
Alexander Zobnin
2018-12-08 17:56:31 +03:00
parent 9e4bf88195
commit 198110e2af
4 changed files with 53 additions and 27 deletions

View File

@@ -82,7 +82,7 @@ export class ProblemList extends PureComponent<ProblemListProps, ProblemListStat
}
render() {
// console.log(this.props.problems, this.props.panelOptions);
console.log(this.props.problems);
const columns = this.buildColumns();
this.rootWidth = this.rootRef && this.rootRef.clientWidth;

View File

@@ -233,7 +233,19 @@ export class TriggerPanelCtrl extends PanelCtrl {
]);
}).then(([triggers, sourceProxies]) => {
proxies = _.keyBy(sourceProxies, 'proxyid');
return this.getAcknowledges(triggers, ds);
const eventids = _.compact(triggers.map(trigger => {
return trigger.lastEvent.eventid;
}));
return Promise.all([
this.datasources[ds].zabbix.getAcknowledges(eventids),
this.datasources[ds].zabbix.getEventAlerts(eventids),
Promise.resolve(triggers)
]);
})
.then(([events, alerts, triggers]) => {
this.addAcknowledges(events, triggers);
this.addEventAlerts(alerts, triggers);
return triggers;
})
.then(triggers => this.setMaintenanceStatus(triggers))
.then(triggers => this.filterTriggersPre(triggers, ds))
@@ -245,32 +257,23 @@ export class TriggerPanelCtrl extends PanelCtrl {
.then(results => _.flatten(results));
}
getAcknowledges(triggerList, ds) {
// Request acknowledges for trigger
var eventids = _.map(triggerList, trigger => {
return trigger.lastEvent.eventid;
});
return this.datasources[ds].zabbix.getAcknowledges(eventids)
.then(events => {
// Map events to triggers
_.each(triggerList, trigger => {
var event = _.find(events, event => {
return event.eventid === trigger.lastEvent.eventid;
});
if (event) {
trigger.acknowledges = _.map(event.acknowledges, this.formatAcknowledge.bind(this));
}
if (!trigger.lastEvent.eventid) {
trigger.lastEvent = null;
}
addAcknowledges(events, triggers) {
// Map events to triggers
_.each(triggers, trigger => {
var event = _.find(events, event => {
return event.eventid === trigger.lastEvent.eventid;
});
return triggerList;
if (event) {
trigger.acknowledges = _.map(event.acknowledges, this.formatAcknowledge.bind(this));
}
if (!trigger.lastEvent.eventid) {
trigger.lastEvent = null;
}
});
return triggers;
}
formatAcknowledge(ack) {
@@ -288,6 +291,18 @@ export class TriggerPanelCtrl extends PanelCtrl {
return ack;
}
addEventAlerts(alerts, triggers) {
alerts.forEach(alert => {
const trigger = _.find(triggers, t => {
return t.lastEvent && alert.eventid === t.lastEvent.eventid;
});
if (trigger) {
trigger.alerts = trigger.alerts ? trigger.alerts.concat(alert) : [alert];
}
});
return triggers;
}
filterTriggersPre(triggerList, ds) {
// Filter triggers by description
let triggerFilter = this.panel.targets[ds].trigger.filter;