From 4b5f873363c72cfcbe566061875af2fb51f6633c Mon Sep 17 00:00:00 2001 From: Ben Broderick Phillips Date: Tue, 27 Oct 2020 16:16:41 -0400 Subject: [PATCH 1/3] Remove resource group asynchronously and do not wait for completion --- eng/common/TestResources/Remove-TestResources.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 37f3f5851..82ddd858c 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -138,8 +138,8 @@ if (![string]::IsNullOrWhiteSpace($ServiceDirectory)) { } Log "Deleting resource group '$ResourceGroupName'" -if (Retry { Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force }) { - Write-Verbose "Successfully deleted resource group '$ResourceGroupName'" +if (Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force -AsJob) { + Write-Verbose "Requested async deletion of resource group '$ResourceGroupName'" } $exitActions.Invoke() @@ -194,4 +194,4 @@ resource group whose name is stored in the environment variable AZURE_RESOURCEGROUP_NAME. .LINK New-TestResources.ps1 -#> \ No newline at end of file +#> From 2bcd44207873d2c201ace89e834059d21cb78337 Mon Sep 17 00:00:00 2001 From: Ben Broderick Phillips Date: Tue, 27 Oct 2020 20:07:03 -0400 Subject: [PATCH 2/3] Verify resource group has reached Deleting state before exiting script --- .../TestResources/Remove-TestResources.ps1 | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 82ddd858c..f7accba81 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -137,9 +137,31 @@ if (![string]::IsNullOrWhiteSpace($ServiceDirectory)) { } } +$verifyDeleteScript = { + try { + $group = Get-AzResourceGroup -name $ResourceGroupName + } catch { + if ($Error[0].ToString().Contains("Provided resource group does not exist")) { + Write-Verbose "Resource group '$ResourceGroupName' not found. Continuing..." + return + } + throw $Error[0] + } + + if ($group.ProvisioningState -ne "Deleting") + { + throw "Resource group is in '$($group.ProvisioningState)' state, expected 'Deleting'" + } +} + Log "Deleting resource group '$ResourceGroupName'" -if (Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force -AsJob) { +if ($Force) { + Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force -AsJob + Retry $verifyDeleteScript 3 Write-Verbose "Requested async deletion of resource group '$ResourceGroupName'" +} else { + # Don't swallow interactive confirmation when Force is false + Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force } $exitActions.Invoke() From aee6cf319e0c71035787b4592433f30fa2b3e477 Mon Sep 17 00:00:00 2001 From: Ben Broderick Phillips Date: Wed, 28 Oct 2020 17:54:44 -0400 Subject: [PATCH 3/3] Use $_ instead of $Error[0] for resource group removal handling --- eng/common/TestResources/Remove-TestResources.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index f7accba81..83b1a58c3 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -141,11 +141,11 @@ $verifyDeleteScript = { try { $group = Get-AzResourceGroup -name $ResourceGroupName } catch { - if ($Error[0].ToString().Contains("Provided resource group does not exist")) { + if ($_.ToString().Contains("Provided resource group does not exist")) { Write-Verbose "Resource group '$ResourceGroupName' not found. Continuing..." return } - throw $Error[0] + throw $_ } if ($group.ProvisioningState -ne "Deleting")