diff --git a/src/ALZ/Public/Remove-PlatformLandingZone.ps1 b/src/ALZ/Public/Remove-PlatformLandingZone.ps1 index cc34f71..21855fc 100644 --- a/src/ALZ/Public/Remove-PlatformLandingZone.ps1 +++ b/src/ALZ/Public/Remove-PlatformLandingZone.ps1 @@ -1031,76 +1031,75 @@ function Remove-PlatformLandingZone { if ($resourceGroups.Count -eq 0) { Write-ToConsoleLog "No resource groups found for subscription: $($subscription.Name) (ID: $($subscription.Id)), skipping." -NoNewline - continue - } + } else { + Write-ToConsoleLog "Found resource groups for subscription: $($subscription.Name) (ID: $($subscription.Id)), count: $($resourceGroups.Count)" -NoNewline - Write-ToConsoleLog "Found resource groups for subscription: $($subscription.Name) (ID: $($subscription.Id)), count: $($resourceGroups.Count)" -NoNewline + $resourceGroupsToDelete = @() + $resourceGroupsToRetainNamePatterns = $using:ResourceGroupsToRetainNamePatterns - $resourceGroupsToDelete = @() - $resourceGroupsToRetainNamePatterns = $using:ResourceGroupsToRetainNamePatterns + foreach ($resourceGroup in $resourceGroups) { + $foundMatch = $false - foreach ($resourceGroup in $resourceGroups) { - $foundMatch = $false + foreach ($pattern in $resourceGroupsToRetainNamePatterns) { + if ($resourceGroup.name -match $pattern) { + Write-ToConsoleLog "Retaining resource group as it matches the pattern '$pattern': $($resourceGroup.name) in subscription: $($subscription.Name) (ID: $($subscription.Id))" -NoNewLine + $foundMatch = $true + break + } + } - foreach ($pattern in $resourceGroupsToRetainNamePatterns) { - if ($resourceGroup.name -match $pattern) { - Write-ToConsoleLog "Retaining resource group as it matches the pattern '$pattern': $($resourceGroup.name) in subscription: $($subscription.Name) (ID: $($subscription.Id))" -NoNewLine - $foundMatch = $true - break + if($foundMatch) { + continue } - } - if($foundMatch) { - continue + $resourceGroupsToDelete += @{ + ResourceGroupName = $resourceGroup.name + Subscription = $subscription + } } - $resourceGroupsToDelete += @{ - ResourceGroupName = $resourceGroup.name - Subscription = $subscription - } - } + $shouldRetry = $true - $shouldRetry = $true + $throttleLimit = $using:ThrottleLimit + $planMode = $using:PlanMode - $throttleLimit = $using:ThrottleLimit - $planMode = $using:PlanMode + while($shouldRetry) { + $shouldRetry = $false + $resourceGroupsToRetry = [System.Collections.Concurrent.ConcurrentBag[hashtable]]::new() + $resourceGroupsToDelete | ForEach-Object -Parallel { + $funcWriteToConsoleLog = $using:funcWriteToConsoleLog + ${function:Write-ToConsoleLog} = $funcWriteToConsoleLog + $resourceGroupName = $_.ResourceGroupName + $subscription = $_.Subscription - while($shouldRetry) { - $shouldRetry = $false - $resourceGroupsToRetry = [System.Collections.Concurrent.ConcurrentBag[hashtable]]::new() - $resourceGroupsToDelete | ForEach-Object -Parallel { - $funcWriteToConsoleLog = $using:funcWriteToConsoleLog - ${function:Write-ToConsoleLog} = $funcWriteToConsoleLog - $resourceGroupName = $_.ResourceGroupName - $subscription = $_.Subscription - - Write-ToConsoleLog "Deleting resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine - $result = $null - if($using:PlanMode) { - Write-ToConsoleLog ` - "Deleting resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)", ` - "Would run: az group delete --name $ResourceGroupName --subscription $($subscription.Id) --yes" ` - -IsPlan -LogFilePath $using:TempLogFileForPlan - } else { - $result = az group delete --name $ResourceGroupName --subscription $subscription.Id --yes 2>&1 - } + Write-ToConsoleLog "Deleting resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine + $result = $null + if($using:PlanMode) { + Write-ToConsoleLog ` + "Deleting resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)", ` + "Would run: az group delete --name $ResourceGroupName --subscription $($subscription.Id) --yes" ` + -IsPlan -LogFilePath $using:TempLogFileForPlan + } else { + $result = az group delete --name $ResourceGroupName --subscription $subscription.Id --yes 2>&1 + } - if (!$result) { - Write-ToConsoleLog "Deleted resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine + if (!$result) { + Write-ToConsoleLog "Deleted resource group for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine + } else { + Write-ToConsoleLog "Delete resource group failed for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine + Write-ToConsoleLog "It will be retried once the other resource groups in the subscription have reported their status." -NoNewLine + $retries = $using:resourceGroupsToRetry + $retries.Add($_) + } + } -ThrottleLimit $using:ThrottleLimit + + if($resourceGroupsToRetry.Count -gt 0) { + Write-ToConsoleLog "Some resource groups failed to delete and will be retried in subscription: $($subscription.Name) (ID: $($subscription.Id))" -NoNewLine + $shouldRetry = $true + $resourceGroupsToDelete = $resourceGroupsToRetry.ToArray() } else { - Write-ToConsoleLog "Delete resource group failed for subscription: $($subscription.Name) (ID: $($subscription.Id)), resource group: $($ResourceGroupName)" -NoNewLine - Write-ToConsoleLog "It will be retried once the other resource groups in the subscription have reported their status." -NoNewLine - $retries = $using:resourceGroupsToRetry - $retries.Add($_) + Write-ToConsoleLog "All resource groups deleted successfully in subscription: $($subscription.Name) (ID: $($subscription.Id))." -NoNewLine } - } -ThrottleLimit $using:ThrottleLimit - - if($resourceGroupsToRetry.Count -gt 0) { - Write-ToConsoleLog "Some resource groups failed to delete and will be retried in subscription: $($subscription.Name) (ID: $($subscription.Id))" -NoNewLine - $shouldRetry = $true - $resourceGroupsToDelete = $resourceGroupsToRetry.ToArray() - } else { - Write-ToConsoleLog "All resource groups deleted successfully in subscription: $($subscription.Name) (ID: $($subscription.Id))." -NoNewLine } }