diff --git a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts index 8764d34a017..85cdc304c37 100644 --- a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts +++ b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.test.ts @@ -225,14 +225,14 @@ describe('AzureMonitor resourcePickerData', () => { it('makes 1 call to ARG with the correct path and query arguments', async () => { const mockResponse = createARGResourcesResponse(); const { resourcePickerData, postResource } = createResourcePickerData([mockResponse]); - await resourcePickerData.getResourcesForResourceGroup('dev', 'logs'); + await resourcePickerData.getResourcesForResourceGroup('/subscription/sub1/resourceGroups/dev', 'logs'); expect(postResource).toBeCalledTimes(1); const firstCall = postResource.mock.calls[0]; const [path, postBody] = firstCall; expect(path).toEqual('resourcegraph/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01'); expect(postBody.query).toContain('resources'); - expect(postBody.query).toContain('where id hasprefix "dev"'); + expect(postBody.query).toContain('where id hasprefix "/subscription/sub1/resourceGroups/dev/"'); }); it('returns formatted resources', async () => { diff --git a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts index abd86180a94..80282cb71a7 100644 --- a/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts +++ b/public/app/plugins/datasource/azuremonitor/resourcePicker/resourcePickerData.ts @@ -91,7 +91,7 @@ export default class ResourcePickerData extends DataSourceWithBackend { + // We can use subscription ID for the filtering here as they're unique const query = ` resources | join kind=inner ( @@ -230,12 +231,15 @@ export default class ResourcePickerData extends DataSourceWithBackend { + // We use resource group URI for the filtering here because resource group names are not unique across subscriptions + // We also add a slash at the end of the resource group URI to ensure we do not pull resources from a resource group + // that has a similar naming prefix e.g. resourceGroup1 and resourceGroup10 const { data: response } = await this.makeResourceGraphRequest(` resources - | where id hasprefix "${resourceGroupId}" + | where id hasprefix "${resourceGroupUri}/" ${await this.filterByType(type)} `);