AzureMonitor: Avoid instantiating appInsights for AppInsights for gov cloud (#35772)

This commit is contained in:
Andres Martinez Gotor 2021-06-17 11:14:56 +02:00 committed by GitHub
parent fee3582fb1
commit 4ac2ed5de6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,14 +25,17 @@ import InsightsAnalyticsDatasource from './insights_analytics/insights_analytics
import { migrateMetricsDimensionFilters } from './query_ctrl'; import { migrateMetricsDimensionFilters } from './query_ctrl';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import AzureResourceGraphDatasource from './azure_resource_graph/azure_resource_graph_datasource'; import AzureResourceGraphDatasource from './azure_resource_graph/azure_resource_graph_datasource';
import { getAzureCloud } from './credentials';
export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDataSourceJsonData> { export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDataSourceJsonData> {
azureMonitorDatasource: AzureMonitorDatasource; azureMonitorDatasource: AzureMonitorDatasource;
appInsightsDatasource: AppInsightsDatasource;
azureLogAnalyticsDatasource: AzureLogAnalyticsDatasource; azureLogAnalyticsDatasource: AzureLogAnalyticsDatasource;
insightsAnalyticsDatasource: InsightsAnalyticsDatasource;
resourcePickerData: ResourcePickerData; resourcePickerData: ResourcePickerData;
azureResourceGraphDatasource: AzureResourceGraphDatasource; azureResourceGraphDatasource: AzureResourceGraphDatasource;
/** @deprecated */
appInsightsDatasource?: AppInsightsDatasource;
/** @deprecated */
insightsAnalyticsDatasource?: InsightsAnalyticsDatasource;
pseudoDatasource: Record<AzureQueryType, DataSourceWithBackend>; pseudoDatasource: Record<AzureQueryType, DataSourceWithBackend>;
optionsKey: Record<AzureQueryType, string>; optionsKey: Record<AzureQueryType, string>;
@ -43,18 +46,23 @@ export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDa
) { ) {
super(instanceSettings); super(instanceSettings);
this.azureMonitorDatasource = new AzureMonitorDatasource(instanceSettings); this.azureMonitorDatasource = new AzureMonitorDatasource(instanceSettings);
this.appInsightsDatasource = new AppInsightsDatasource(instanceSettings);
this.azureLogAnalyticsDatasource = new AzureLogAnalyticsDatasource(instanceSettings); this.azureLogAnalyticsDatasource = new AzureLogAnalyticsDatasource(instanceSettings);
this.insightsAnalyticsDatasource = new InsightsAnalyticsDatasource(instanceSettings);
this.azureResourceGraphDatasource = new AzureResourceGraphDatasource(instanceSettings); this.azureResourceGraphDatasource = new AzureResourceGraphDatasource(instanceSettings);
this.resourcePickerData = new ResourcePickerData(instanceSettings); this.resourcePickerData = new ResourcePickerData(instanceSettings);
const pseudoDatasource: any = {}; const pseudoDatasource: any = {};
pseudoDatasource[AzureQueryType.ApplicationInsights] = this.appInsightsDatasource;
pseudoDatasource[AzureQueryType.AzureMonitor] = this.azureMonitorDatasource; pseudoDatasource[AzureQueryType.AzureMonitor] = this.azureMonitorDatasource;
pseudoDatasource[AzureQueryType.InsightsAnalytics] = this.insightsAnalyticsDatasource;
pseudoDatasource[AzureQueryType.LogAnalytics] = this.azureLogAnalyticsDatasource; pseudoDatasource[AzureQueryType.LogAnalytics] = this.azureLogAnalyticsDatasource;
pseudoDatasource[AzureQueryType.AzureResourceGraph] = this.azureResourceGraphDatasource; pseudoDatasource[AzureQueryType.AzureResourceGraph] = this.azureResourceGraphDatasource;
const cloud = getAzureCloud(instanceSettings);
if (cloud === 'azuremonitor' || cloud === 'chinaazuremonitor') {
// AppInsights and InsightAnalytics are only supported for Public and Azure China clouds
this.appInsightsDatasource = new AppInsightsDatasource(instanceSettings);
this.insightsAnalyticsDatasource = new InsightsAnalyticsDatasource(instanceSettings);
pseudoDatasource[AzureQueryType.ApplicationInsights] = this.appInsightsDatasource;
pseudoDatasource[AzureQueryType.InsightsAnalytics] = this.insightsAnalyticsDatasource;
}
this.pseudoDatasource = pseudoDatasource; this.pseudoDatasource = pseudoDatasource;
const optionsKey: any = {}; const optionsKey: any = {};
@ -129,7 +137,7 @@ export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDa
return Promise.resolve([]); return Promise.resolve([]);
} }
const aiResult = this.appInsightsDatasource.metricFindQueryInternal(query); const aiResult = this.appInsightsDatasource?.metricFindQueryInternal(query);
if (aiResult) { if (aiResult) {
return aiResult; return aiResult;
} }
@ -153,7 +161,7 @@ export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDa
promises.push(this.azureMonitorDatasource.testDatasource()); promises.push(this.azureMonitorDatasource.testDatasource());
promises.push(this.azureLogAnalyticsDatasource.testDatasource()); promises.push(this.azureLogAnalyticsDatasource.testDatasource());
if (this.appInsightsDatasource.isConfigured()) { if (this.appInsightsDatasource?.isConfigured()) {
promises.push(this.appInsightsDatasource.testDatasource()); promises.push(this.appInsightsDatasource.testDatasource());
} }
@ -241,15 +249,15 @@ export default class Datasource extends DataSourceApi<AzureMonitorQuery, AzureDa
/* Application Insights API method */ /* Application Insights API method */
getAppInsightsMetricNames() { getAppInsightsMetricNames() {
return this.appInsightsDatasource.getMetricNames(); return this.appInsightsDatasource?.getMetricNames();
} }
getAppInsightsMetricMetadata(metricName: string) { getAppInsightsMetricMetadata(metricName: string) {
return this.appInsightsDatasource.getMetricMetadata(metricName); return this.appInsightsDatasource?.getMetricMetadata(metricName);
} }
getAppInsightsColumns(refId: string | number) { getAppInsightsColumns(refId: string | number) {
return this.appInsightsDatasource.logAnalyticsColumns[refId]; return this.appInsightsDatasource?.logAnalyticsColumns[refId];
} }
/*Azure Log Analytics */ /*Azure Log Analytics */