Better error handling

This commit is contained in:
Benjamin Drieu 2021-11-18 23:16:59 +01:00
parent 6230b03cff
commit 4ce284d782
4 changed files with 42 additions and 24 deletions

View File

@ -244,6 +244,12 @@ class Indicator extends PanelMenu.Button {
this.initStatus ( ); // Specialize ! this.initStatus ( ); // Specialize !
this._box.remove_all_children(); this._box.remove_all_children();
if ( serverLogic.error )
{
this._box.add_child ( new St.Label ( { style_class: 'monito-network-error', text: serverLogic.error } ) );
return;
}
let headerBox = new St.BoxLayout({ let headerBox = new St.BoxLayout({
style_class: 'monito-service-line', style_class: 'monito-service-line',

View File

@ -69,17 +69,21 @@ class Icinga {
{ {
log ( '>>> error: ' + message.reason_phrase ); log ( '>>> error: ' + message.reason_phrase );
Main.notify ( 'Monito: ' + name, message.reason_phrase ); Main.notify ( 'Monito: ' + name, message.reason_phrase );
return; this.status = null;
this.error = message.reason_phrase;
} }
else
let json = JSON.parse(message.response_body.data); {
this.status = json.status; let json = JSON.parse(message.response_body.data);
this.status = json.status;
this.error = null;
}
extension.refreshUI ( this ); extension.refreshUI ( this );
} }
) )
); );
return true; return this.status != null;
} }
catch (e) { catch (e) {
Main.notify(_('Zbeu!')); Main.notify(_('Zbeu!'));

View File

@ -74,35 +74,38 @@ class Icinga2 {
handleMessage ( _httpSession, message ) handleMessage ( _httpSession, message )
{ {
this.status = { };
this.status.service_status = [ ];
if ( message.status_code != Soup.Status.OK ) if ( message.status_code != Soup.Status.OK )
{ {
log ( '>>> error: ' + message.reason_phrase ); log ( '>>> error: ' + message.reason_phrase );
Main.notifyError ( 'Monito: ' + this.name, Main.notifyError ( 'Monito: ' + this.name,
'URL: ' + this.urlcgi + "\n" + 'URL: ' + this.urlcgi + "\n" +
message.status_code + ': ' + message.reason_phrase ); message.status_code + ': ' + message.reason_phrase );
return; this.error = message.reason_phrase;
} }
else
let json = JSON.parse(message.response_body.data);
let _statuses = [ 'OK', 'WARNING', 'CRITICAL', 'UNKNOWN' ];
this.status = { };
this.status.service_status = [ ];
for ( var entry of json )
{ {
this.status.service_status.push ( { let json = JSON.parse(message.response_body.data);
status: _statuses [ entry.service_state ], let _statuses = [ 'OK', 'WARNING', 'CRITICAL', 'UNKNOWN' ];
host_name: entry.host_name,
service_display_name: entry.service_display_name, for ( var entry of json )
attempts: entry.service_attempt, {
status_information: entry.service_output, this.status.service_status.push ( {
last_check: new Date ( parseInt(entry.service_last_state_change) * 1000 ) . toString(), status: _statuses [ entry.service_state ],
} ); host_name: entry.host_name,
service_display_name: entry.service_display_name,
attempts: entry.service_attempt,
status_information: entry.service_output,
last_check: new Date ( parseInt(entry.service_last_state_change) * 1000 ) . toString(),
} );
}
this.error = null;
} }
this.extension.refreshUI ( this ); this.extension.refreshUI ( this );
return true; return this.status != { };
} }
} }

View File

@ -84,6 +84,11 @@
margin: 2px; margin: 2px;
} }
.monito-network-error {
font-size: 150%;
font-weight: bold;
}
.monito-button-icon { .monito-button-icon {
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;