private async Task ExpandResource()

in src/PSRule.Rules.Azure/Pipeline/Export/ResourceExportVisitor.cs [159:213]


    private async Task<bool> ExpandResource(IResourceExportContext context, JObject resource)
    {
        if (resource == null ||
            !resource.TryStringProperty(PROPERTY_TYPE, out var resourceType) ||
            string.IsNullOrWhiteSpace(resourceType) ||
            !resource.TryGetProperty(PROPERTY_ID, out var resourceId) ||
            !resource.TryGetProperty(PROPERTY_TENANT_ID, out var tenantId))
            return false;

        var resourceContext = new ResourceContext(context, tenantId);

        // Set subscriptionId and resourceGroupName.
        SetResourceIdentifiers(resource, resourceType, resourceId);

        // Ignore expand of these.
        if (string.Equals(resourceType, TYPE_VISUALSTUDIO_ACCOUNT, StringComparison.OrdinalIgnoreCase))
            return true;

        // Expand properties for the resource.
        await GetProperties(resourceContext, resource, resourceType, resourceId);

        // Expand sub-resources for the resource.
        return await VisitResourceGroup(resourceContext, resource, resourceType, resourceId) ||
            await VisitAPIManagement(resourceContext, resource, resourceType, resourceId) ||
            await VisitAutomationAccount(resourceContext, resource, resourceType, resourceId) ||
            await VisitCDNEndpoint(resourceContext, resource, resourceType, resourceId) ||
            await VisitCDNProfile(resourceContext, resource, resourceType, resourceId) ||
            await VisitFrontDoorEndpoint(resourceContext, resource, resourceType, resourceId) ||
            await VisitContainerRegistry(resourceContext, resource, resourceType, resourceId) ||
            await VisitAKSCluster(resourceContext, resource, resourceType, resourceId) ||
            await VisitSqlServers(resourceContext, resource, resourceType, resourceId) ||
            await VisitSqlDatabase(resourceContext, resource, resourceType, resourceId) ||
            await VisitPostgreSqlServer(resourceContext, resource, resourceType, resourceId) ||
            await VisitPostgreSqlFlexibleServer(resourceContext, resource, resourceType, resourceId) ||
            await VisitMySqlServer(resourceContext, resource, resourceType, resourceId) ||
            await VisitMySqlFlexibleServer(resourceContext, resource, resourceType, resourceId) ||
            await VisitStorageAccount(resourceContext, resource, resourceType, resourceId) ||
            await VisitWebApp(resourceContext, resource, resourceType, resourceId) ||
            await VisitRecoveryServicesVault(resourceContext, resource, resourceType, resourceId) ||
            await VisitVirtualMachine(resourceContext, resource, resourceType, resourceId) ||
            await VisitKeyVault(resourceContext, resource, resourceType, resourceId) ||
            await VisitFrontDoorClassic(resourceContext, resource, resourceType, resourceId) ||
            await VisitSubscription(resourceContext, resource, resourceType, resourceId) ||
            await VisitDataExplorerCluster(resourceContext, resource, resourceType, resourceId) ||
            await VisitEventHubNamespace(resourceContext, resource, resourceType, resourceId) ||
            await VisitServiceBusNamespace(resourceContext, resource, resourceType, resourceId) ||
            await VisitEventGridTopic(resourceContext, resource, resourceType, resourceId) ||
            await VisitEventGridDomain(resourceContext, resource, resourceType, resourceId) ||
            await VisitEventGridNamespace(resourceContext, resource, resourceType, resourceId) ||
            await VisitDevCenterProject(resourceContext, resource, resourceType, resourceId) ||
            await VisitFirewallPolicy(resourceContext, resource, resourceType, resourceId) ||
            await VisitVirtualHub(resourceContext, resource, resourceType, resourceId) ||
            await VisitDNSZone(resourceContext, resource, resourceType, resourceId) ||
            VisitNetworkConnection(resource, resourceType);
    }