From dc145a2a25c19d7f6cae7c845b30f7acb917e004 Mon Sep 17 00:00:00 2001 From: Isabella Siu Date: Wed, 24 Nov 2021 15:06:14 -0500 Subject: [PATCH] =?UTF-8?q?AzureMonitor:=20resourcePicker=20should=20show?= =?UTF-8?q?=20resource=20in=20the=20correct=20subs=E2=80=A6=20(#42170)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__mocks__/argResourcePickerResponse.ts | 27 +++++++++------ .../resourcePicker/resourcePickerData.test.ts | 34 +++++++++++-------- .../resourcePicker/resourcePickerData.ts | 4 +-- 3 files changed, 38 insertions(+), 27 deletions(-) diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/__mocks__/argResourcePickerResponse.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/__mocks__/argResourcePickerResponse.ts index a6c3a473e9d..4a95336d92b 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/__mocks__/argResourcePickerResponse.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/__mocks__/argResourcePickerResponse.ts @@ -10,16 +10,23 @@ export const createMockARGResourceContainersResponse = (): AzureGraphResponse => ({ data: [ { - id: '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', + id: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', name: 'web-server', type: 'Microsoft.Compute/virtualMachines', resourceGroup: 'dev', @@ -51,7 +58,7 @@ export const createARGResourcesResponse = (): AzureGraphResponse { expect(argQuery).toContain(`where type == 'microsoft.resources/subscriptions'`); expect(argQuery).toContain(`where type == 'microsoft.resources/subscriptions/resourcegroups'`); + expect(argQuery).toContain(`project resourceGroupURI=id, resourceGroupName=name, resourceGroup, subscriptionId`); }); it('returns only subscriptions at the top level', async () => { const results = await resourcePickerData.getResourcePickerData(); - expect(results.map((v) => v.id)).toEqual(['/subscriptions/abc-123', '/subscription/def-456']); + expect(results.map((v) => v.id)).toEqual(['/subscriptions/abc-123', '/subscriptions/def-456']); }); it('nests resource groups under their subscriptions', async () => { @@ -38,13 +39,14 @@ describe('AzureMonitor resourcePickerData', () => { expect(results[0].children?.map((v) => v.id)).toEqual([ '/subscriptions/abc-123/resourceGroups/prod', + '/subscriptions/abc-123/resourceGroups/test', '/subscriptions/abc-123/resourceGroups/pre-prod', ]); expect(results[1].children?.map((v) => v.id)).toEqual([ - '/subscription/def-456/resourceGroups/dev', - '/subscription/def-456/resourceGroups/test', - '/subscription/def-456/resourceGroups/qa', + '/subscriptions/def-456/resourceGroups/dev', + '/subscriptions/def-456/resourceGroups/test', + '/subscriptions/def-456/resourceGroups/qa', ]); }); @@ -76,20 +78,22 @@ describe('AzureMonitor resourcePickerData', () => { const results = await resourcePickerData.getResourcePickerData(); expect(results[0].children?.map((v) => v.id)).toEqual([ '/subscriptions/abc-123/resourceGroups/prod', + '/subscriptions/abc-123/resourceGroups/test', '/subscriptions/abc-123/resourceGroups/pre-prod', // second page '/subscriptions/abc-123/resourceGroups/prod', + '/subscriptions/abc-123/resourceGroups/test', '/subscriptions/abc-123/resourceGroups/pre-prod', ]); expect(results[1].children?.map((v) => v.id)).toEqual([ - '/subscription/def-456/resourceGroups/dev', - '/subscription/def-456/resourceGroups/test', - '/subscription/def-456/resourceGroups/qa', + '/subscriptions/def-456/resourceGroups/dev', + '/subscriptions/def-456/resourceGroups/test', + '/subscriptions/def-456/resourceGroups/qa', // second page - '/subscription/def-456/resourceGroups/dev', - '/subscription/def-456/resourceGroups/test', - '/subscription/def-456/resourceGroups/qa', + '/subscriptions/def-456/resourceGroups/dev', + '/subscriptions/def-456/resourceGroups/test', + '/subscriptions/def-456/resourceGroups/qa', ]); }); }); @@ -97,7 +101,7 @@ describe('AzureMonitor resourcePickerData', () => { describe('getResourcesForResourceGroup', () => { const resourceRow = { - id: '/subscription/def-456/resourceGroups/dev', + id: '/subscriptions/def-456/resourceGroups/dev', name: 'Dev', type: ResourceRowType.ResourceGroup, typeLabel: 'Resource group', @@ -121,10 +125,10 @@ describe('AzureMonitor resourcePickerData', () => { const results = await resourcePickerData.getResourcesForResourceGroup(resourceRow); expect(results.map((v) => v.id)).toEqual([ - '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', - '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk', - '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/db-server', - '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/db-server_DataDisk', + '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', + '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk', + '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/db-server', + '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/db-server_DataDisk', ]); results.forEach((v) => expect(v.type).toEqual(ResourceRowType.Resource)); diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts index 55f6047ea56..bf7ceb7bc60 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts @@ -45,8 +45,8 @@ export default class ResourcePickerData extends DataSourceWithBackend