From a3f50904cef680aa278497d97721ff4e0de338b2 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 18 Oct 2018 17:18:12 +0300 Subject: [PATCH] triggers panel: fix error handling --- .../zabbix_api/zabbixAPIConnector.js | 4 +-- src/datasource-zabbix/zabbix/zabbix.js | 2 +- src/panel-triggers/triggers_panel_ctrl.js | 36 ++++++++++--------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js index 8a992c2..7a1ef93 100644 --- a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js +++ b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js @@ -47,9 +47,7 @@ export class ZabbixAPIConnector { .then(() => this.request(method, params)); } } else { - // Handle API errors - let message = error.data ? error.data : error.statusText; - return Promise.reject(message); + return Promise.reject(error); } }); } diff --git a/src/datasource-zabbix/zabbix/zabbix.js b/src/datasource-zabbix/zabbix/zabbix.js index 5afed8c..a1c300b 100644 --- a/src/datasource-zabbix/zabbix/zabbix.js +++ b/src/datasource-zabbix/zabbix/zabbix.js @@ -17,7 +17,7 @@ const REQUESTS_TO_CACHE = [ const REQUESTS_TO_BIND = [ 'getHistory', 'getTrend', 'getMacros', 'getItemsByIDs', 'getEvents', 'getAlerts', 'getHostAlerts', - 'getAcknowledges', 'getITService', 'getVersion', 'login' + 'getAcknowledges', 'getITService', 'getVersion', 'login', 'acknowledgeEvent' ]; export class Zabbix { diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index d10f754..728fe33 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -102,6 +102,23 @@ export class TriggerPanelCtrl extends PanelCtrl { this.events.on('refresh', this.onRefresh.bind(this)); } + setPanelError(err, defaultError) { + const defaultErrorMessage = defaultError || "Request Error"; + this.inspector = { error: err }; + this.error = err.message || defaultErrorMessage; + if (err.data) { + if (err.data.message) { + this.error = err.data.message; + } + if (err.data.error) { + this.error = err.data.error; + } + } + + this.events.emit('data-error', err); + console.log('Panel data error:', err); + } + initDatasources() { let promises = _.map(this.panel.datasources, (ds) => { // Load datasource @@ -161,18 +178,7 @@ export class TriggerPanelCtrl extends PanelCtrl { return; } - this.error = err.message || "Request Error"; - if (err.data) { - if (err.data.message) { - this.error = err.data.message; - } - if (err.data.error) { - this.error = err.data.error; - } - } - - this.events.emit('data-error', err); - console.log('Panel data error:', err); + this.setPanelError(err); }); } @@ -459,16 +465,14 @@ export class TriggerPanelCtrl extends PanelCtrl { return Promise.reject({message: 'You have no permissions to acknowledge events.'}); } if (eventid) { - return datasource.zabbix.zabbixAPI.acknowledgeEvent(eventid, ack_message); + return datasource.zabbix.acknowledgeEvent(eventid, ack_message); } else { return Promise.reject({message: 'Trigger has no events. Nothing to acknowledge.'}); } }) .then(this.onRefresh.bind(this)) .catch((err) => { - this.error = err.message || "Acknowledge Error"; - this.events.emit('data-error', err); - console.log('Panel data error:', err); + this.setPanelError(err); }); }