diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts index 0c05cf385b5..e716f7e1f94 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts @@ -18,7 +18,7 @@ import { import { getBackendSrv, getTemplateSrv, DataSourceWithBackend, FetchResponse } from '@grafana/runtime'; import { Observable, from } from 'rxjs'; import { mergeMap } from 'rxjs/operators'; -import { getAuthType, getAzureCloud, isLogAnalyticsSameAs } from '../credentials'; +import { getAuthType, getAzureCloud, isLogAnalyticsSameAs, getAzurePortalUrl } from '../credentials'; import { getLogAnalyticsApiRoute, getLogAnalyticsManagementApiRoute } from '../api/routes'; import { AzureLogAnalyticsMetadata } from '../types/logAnalyticsMetadata'; import { isGUIDish } from '../components/ResourcePicker/utils'; @@ -35,6 +35,7 @@ export default class AzureLogAnalyticsDatasource extends DataSourceWithBackend< > { url: string; baseUrl: string; + azurePortalUrl: string; applicationId: string; defaultSubscriptionId?: string; @@ -50,6 +51,7 @@ export default class AzureLogAnalyticsDatasource extends DataSourceWithBackend< const cloud = getAzureCloud(instanceSettings); const logAnalyticsRoute = getLogAnalyticsApiRoute(cloud); this.baseUrl = `/${logAnalyticsRoute}`; + this.azurePortalUrl = getAzurePortalUrl(cloud); const managementRoute = getLogAnalyticsManagementApiRoute(cloud); this.azureMonitorUrl = `/${managementRoute}/subscriptions`; @@ -191,7 +193,7 @@ export default class AzureLogAnalyticsDatasource extends DataSourceWithBackend< } const url = - `https://portal.azure.com/#blade/Microsoft_OperationsManagementSuite_Workspace/` + + `${this.azurePortalUrl}/#blade/Microsoft_OperationsManagementSuite_Workspace/` + `AnalyticsBlade/initiator/AnalyticsShareLinkToQuery/isQueryEditorVisible/true/scope/` + `%7B%22resources%22%3A%5B%7B%22resourceId%22%3A%22%2Fsubscriptions%2F${subscription}` + `%2Fresourcegroups%2F${details.resourceGroup}%2Fproviders%2Fmicrosoft.operationalinsights%2Fworkspaces%2F${details.workspace}` + diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts index 82d3285a968..3e6496572cf 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts @@ -26,7 +26,7 @@ import { from, Observable } from 'rxjs'; import { mergeMap } from 'rxjs/operators'; import { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv'; -import { getAuthType, getAzureCloud } from '../credentials'; +import { getAuthType, getAzureCloud, getAzurePortalUrl } from '../credentials'; import { getManagementApiRoute } from '../api/routes'; import { resourceTypeDisplayNames } from '../azureMetadata'; @@ -47,6 +47,7 @@ export default class AzureMonitorDatasource extends DataSourceWithBackend { diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts index 0486d7374ad..36523db7982 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts @@ -43,6 +43,21 @@ function getDefaultAzureCloud(): string { } } +export function getAzurePortalUrl(azureCloud: string): string { + switch (azureCloud) { + case 'azuremonitor': + return 'https://portal.azure.com'; + case 'chinaazuremonitor': + return 'https://portal.azure.cn'; + case 'govazuremonitor': + return 'https://portal.azure.us'; + case 'germanyazuremonitor': + return 'https://portal.microsoftazure.de'; + default: + throw new Error('The cloud not supported.'); + } +} + export function getAzureCloud(options: AzureDataSourceSettings | AzureDataSourceInstanceSettings): string { const authType = getAuthType(options); switch (authType) {