Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 55 additions & 56 deletions src/ALZ/Public/Remove-PlatformLandingZone.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}

Expand Down
Loading