44 *--------------------------------------------------------------------------------------------*/
55
66import { GenericResource , ResourceGroup } from '@azure/arm-resources' ;
7- import { getResourceGroupFromId , uiUtils } from "@microsoft/vscode-azext-azureutils" ;
8- import { callWithTelemetryAndErrorHandling , createSubscriptionContext , getAzExtResourceType , IActionContext , nonNullProp } from '@microsoft/vscode-azext-utils' ;
7+ import { getResourceGroupFromId } from "@microsoft/vscode-azext-azureutils" ;
8+ import { callWithTelemetryAndErrorHandling , getAzExtResourceType , IActionContext , nonNullProp } from '@microsoft/vscode-azext-utils' ;
99import * as vscode from 'vscode' ;
1010import { AzureResource , AzureSubscription } from '../../api/src/index' ;
1111import { AzureResourceProvider } from '../../hostapi.v2.internal' ;
12- import { createResourceClient } from '../utils/azureClients ' ;
12+ import { getAzureResourcesService } from '../services/AzureResourcesService ' ;
1313
1414export class DefaultAzureResourceProvider implements AzureResourceProvider {
1515 private readonly onDidChangeResourceEmitter = new vscode . EventEmitter < AzureResource | undefined > ( ) ;
@@ -18,35 +18,37 @@ export class DefaultAzureResourceProvider implements AzureResourceProvider {
1818 return callWithTelemetryAndErrorHandling (
1919 'defaultAzureResourceProvider.getResources' ,
2020 async ( context : IActionContext ) => {
21- const azureResources = await listResources ( context , subscription ) ;
22- const resourceGroups = await listResourceGroups ( context , subscription ) ;
21+ const azureResources = await this . listResources ( context , subscription ) ;
22+ const resourceGroups = await this . listResourceGroups ( context , subscription ) ;
2323 return [ ...azureResources , ...resourceGroups ] ;
2424 } ) ;
2525 }
2626
2727 onDidChangeResource = this . onDidChangeResourceEmitter . event ;
28- }
2928
30- /**
31- * @returns Deduped list of Azure resources in the specified subscription
32- */
33- async function listResources ( context : IActionContext , subscription : AzureSubscription ) : Promise < AzureResource [ ] > {
34- const subContext = createSubscriptionContext ( subscription ) ;
35- const client = await createResourceClient ( [ context , subContext ] ) ;
29+ /**
30+ * @returns Deduped list of Azure resources in the specified subscription
31+ */
32+ private async listResources ( context : IActionContext , subscription : AzureSubscription ) : Promise < AzureResource [ ] > {
33+ const allResources = await getAzureResourcesService ( ) . listResources ( context , subscription ) ;
3634
37- // Load more currently broken https://github.com/Azure/azure-sdk-for-js/issues/20380
38- const allResources = await uiUtils . listAllIterator ( client . resources . list ( ) ) ;
35+ // dedupe resources to fix https://github.com/microsoft/vscode-azureresourcegroups/issues/526
36+ const allResourcesDeduped : GenericResource [ ] = [ ...new Map ( allResources . map ( ( item ) => [ item . id , item ] ) ) . values ( ) ] ;
37+ context . telemetry . measurements . resourceCount = allResourcesDeduped . length ;
3938
40- // dedupe resources to fix https://github.com/microsoft/vscode-azureresourcegroups/issues/526
41- const allResourcesDeduped : GenericResource [ ] = [ ...new Map ( allResources . map ( ( item ) => [ item . id , item ] ) ) . values ( ) ] ;
42- context . telemetry . measurements . resourceCount = allResourcesDeduped . length ;
39+ if ( allResourcesDeduped . length !== allResources . length ) {
40+ context . telemetry . properties . duplicateResources = 'true' ;
41+ context . telemetry . measurements . rawResourceCount = allResources . length ;
42+ }
4343
44- if ( allResourcesDeduped . length !== allResources . length ) {
45- context . telemetry . properties . duplicateResources = 'true' ;
46- context . telemetry . measurements . rawResourceCount = allResources . length ;
44+ return allResourcesDeduped . map ( resource => createAzureResource ( subscription , resource ) ) ;
4745 }
4846
49- return allResourcesDeduped . map ( resource => createAzureResource ( subscription , resource ) ) ;
47+ private async listResourceGroups ( context : IActionContext , subscription : AzureSubscription ) : Promise < AzureResource [ ] > {
48+ const allResourceGroups : ResourceGroup [ ] = await getAzureResourcesService ( ) . listResourceGroups ( context , subscription ) ;
49+ context . telemetry . measurements . resourceGroupCount = allResourceGroups . length ;
50+ return allResourceGroups . map ( resource => createResourceGroup ( subscription , resource ) ) ;
51+ }
5052}
5153
5254function createAzureResource ( subscription : AzureSubscription , resource : GenericResource ) : AzureResource {
@@ -71,15 +73,7 @@ function createAzureResource(subscription: AzureSubscription, resource: GenericR
7173 } ;
7274}
7375
74- async function listResourceGroups ( context : IActionContext , subscription : AzureSubscription ) : Promise < AzureResource [ ] > {
75- const subContext = createSubscriptionContext ( subscription ) ;
76- const client = await createResourceClient ( [ context , subContext ] ) ;
7776
78- const allResourceGroups : ResourceGroup [ ] = await uiUtils . listAllIterator ( client . resourceGroups . list ( ) ) ;
79- context . telemetry . measurements . resourceGroupCount = allResourceGroups . length ;
80-
81- return allResourceGroups . map ( resource => createResourceGroup ( subscription , resource ) ) ;
82- }
8377
8478export function createResourceGroup ( subscription : AzureSubscription , resourceGroup : ResourceGroup ) : AzureResource {
8579 return {
0 commit comments