From eb39f4bfe1a45bc4fb9b123eb6672766fb76044e Mon Sep 17 00:00:00 2001 From: Adam Simpson Date: Tue, 11 Jul 2023 15:22:51 -0400 Subject: [PATCH] AzureMonitor: Fix ResourcePicker hanging Removed location fetching for every subscription. Fixes #70523 --- .../components/ResourcePicker/NestedRow.tsx | 2 +- .../components/ResourcePicker/types.ts | 1 - .../resourcePicker/resourcePickerData.test.ts | 8 +++----- .../resourcePicker/resourcePickerData.ts | 18 +++--------------- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/NestedRow.tsx b/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/NestedRow.tsx index e845b59606d..1fe2c717dd6 100644 --- a/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/NestedRow.tsx +++ b/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/NestedRow.tsx @@ -78,7 +78,7 @@ const NestedRow = ({ {row.typeLabel} - {row.locationDisplayName ?? '-'} + {row.location ?? '-'} {isOpen && diff --git a/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/types.ts b/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/types.ts index d6022dd8eaa..7183f427bf9 100644 --- a/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/types.ts +++ b/public/app/plugins/datasource/azuremonitor/components/ResourcePicker/types.ts @@ -12,7 +12,6 @@ export interface ResourceRow { name: string; type: ResourceRowType; typeLabel: string; - locationDisplayName?: string; location?: string; children?: ResourceRowGroup; } diff --git a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts index e7d42620d66..298dd0b80d8 100644 --- a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts +++ b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts @@ -34,8 +34,6 @@ const createResourcePickerData = (responses: AzureGraphResponse[]) => { resourcePickerData.postResource = postResource; const locationsMap = mockGetValidLocations(); const getLocations = jest.spyOn(resourcePickerData, 'getLocations').mockResolvedValue(locationsMap); - resourcePickerData.locationsMap = locationsMap; - resourcePickerData.locations = Array.from(locationsMap.values()).map((location) => `"${location.name}"`); return { resourcePickerData, postResource, mockDatasource, getValidLocations: getLocations }; }; @@ -252,7 +250,7 @@ describe('AzureMonitor resourcePickerData', () => { name: 'web-server', type: 'Resource', location: 'northeurope', - locationDisplayName: 'North Europe', + locationDisplayName: 'northeurope', resourceGroupName: 'dev', typeLabel: 'Microsoft.Compute/virtualMachines', uri: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', @@ -329,7 +327,7 @@ describe('AzureMonitor resourcePickerData', () => { id: 'vmname', name: 'vmName', type: 'Resource', - location: 'North Europe', + location: 'northeurope', resourceGroupName: 'rgName', typeLabel: 'Virtual machines', uri: '/subscriptions/subId/resourceGroups/rgName/providers/Microsoft.Compute/virtualMachines/vmname', @@ -359,7 +357,7 @@ describe('AzureMonitor resourcePickerData', () => { id: 'rgName', name: 'rgName', type: 'ResourceGroup', - location: 'North Europe', + location: 'northeurope', resourceGroupName: 'rgName', typeLabel: 'Resource groups', uri: '/subscriptions/subId/resourceGroups/rgName', diff --git a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts index 068957621a7..772ad52d88f 100644 --- a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts +++ b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts @@ -39,8 +39,6 @@ export default class ResourcePickerData extends DataSourceWithBackend = new Map(); - locations: string[] = []; constructor( instanceSettings: DataSourceInstanceSettings, @@ -57,11 +55,6 @@ export default class ResourcePickerData extends DataSourceWithBackend { const subscriptions = await this.getSubscriptions(); - if (this.locationsMap.size === 0) { - this.locationsMap = await this.getLocations(subscriptions); - this.locations = Array.from(this.locationsMap.values()).map((location) => `"${location.name}"`); - } - if (!currentSelection) { return subscriptions; } @@ -140,7 +133,7 @@ export default class ResourcePickerData extends DataSourceWithBackend { - if (!this.locations) { - return []; - } - const { data: response } = await this.makeResourceGraphRequest(` resources | where id hasprefix "${resourceGroupId}" - ${await this.filterByType(type)} and location in (${this.locations}) + ${await this.filterByType(type)} `); return response.map((item) => { @@ -265,7 +254,7 @@ export default class ResourcePickerData extends DataSourceWithBackend