From a56c5841e907fddbabdbf372bedb94d840d15272 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Thu, 11 Oct 2018 09:51:44 +0200 Subject: [PATCH] stackdriver: improve error handling in the datasource --- .../datasource/stackdriver/datasource.ts | 49 ++++++++----------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/public/app/plugins/datasource/stackdriver/datasource.ts b/public/app/plugins/datasource/stackdriver/datasource.ts index 245ebc036cd..57f8e00ac5c 100644 --- a/public/app/plugins/datasource/stackdriver/datasource.ts +++ b/public/app/plugins/datasource/stackdriver/datasource.ts @@ -198,25 +198,29 @@ export default class StackdriverDatasource { title: 'Success', }; } catch (error) { - let message = 'Stackdriver: '; - message += error.statusText ? error.statusText + ': ' : ''; - if (error.data && error.data.error) { - try { - const res = JSON.parse(error.data.error); - message += res.error.code + '. ' + res.error.message; - } catch (err) { - message += error.data.error; - } - } else { - message += 'Cannot connect to Stackdriver API'; - } return { status: 'error', - message: message, + message: this.formatStackdriverError(error), }; } } + formatStackdriverError(error) { + let message = 'Stackdriver: '; + message += error.statusText ? error.statusText + ': ' : ''; + if (error.data && error.data.error) { + try { + const res = JSON.parse(error.data.error); + message += res.error.code + '. ' + res.error.message; + } catch (err) { + message += error.data.error; + } + } else { + message += 'Cannot connect to Stackdriver API'; + } + return message; + } + async getDefaultProject() { try { if (!this.projectName) { @@ -239,21 +243,7 @@ export default class StackdriverDatasource { return this.projectName; } } catch (error) { - let message = 'Projects cannot be fetched: '; - message += error.statusText ? error.statusText + ': ' : ''; - if (error && error.data && error.data.error && error.data.error.message) { - if (error.data.error.code === 403) { - message += ` - A list of projects could not be fetched from the Google Cloud Resource Manager API. - You might need to enable it first: - https://console.developers.google.com/apis/library/cloudresourcemanager.googleapis.com`; - } else { - message += error.data.error.code + '. ' + error.data.error.message; - } - } else { - message += 'Cannot connect to Stackdriver API'; - } - appEvents.emit('ds-request-error', message); + appEvents.emit('ds-request-error', this.formatStackdriverError(error)); return ''; } } @@ -274,7 +264,8 @@ export default class StackdriverDatasource { return metrics; } catch (error) { - console.log(error); + appEvents.emit('ds-request-error', this.formatStackdriverError(error)); + return []; } }