public async Task DeleteNodes()

in src/ccf/caci-ccf-provider/CAciNodeProvider.cs [496:569]


    public async Task DeleteNodes(
        string networkName,
        DeleteOption deleteOption,
        JsonObject? providerConfig)
    {
        this.ValidateDeleteInput(providerConfig);

        var client = new ArmClient(new DefaultAzureCredential());
        string subscriptionId = providerConfig!["subscriptionId"]!.ToString();
        string resourceGroupName = providerConfig["resourceGroupName"]!.ToString();
        ResourceIdentifier resourceGroupResourceId =
            ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
        ResourceGroupResource resourceGroupResource =
            client.GetResourceGroupResource(resourceGroupResourceId);

        ContainerGroupCollection collection = resourceGroupResource.GetContainerGroups();
        List<ContainerGroupResource> containerGroupsToDelete = new();
        await foreach (var item in collection.GetAllAsync())
        {
            if (item.Data.Tags.TryGetValue(AciConstants.CcfNetworkNameTag, out var nwTagValue) &&
                nwTagValue == networkName &&
                item.Data.Tags.TryGetValue(AciConstants.CcfNetworkTypeTag, out var nwTypeValue) &&
                nwTypeValue == "node")
            {
                containerGroupsToDelete.Add(item);
            }
        }

        this.logger.LogInformation(
            $"Found {containerGroupsToDelete.Count} node container groups to delete.");

        List<Task> deleteTasks = new();
        foreach (var resource in containerGroupsToDelete)
        {
            deleteTasks.Add(Task.Run(async () =>
            {
                this.logger.LogInformation($"Deleting node container group {resource.Id}");
                await resource.DeleteAsync(WaitUntil.Completed);
            }));
        }

        await Task.WhenAll(deleteTasks);

        var networkDir = WorkspaceDirectories.GetNetworkDirectory(networkName, this.InfraType);
        if (deleteOption == DeleteOption.DeleteStorage)
        {
            if (Directory.Exists(networkDir))
            {
                this.logger.LogWarning($"Removing {networkDir} folder for this network.");
                Directory.Delete(networkDir, recursive: true);
            }
        }
        else
        {
            this.logger.LogWarning($"Not removing {networkDir} folder as deleteOption " +
                $"is {deleteOption}.");
        }

        if (deleteOption == DeleteOption.DeleteStorage)
        {
            if (providerConfig.GetNodeStorageType(this.InfraType) == NodeStorageType.AzureFiles)
            {
                await AzFileShare.DeleteFileShares(
                    networkName,
                    providerConfig!,
                    this.logger.ProgressReporter());
            }
        }
        else
        {
            this.logger.LogWarning($"Not removing ledger/snapshots directory from storage " +
                $"as deleteOption is {deleteOption}.");
        }
    }