problem panels: get problem actions
This commit is contained in:
@@ -398,6 +398,16 @@ export class ZabbixAPIConnector {
|
||||
});
|
||||
}
|
||||
|
||||
getEventAlerts(eventids) {
|
||||
const params = {
|
||||
eventids: eventids,
|
||||
output: 'extend',
|
||||
selectUsers: true,
|
||||
};
|
||||
|
||||
return this.request('alert.get', params);
|
||||
}
|
||||
|
||||
getAlerts(itemids, timeFrom, timeTo) {
|
||||
var params = {
|
||||
output: 'extend',
|
||||
|
||||
@@ -8,7 +8,8 @@ import { ZabbixNotImplemented } from './connectors/dbConnector';
|
||||
|
||||
const REQUESTS_TO_PROXYFY = [
|
||||
'getHistory', 'getTrend', 'getGroups', 'getHosts', 'getApps', 'getItems', 'getMacros', 'getItemsByIDs',
|
||||
'getEvents', 'getAlerts', 'getHostAlerts', 'getAcknowledges', 'getITService', 'getSLA', 'getVersion', 'getProxies'
|
||||
'getEvents', 'getAlerts', 'getHostAlerts', 'getAcknowledges', 'getITService', 'getSLA', 'getVersion', 'getProxies',
|
||||
'getEventAlerts'
|
||||
];
|
||||
|
||||
const REQUESTS_TO_CACHE = [
|
||||
@@ -17,7 +18,7 @@ const REQUESTS_TO_CACHE = [
|
||||
|
||||
const REQUESTS_TO_BIND = [
|
||||
'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts',
|
||||
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies'
|
||||
'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent', 'getProxies', 'getEventAlerts'
|
||||
];
|
||||
|
||||
export class Zabbix {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user