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}.");
}
}