From f6c18cf78886d1edd47a8b1e49c130fe009a2c20 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Thu, 6 Sep 2018 10:30:13 +0200 Subject: [PATCH] Stackdriver: Fixed error message from google resource manager --- .../datasource/stackdriver/config_ctrl.ts | 34 ++++++++++++++++--- .../stackdriver/partials/config.html | 27 +++++++++------ 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/public/app/plugins/datasource/stackdriver/config_ctrl.ts b/public/app/plugins/datasource/stackdriver/config_ctrl.ts index a919a0fba77..6a22c6b96ea 100644 --- a/public/app/plugins/datasource/stackdriver/config_ctrl.ts +++ b/public/app/plugins/datasource/stackdriver/config_ctrl.ts @@ -6,11 +6,12 @@ export class StackdriverConfigCtrl { validationErrors: string[] = []; inputDataValid: boolean; defaultProject: string; + projectsError: string; projects: string[]; loadingProjects: boolean; /** @ngInject */ - constructor($scope, datasourceSrv) { + constructor(private $scope, datasourceSrv) { this.datasourceSrv = datasourceSrv; this.current.jsonData = this.current.jsonData || {}; this.current.secureJsonData = this.current.secureJsonData || {}; @@ -70,16 +71,39 @@ export class StackdriverConfigCtrl { this.validationErrors = []; this.inputDataValid = false; this.jsonText = ''; + this.loadingProjects = false; + this.projectsError = ''; } async displayProjects() { if (this.projects.length === 0) { - this.loadingProjects = true; - const ds = await this.datasourceSrv.loadDatasource(this.current.name); try { - this.projects = await ds.doRequest(`/cloudresourcemanager/v1/projects`); + this.loadingProjects = true; + const ds = await this.datasourceSrv.loadDatasource(this.current.name); + const response = await ds.doRequest(`/cloudresourcemanager/v1/projects`); + this.$scope.$apply(() => { + this.projects = response.data.projects.map(p => ({ id: p.projectId, name: p.name })); + }); + console.log(this.projects); } catch (error) { - console.log(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'; + } + this.$scope.$apply(() => { + this.loadingProjects = false; + this.projectsError = message; + }); } } } diff --git a/public/app/plugins/datasource/stackdriver/partials/config.html b/public/app/plugins/datasource/stackdriver/partials/config.html index 46bd7a3d6af..dad86dd06c8 100644 --- a/public/app/plugins/datasource/stackdriver/partials/config.html +++ b/public/app/plugins/datasource/stackdriver/partials/config.html @@ -11,16 +11,6 @@
-
- Default Projects -
- -
-
- - Fetching history list… -
-
{{valError}} @@ -33,4 +23,21 @@
Reset form
+
+
+
+ Default Project +
+ +
+
+ + Fetching projects...… +
+
+
+ + {{ctrl.projectsError}} +
+
\ No newline at end of file