diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.test.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.test.ts index cb768c49ea3..4636532c5df 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.test.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.test.ts @@ -33,7 +33,7 @@ describe('AzureLogAnalyticsDatasource', () => { beforeEach(() => { ctx.instanceSettings = { - jsonData: { logAnalyticsSubscriptionId: 'xxx' }, + jsonData: { logAnalyticsSubscriptionId: 'xxx', azureLogAnalyticsSameAs: false }, url: 'http://azureloganalyticsapi', }; 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 b7a73820e25..4d01fcdb2cf 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 } from '../credentials'; +import { getAuthType, getAzureCloud, isLogAnalyticsSameAs } from '../credentials'; import { getLogAnalyticsApiRoute, getLogAnalyticsManagementApiRoute } from '../api/routes'; import { AzureLogAnalyticsMetadata } from '../types/logAnalyticsMetadata'; import { isGUIDish } from '../components/ResourcePicker/utils'; @@ -55,7 +55,13 @@ export default class AzureLogAnalyticsDatasource extends DataSourceWithBackend< this.azureMonitorUrl = `/${managementRoute}/subscriptions`; this.url = instanceSettings.url || ''; - this.defaultSubscriptionId = this.instanceSettings.jsonData.logAnalyticsSubscriptionId || ''; + + const sameAsMonitor = isLogAnalyticsSameAs(instanceSettings); + + this.defaultSubscriptionId = sameAsMonitor + ? instanceSettings.jsonData.subscriptionId + : instanceSettings.jsonData.logAnalyticsSubscriptionId; + this.defaultOrFirstWorkspace = this.instanceSettings.jsonData.logAnalyticsDefaultWorkspace || ''; } @@ -228,8 +234,14 @@ export default class AzureLogAnalyticsDatasource extends DataSourceWithBackend< metricFindQueryInternal(query: string): Promise { // workspaces() - Get workspaces in the default subscription const workspacesQuery = query.match(/^workspaces\(\)/i); - if (workspacesQuery && this.defaultSubscriptionId) { - return this.getWorkspaces(this.defaultSubscriptionId); + if (workspacesQuery) { + if (this.defaultSubscriptionId) { + return this.getWorkspaces(this.defaultSubscriptionId); + } else { + throw new Error( + 'No subscription ID. Specify a default subscription ID in the data source config to use workspaces() without a subscription ID' + ); + } } // workspaces("abc-def-etc") - Get workspaces a specified subscription 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 6b9d3379f0b..0486d7374ad 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/credentials.ts @@ -74,7 +74,7 @@ function getLogAnalyticsSecret(options: AzureDataSourceSettings): undefined | st } } -function isLogAnalyticsSameAs(options: AzureDataSourceSettings | AzureDataSourceInstanceSettings): boolean { +export function isLogAnalyticsSameAs(options: AzureDataSourceSettings | AzureDataSourceInstanceSettings): boolean { return typeof options.jsonData.azureLogAnalyticsSameAs !== 'boolean' || options.jsonData.azureLogAnalyticsSameAs; }