diff --git a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts index 27fe13add8..4bf3ad19ae 100644 --- a/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/miaa/miaaDashboardOverviewPage.ts @@ -8,7 +8,7 @@ import * as azdataExt from 'azdata-ext'; import * as azurecore from 'azurecore'; import * as vscode from 'vscode'; import { getDatabaseStateDisplayText, promptForInstanceDeletion } from '../../../common/utils'; -import { cssStyles, Endpoints, IconPathHelper, miaaTroubleshootDocsUrl } from '../../../constants'; +import { cssStyles, IconPathHelper, miaaTroubleshootDocsUrl } from '../../../constants'; import * as loc from '../../../localizedConstants'; import { ControllerModel } from '../../../models/controllerModel'; import { MiaaModel } from '../../../models/miaaModel'; @@ -352,19 +352,13 @@ export class MiaaDashboardOverviewPage extends DashboardPage { } 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}'))`; + if (this._miaaModel.config) { + const kibanaUrl = this._miaaModel.config.status.logSearchDashboard ?? ''; 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}` : ''; + const grafanaUrl = this._miaaModel.config.status.metricsDashboard ?? ''; this._grafanaLink.label = grafanaUrl; this._grafanaLink.url = grafanaUrl; this._grafanaLoading!.loading = false; diff --git a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts index f1f742d49f..d293640215 100644 --- a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import * as azdata from 'azdata'; import * as azdataExt from 'azdata-ext'; import * as loc from '../../../localizedConstants'; -import { IconPathHelper, cssStyles, Endpoints } from '../../../constants'; +import { IconPathHelper, cssStyles } from '../../../constants'; import { DashboardPage } from '../../components/dashboardPage'; import { ControllerModel } from '../../../models/controllerModel'; import { PostgresModel } from '../../../models/postgresModel'; @@ -16,13 +16,13 @@ import { ResourceType } from 'arc'; export class PostgresOverviewPage extends DashboardPage { - private propertiesLoading?: azdata.LoadingComponent; - private kibanaLoading?: azdata.LoadingComponent; - private grafanaLoading?: azdata.LoadingComponent; + private propertiesLoading!: azdata.LoadingComponent; + private kibanaLoading!: azdata.LoadingComponent; + private grafanaLoading!: azdata.LoadingComponent; - private properties?: azdata.PropertiesContainerComponent; - private kibanaLink?: azdata.HyperlinkComponent; - private grafanaLink?: azdata.HyperlinkComponent; + private properties!: azdata.PropertiesContainerComponent; + private kibanaLink!: azdata.HyperlinkComponent; + private grafanaLink!: azdata.HyperlinkComponent; private readonly _azdataApi: azdataExt.IExtension; @@ -31,7 +31,6 @@ export class PostgresOverviewPage extends DashboardPage { this._azdataApi = vscode.extensions.getExtension(azdataExt.extension.name)?.exports; this.disposables.push( - this._controllerModel.onEndpointsUpdated(() => this.eventuallyRunOnInitialized(() => this.handleEndpointsUpdated())), this._controllerModel.onRegistrationsUpdated(() => this.eventuallyRunOnInitialized(() => this.handleRegistrationsUpdated())), this._postgresModel.onConfigUpdated(() => this.eventuallyRunOnInitialized(() => this.handleConfigUpdated()))); } @@ -74,29 +73,26 @@ export class PostgresOverviewPage extends DashboardPage { CSSStyles: titleCSS }).component()); - this.kibanaLink = this.modelView.modelBuilder.hyperlink() - .withProperties({ - label: this.getKibanaLink(), - url: this.getKibanaLink() - }).component(); + this.kibanaLink = this.modelView.modelBuilder.hyperlink().component(); - this.grafanaLink = this.modelView.modelBuilder.hyperlink() - .withProperties({ - label: this.getGrafanaLink(), - url: this.getGrafanaLink() - }).component(); + this.grafanaLink = this.modelView.modelBuilder.hyperlink().component(); this.kibanaLoading = this.modelView.modelBuilder.loadingComponent() - .withItem(this.kibanaLink) - .withProperties({ - loading: !this._controllerModel.endpointsLastUpdated - }).component(); + .withProperties( + { loading: !this._postgresModel?.configLastUpdated } + ) + .component(); this.grafanaLoading = this.modelView.modelBuilder.loadingComponent() - .withItem(this.grafanaLink) - .withProperties({ - loading: !this._controllerModel.endpointsLastUpdated - }).component(); + .withProperties( + { loading: !this._postgresModel?.configLastUpdated } + ) + .component(); + + this.refreshDashboardLinks(); + + this.kibanaLoading.component = this.kibanaLink; + this.grafanaLoading.component = this.grafanaLink; const endpointsTable = this.modelView.modelBuilder.declarativeTable().withProperties({ width: '100%', @@ -271,27 +267,18 @@ export class PostgresOverviewPage extends DashboardPage { ]; } - private getKibanaLink(): string { - const namespace = this._postgresModel.config?.metadata.namespace; - const kibanaQuery = `kubernetes_namespace:"${namespace}" and custom_resource_name:"${this._postgresModel.info.name}"`; - return `${this._controllerModel.getEndpoint(Endpoints.logsui)?.endpoint}/app/kibana#/discover?_a=(query:(language:kuery,query:'${kibanaQuery}'))`; + private refreshDashboardLinks(): void { + if (this._postgresModel.config) { + const kibanaUrl = this._postgresModel.config.status.logSearchDashboard ?? ''; + this.kibanaLink.label = kibanaUrl; + this.kibanaLink.url = kibanaUrl; + this.kibanaLoading.loading = false; - } - - private getGrafanaLink(): string { - const namespace = this._postgresModel.config?.metadata.namespace; - const grafanaQuery = `var-Namespace=${namespace}&var-Name=${this._postgresModel.info.name}`; - return `${this._controllerModel.getEndpoint(Endpoints.metricsui)?.endpoint}/d/postgres-metrics?${grafanaQuery}`; - } - - private handleEndpointsUpdated() { - this.kibanaLink!.label = this.getKibanaLink(); - this.kibanaLink!.url = this.getKibanaLink(); - this.kibanaLoading!.loading = false; - - this.grafanaLink!.label = this.getGrafanaLink(); - this.grafanaLink!.url = this.getGrafanaLink(); - this.grafanaLoading!.loading = false; + const grafanaUrl = this._postgresModel.config.status.metricsDashboard ?? ''; + this.grafanaLink.label = grafanaUrl; + this.grafanaLink.url = grafanaUrl; + this.grafanaLoading.loading = false; + } } private handleRegistrationsUpdated() { @@ -302,5 +289,6 @@ export class PostgresOverviewPage extends DashboardPage { private handleConfigUpdated() { this.properties!.propertyItems = this.getProperties(); this.propertiesLoading!.loading = false; + this.refreshDashboardLinks(); } } diff --git a/extensions/azdata/src/typings/azdata-ext.d.ts b/extensions/azdata/src/typings/azdata-ext.d.ts index 035734aaa1..32ec6171e9 100644 --- a/extensions/azdata/src/typings/azdata-ext.d.ts +++ b/extensions/azdata/src/typings/azdata-ext.d.ts @@ -143,7 +143,9 @@ declare module 'azdata-ext' { }, status: { readyReplicas: string, // "1/1" - state: string, // "Ready" + state: string, // "Ready", + logSearchDashboard: string, // https://127.0.0.1:30777/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:miaa1')) + metricsDashboard: string, // https://127.0.0.1:30777/grafana/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=miaa1-0 externalEndpoint?: string // "10.91.86.39:32718" } } @@ -208,7 +210,9 @@ declare module 'azdata-ext' { status: { externalEndpoint: string, // "10.130.12.136:26630" readyPods: string, // "1/1", - state: string // "Ready" + state: string, // "Ready" + logSearchDashboard: string, // https://127.0.0.1:30777/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:pg1')) + metricsDashboard: string, // https://127.0.0.1:30777/grafana/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=pg1 } }