From 404260b8a0e897a7851f4309f93eb40bc3d4ec04 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Mon, 31 Aug 2020 12:32:26 -0700 Subject: [PATCH] Arc dashboard fixes (#12021) * Arc dashboard fixes * Bump versions --- extensions/arc/package.json | 2 +- extensions/arc/src/localizedConstants.ts | 6 +-- .../controller/controllerDashboard.ts | 2 +- .../src/ui/dashboards/miaa/miaaDashboard.ts | 2 +- .../miaa/miaaDashboardOverviewPage.ts | 42 ++++++++++--------- .../dashboards/postgres/postgresDashboard.ts | 2 +- .../postgres/postgresOverviewPage.ts | 2 +- .../src/ui/tree/azureArcTreeDataProvider.ts | 3 +- .../arc/src/ui/tree/controllerTreeNode.ts | 3 ++ extensions/azdata/package.json | 2 +- 10 files changed, 36 insertions(+), 30 deletions(-) diff --git a/extensions/arc/package.json b/extensions/arc/package.json index ff75e39263..60afd38820 100644 --- a/extensions/arc/package.json +++ b/extensions/arc/package.json @@ -2,7 +2,7 @@ "name": "arc", "displayName": "%arc.displayName%", "description": "%arc.description%", - "version": "0.3.0", + "version": "0.3.1", "publisher": "Microsoft", "preview": true, "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt", diff --git a/extensions/arc/src/localizedConstants.ts b/extensions/arc/src/localizedConstants.ts index 1175f08c39..0a4e0d23c1 100644 --- a/extensions/arc/src/localizedConstants.ts +++ b/extensions/arc/src/localizedConstants.ts @@ -8,9 +8,9 @@ import { getErrorMessage } from './common/utils'; const localize = nls.loadMessageBundle(); export const arcDeploymentDeprecation = localize('arc.arcDeploymentDeprecation', "The Arc Deployment extension has been replaced by the Arc extension and has been uninstalled."); -export const arcControllerDashboard = localize('arc.controllerDashboard', "Azure Arc Controller Dashboard (Preview)"); -export const miaaDashboard = localize('arc.miaaDashboard', "Managed Instance Dashboard (Preview)"); -export const postgresDashboard = localize('arc.postgresDashboard', "Postgres Dashboard (Preview)"); +export function arcControllerDashboard(name: string): string { return localize('arc.controllerDashboard', "Azure Arc Controller Dashboard (Preview) - {0}", name); } +export function miaaDashboard(name: string): string { return localize('arc.miaaDashboard', "Managed Instance Dashboard (Preview) - {0}", name); } +export function postgresDashboard(name: string): string { return localize('arc.postgresDashboard', "Postgres Dashboard (Preview) - {0}", name); } export const dataControllersType = localize('arc.dataControllersType', "Azure Arc Data Controller"); export const pgSqlType = localize('arc.pgSqlType', "PostgreSQL Server group - Azure Arc"); diff --git a/extensions/arc/src/ui/dashboards/controller/controllerDashboard.ts b/extensions/arc/src/ui/dashboards/controller/controllerDashboard.ts index 9e332f4bd7..5945b6df98 100644 --- a/extensions/arc/src/ui/dashboards/controller/controllerDashboard.ts +++ b/extensions/arc/src/ui/dashboards/controller/controllerDashboard.ts @@ -12,7 +12,7 @@ import * as loc from '../../../localizedConstants'; export class ControllerDashboard extends Dashboard { constructor(private _controllerModel: ControllerModel) { - super(loc.arcControllerDashboard); + super(loc.arcControllerDashboard(_controllerModel.info.name)); } public async showDashboard(): Promise { diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaDashboard.ts b/extensions/arc/src/ui/dashboards/miaa/miaaDashboard.ts index a85d84ade5..3a7a24b044 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaDashboard.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaDashboard.ts @@ -14,7 +14,7 @@ import { MiaaModel } from '../../../models/miaaModel'; export class MiaaDashboard extends Dashboard { constructor(private _controllerModel: ControllerModel, private _miaaModel: MiaaModel) { - super(loc.miaaDashboard); + super(loc.miaaDashboard(_miaaModel.info.name)); } public async showDashboard(): Promise { diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts index 8dad524b36..7b9ebfd1c0 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts @@ -50,7 +50,7 @@ export class MiaaDashboardOverviewPage extends DashboardPage { this._instanceProperties.miaaAdmin = this._miaaModel.username || this._instanceProperties.miaaAdmin; this.disposables.push( this._controllerModel.onRegistrationsUpdated(() => this.handleRegistrationsUpdated()), - this._controllerModel.onEndpointsUpdated(() => this.eventuallyRunOnInitialized(() => this.handleEndpointsUpdated())), + this._controllerModel.onEndpointsUpdated(() => this.eventuallyRunOnInitialized(() => this.refreshDashboardLinks())), this._miaaModel.onConfigUpdated(() => this.eventuallyRunOnInitialized(() => this.handleMiaaConfigUpdated())), this._miaaModel.onDatabasesUpdated(() => this.eventuallyRunOnInitialized(() => this.handleDatabasesUpdated())) ); @@ -114,7 +114,7 @@ export class MiaaDashboardOverviewPage extends DashboardPage { // Update loaded components with data this.handleRegistrationsUpdated(); this.handleMiaaConfigUpdated(); - this.handleEndpointsUpdated(); + this.refreshDashboardLinks(); this.handleDatabasesUpdated(); // Assign the loading component after it has data @@ -277,23 +277,7 @@ export class MiaaDashboardOverviewPage extends DashboardPage { } this.refreshDisplayedProperties(); - } - - private handleEndpointsUpdated(): void { - const kibanaEndpoint = this._controllerModel.getEndpoint(Endpoints.logsui); - const kibanaQuery = `kubernetes_namespace:"${this._miaaModel.config?.metadata.namespace}" and instance_name :"${this._miaaModel.config?.metadata.name}"`; - const kibanaUrl = kibanaEndpoint ? `${kibanaEndpoint.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))` : ''; - this._kibanaLink.label = kibanaUrl; - this._kibanaLink.url = kibanaUrl; - - const grafanaEndpoint = this._controllerModel.getEndpoint(Endpoints.metricsui); - const grafanaQuery = `var-hostname=${this._miaaModel.info.name}-0`; - const grafanaUrl = grafanaEndpoint ? `${grafanaEndpoint.endpoint}/d/wZx3OUdmz/azure-sql-db-managed-instance-metrics?${grafanaQuery}` : ''; - this._grafanaLink.label = grafanaUrl; - this._grafanaLink.url = grafanaUrl; - - this._kibanaLoading!.loading = !this._controllerModel.endpointsLastUpdated; - this._grafanaLoading!.loading = !this._controllerModel.endpointsLastUpdated; + this.refreshDashboardLinks(); } private handleDatabasesUpdated(): void { @@ -345,4 +329,24 @@ export class MiaaDashboardOverviewPage extends DashboardPage { !this._miaaModel.configLastUpdated && !this._miaaModel.databasesLastUpdated; } + + private refreshDashboardLinks(): void { + const kibanaEndpoint = this._controllerModel.getEndpoint(Endpoints.logsui); + if (kibanaEndpoint && this._miaaModel.config) { + const kibanaQuery = `kubernetes_namespace:"${this._miaaModel.config.metadata.namespace}" and custom_resource_name :"${this._miaaModel.config.metadata.name}"`; + const kibanaUrl = `${kibanaEndpoint.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))`; + this._kibanaLink.label = kibanaUrl; + this._kibanaLink.url = kibanaUrl; + this._kibanaLoading!.loading = false; + } + + const grafanaEndpoint = this._controllerModel.getEndpoint(Endpoints.metricsui); + if (grafanaEndpoint && this._miaaModel.config) { + const grafanaQuery = `var-hostname=${this._miaaModel.info.name}-0`; + const grafanaUrl = grafanaEndpoint ? `${grafanaEndpoint.endpoint}/d/40q72HnGk/sql-managed-instance-metrics?${grafanaQuery}` : ''; + this._grafanaLink.label = grafanaUrl; + this._grafanaLink.url = grafanaUrl; + this._grafanaLoading!.loading = false; + } + } } diff --git a/extensions/arc/src/ui/dashboards/postgres/postgresDashboard.ts b/extensions/arc/src/ui/dashboards/postgres/postgresDashboard.ts index 38e5d48b95..9951e99a8c 100644 --- a/extensions/arc/src/ui/dashboards/postgres/postgresDashboard.ts +++ b/extensions/arc/src/ui/dashboards/postgres/postgresDashboard.ts @@ -18,7 +18,7 @@ import { PostgresResourceHealthPage } from './postgresResourceHealthPage'; export class PostgresDashboard extends Dashboard { constructor(private _context: vscode.ExtensionContext, private _controllerModel: ControllerModel, private _postgresModel: PostgresModel) { - super(loc.postgresDashboard); + super(loc.postgresDashboard(_postgresModel.name)); } public async showDashboard(): Promise { diff --git a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts index 9748475ca5..a3d501cc73 100644 --- a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts @@ -317,7 +317,7 @@ export class PostgresOverviewPage extends DashboardPage { } private getKibanaLink(): string { - const kibanaQuery = `kubernetes_namespace:"${this._postgresModel.namespace}" and cluster_name:"${this._postgresModel.name}"`; + const kibanaQuery = `kubernetes_namespace:"${this._postgresModel.namespace}" and custom_resource_name:"${this._postgresModel.name}"`; return `${this._controllerModel.getEndpoint(Endpoints.logsui)?.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))`; } diff --git a/extensions/arc/src/ui/tree/azureArcTreeDataProvider.ts b/extensions/arc/src/ui/tree/azureArcTreeDataProvider.ts index 5a91bc1b4e..134c75f6ea 100644 --- a/extensions/arc/src/ui/tree/azureArcTreeDataProvider.ts +++ b/extensions/arc/src/ui/tree/azureArcTreeDataProvider.ts @@ -132,11 +132,10 @@ export class AzureArcTreeDataProvider implements vscode.TreeDataProvider { this.label = model.label; }); + model.onRegistrationsUpdated(registrations => { + this.updateChildren(registrations); + }); } public async getChildren(): Promise { diff --git a/extensions/azdata/package.json b/extensions/azdata/package.json index 91160f23e6..4c42892853 100644 --- a/extensions/azdata/package.json +++ b/extensions/azdata/package.json @@ -2,7 +2,7 @@ "name": "azdata", "displayName": "%azdata.displayName%", "description": "%azdata.description%", - "version": "0.1.0", + "version": "0.1.1", "publisher": "Microsoft", "preview": true, "license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",