AzureMonitor: resourcePicker should show resource in the correct subs… (#42170)

This commit is contained in:
Isabella Siu 2021-11-24 15:06:14 -05:00 committed by GitHub
parent 6523486122
commit dc145a2a25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 27 deletions

View File

@ -10,16 +10,23 @@ export const createMockARGResourceContainersResponse = (): AzureGraphResponse<Ra
}, },
{ {
subscriptionURI: '/subscription/def-456', subscriptionURI: '/subscriptions/def-456',
subscriptionName: 'Dev Subscription', subscriptionName: 'Dev Subscription',
resourceGroupURI: '/subscription/def-456/resourceGroups/dev', resourceGroupURI: '/subscriptions/def-456/resourceGroups/dev',
resourceGroupName: 'Development', resourceGroupName: 'Development',
}, },
{ {
subscriptionURI: '/subscription/def-456', subscriptionURI: '/subscriptions/def-456',
subscriptionName: 'Dev Subscription', subscriptionName: 'Dev Subscription',
resourceGroupURI: '/subscription/def-456/resourceGroups/test', resourceGroupURI: '/subscriptions/def-456/resourceGroups/test',
resourceGroupName: 'Test',
},
{
subscriptionURI: '/subscriptions/abc-123',
subscriptionName: 'Primary Subscription',
resourceGroupURI: '/subscriptions/abc-123/resourceGroups/test',
resourceGroupName: 'Test', resourceGroupName: 'Test',
}, },
@ -31,9 +38,9 @@ export const createMockARGResourceContainersResponse = (): AzureGraphResponse<Ra
}, },
{ {
subscriptionURI: '/subscription/def-456', subscriptionURI: '/subscriptions/def-456',
subscriptionName: 'Dev Subscription', subscriptionName: 'Dev Subscription',
resourceGroupURI: '/subscription/def-456/resourceGroups/qa', resourceGroupURI: '/subscriptions/def-456/resourceGroups/qa',
resourceGroupName: 'QA', resourceGroupName: 'QA',
}, },
], ],
@ -42,7 +49,7 @@ export const createMockARGResourceContainersResponse = (): AzureGraphResponse<Ra
export const createARGResourcesResponse = (): AzureGraphResponse<RawAzureResourceItem[]> => ({ export const createARGResourcesResponse = (): AzureGraphResponse<RawAzureResourceItem[]> => ({
data: [ 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', name: 'web-server',
type: 'Microsoft.Compute/virtualMachines', type: 'Microsoft.Compute/virtualMachines',
resourceGroup: 'dev', resourceGroup: 'dev',
@ -51,7 +58,7 @@ export const createARGResourcesResponse = (): AzureGraphResponse<RawAzureResourc
}, },
{ {
id: '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk', id: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk',
name: 'web-server_DataDisk', name: 'web-server_DataDisk',
type: 'Microsoft.Compute/disks', type: 'Microsoft.Compute/disks',
resourceGroup: 'dev', resourceGroup: 'dev',
@ -60,7 +67,7 @@ export const createARGResourcesResponse = (): AzureGraphResponse<RawAzureResourc
}, },
{ {
id: '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/db-server', id: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/db-server',
name: 'db-server', name: 'db-server',
type: 'Microsoft.Compute/virtualMachines', type: 'Microsoft.Compute/virtualMachines',
resourceGroup: 'dev', resourceGroup: 'dev',
@ -69,7 +76,7 @@ export const createARGResourcesResponse = (): AzureGraphResponse<RawAzureResourc
}, },
{ {
id: '/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/db-server_DataDisk', id: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/db-server_DataDisk',
name: 'db-server_DataDisk', name: 'db-server_DataDisk',
type: 'Microsoft.Compute/disks', type: 'Microsoft.Compute/disks',
resourceGroup: 'dev', resourceGroup: 'dev',

View File

@ -25,12 +25,13 @@ describe('AzureMonitor resourcePickerData', () => {
expect(argQuery).toContain(`where type == 'microsoft.resources/subscriptions'`); expect(argQuery).toContain(`where type == 'microsoft.resources/subscriptions'`);
expect(argQuery).toContain(`where type == 'microsoft.resources/subscriptions/resourcegroups'`); 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 () => { it('returns only subscriptions at the top level', async () => {
const results = await resourcePickerData.getResourcePickerData(); 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 () => { it('nests resource groups under their subscriptions', async () => {
@ -38,13 +39,14 @@ describe('AzureMonitor resourcePickerData', () => {
expect(results[0].children?.map((v) => v.id)).toEqual([ expect(results[0].children?.map((v) => v.id)).toEqual([
'/subscriptions/abc-123/resourceGroups/prod', '/subscriptions/abc-123/resourceGroups/prod',
'/subscriptions/abc-123/resourceGroups/test',
'/subscriptions/abc-123/resourceGroups/pre-prod', '/subscriptions/abc-123/resourceGroups/pre-prod',
]); ]);
expect(results[1].children?.map((v) => v.id)).toEqual([ expect(results[1].children?.map((v) => v.id)).toEqual([
'/subscription/def-456/resourceGroups/dev', '/subscriptions/def-456/resourceGroups/dev',
'/subscription/def-456/resourceGroups/test', '/subscriptions/def-456/resourceGroups/test',
'/subscription/def-456/resourceGroups/qa', '/subscriptions/def-456/resourceGroups/qa',
]); ]);
}); });
@ -76,20 +78,22 @@ describe('AzureMonitor resourcePickerData', () => {
const results = await resourcePickerData.getResourcePickerData(); const results = await resourcePickerData.getResourcePickerData();
expect(results[0].children?.map((v) => v.id)).toEqual([ expect(results[0].children?.map((v) => v.id)).toEqual([
'/subscriptions/abc-123/resourceGroups/prod', '/subscriptions/abc-123/resourceGroups/prod',
'/subscriptions/abc-123/resourceGroups/test',
'/subscriptions/abc-123/resourceGroups/pre-prod', '/subscriptions/abc-123/resourceGroups/pre-prod',
// second page // second page
'/subscriptions/abc-123/resourceGroups/prod', '/subscriptions/abc-123/resourceGroups/prod',
'/subscriptions/abc-123/resourceGroups/test',
'/subscriptions/abc-123/resourceGroups/pre-prod', '/subscriptions/abc-123/resourceGroups/pre-prod',
]); ]);
expect(results[1].children?.map((v) => v.id)).toEqual([ expect(results[1].children?.map((v) => v.id)).toEqual([
'/subscription/def-456/resourceGroups/dev', '/subscriptions/def-456/resourceGroups/dev',
'/subscription/def-456/resourceGroups/test', '/subscriptions/def-456/resourceGroups/test',
'/subscription/def-456/resourceGroups/qa', '/subscriptions/def-456/resourceGroups/qa',
// second page // second page
'/subscription/def-456/resourceGroups/dev', '/subscriptions/def-456/resourceGroups/dev',
'/subscription/def-456/resourceGroups/test', '/subscriptions/def-456/resourceGroups/test',
'/subscription/def-456/resourceGroups/qa', '/subscriptions/def-456/resourceGroups/qa',
]); ]);
}); });
}); });
@ -97,7 +101,7 @@ describe('AzureMonitor resourcePickerData', () => {
describe('getResourcesForResourceGroup', () => { describe('getResourcesForResourceGroup', () => {
const resourceRow = { const resourceRow = {
id: '/subscription/def-456/resourceGroups/dev', id: '/subscriptions/def-456/resourceGroups/dev',
name: 'Dev', name: 'Dev',
type: ResourceRowType.ResourceGroup, type: ResourceRowType.ResourceGroup,
typeLabel: 'Resource group', typeLabel: 'Resource group',
@ -121,10 +125,10 @@ describe('AzureMonitor resourcePickerData', () => {
const results = await resourcePickerData.getResourcesForResourceGroup(resourceRow); const results = await resourcePickerData.getResourcesForResourceGroup(resourceRow);
expect(results.map((v) => v.id)).toEqual([ expect(results.map((v) => v.id)).toEqual([
'/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server',
'/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk', '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/disks/web-server_DataDisk',
'/subscription/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/db-server', '/subscriptions/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/disks/db-server_DataDisk',
]); ]);
results.forEach((v) => expect(v.type).toEqual(ResourceRowType.Resource)); results.forEach((v) => expect(v.type).toEqual(ResourceRowType.Resource));

View File

@ -45,8 +45,8 @@ export default class ResourcePickerData extends DataSourceWithBackend<AzureMonit
| join kind=leftouter ( | join kind=leftouter (
ResourceContainers ResourceContainers
| where type == 'microsoft.resources/subscriptions/resourcegroups' | where type == 'microsoft.resources/subscriptions/resourcegroups'
| project resourceGroupURI=id, resourceGroupName=name, resourceGroup | project resourceGroupURI=id, resourceGroupName=name, resourceGroup, subscriptionId
) on resourceGroup ) on resourceGroup, subscriptionId
| where type in (${logsSupportedResourceTypesKusto}) | where type in (${logsSupportedResourceTypesKusto})