From 2ef8dc4ff07f185ee7f220387a403efe1e5a983e Mon Sep 17 00:00:00 2001 From: Azad Abbasi Date: Mon, 27 Apr 2020 17:57:48 -0700 Subject: [PATCH 1/4] Make Remove-TestResource invoke custom script prior to deletion of the resource group --- .../TestResources/Remove-TestResources.ps1 | 14 ++++++++++++++ .../TestResources/Remove-TestResources.ps1.md | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 961452fe8ca..842f13d51c9 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -38,6 +38,9 @@ param ( [Parameter(ParameterSetName = 'Default+Provisioner', Mandatory = $true)] [Parameter(ParameterSetName = 'ResourceGroup+Provisioner', Mandatory = $true)] [string] $ProvisionerApplicationSecret, + + [Parameter(Mandatory = $false)] + [string] $ServiceDirectory, [Parameter()] [ValidateSet('AzureCloud', 'AzureUSGovernment', 'AzureChinaCloud')] @@ -116,6 +119,13 @@ if (!$ResourceGroupName) { $ResourceGroupName = "rg-$BaseName" } +$root = [System.IO.Path]::Combine("$PSScriptRoot/../../../sdk", $ServiceDirectory) | Resolve-Path +$preRemovalScript = Join-Path -Path $root -ChildPath 'remove-test-resources-pre.ps1' +if (Test-Path $preRemovalScript) { + Log "Invoking pre resource removal script '$preRemovalScript'" + &$preRemovalScript -ResourceGroupName $ResourceGroupName @PSBoundParameters +} + Log "Deleting resource group '$ResourceGroupName'" if (Retry { Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force }) { Write-Verbose "Successfully deleted resource group '$ResourceGroupName'" @@ -157,6 +167,10 @@ A service principal ID to provision test resources when a provisioner is specifi .PARAMETER ProvisionerApplicationSecret A service principal secret (password) to provision test resources when a provisioner is specified. +.PARAMETER ServiceDirectory +A directory under 'sdk' in the repository root - optionally with subdirectories +specified - in which to discover pre removal script named 'remove-test-resources-pre.json'. + .PARAMETER Environment Name of the cloud environment. The default is the Azure Public Cloud ('PublicCloud') diff --git a/eng/common/TestResources/Remove-TestResources.ps1.md b/eng/common/TestResources/Remove-TestResources.ps1.md index edf3990ce93..f9bc1803ae3 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1.md +++ b/eng/common/TestResources/Remove-TestResources.ps1.md @@ -169,6 +169,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -ServiceDirectory +A directory under 'sdk' in the repository root - optionally with subdirectories +specified - specified - in which to discover pre removal script named 'remove-test-resources-pre.json'. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Environment Name of the cloud environment. The default is the Azure Public Cloud From b0ffa5ff8c5a3e9b08a9454c5aa0e0876bae66a8 Mon Sep 17 00:00:00 2001 From: Azad Abbasi Date: Tue, 28 Apr 2020 13:18:19 -0700 Subject: [PATCH 2/4] Add service directory parameter to the yml file --- eng/common/TestResources/Remove-TestResources.ps1 | 12 +++++++----- eng/common/TestResources/remove-test-resources.yml | 6 ++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 842f13d51c9..0bef44d64e0 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -119,11 +119,13 @@ if (!$ResourceGroupName) { $ResourceGroupName = "rg-$BaseName" } -$root = [System.IO.Path]::Combine("$PSScriptRoot/../../../sdk", $ServiceDirectory) | Resolve-Path -$preRemovalScript = Join-Path -Path $root -ChildPath 'remove-test-resources-pre.ps1' -if (Test-Path $preRemovalScript) { - Log "Invoking pre resource removal script '$preRemovalScript'" - &$preRemovalScript -ResourceGroupName $ResourceGroupName @PSBoundParameters +if (![string]::IsNullOrWhiteSpace($ServiceDirectory)) { + $root = [System.IO.Path]::Combine("$PSScriptRoot/../../../sdk", $ServiceDirectory) | Resolve-Path + $preRemovalScript = Join-Path -Path $root -ChildPath 'remove-test-resources-pre.ps1' + if (Test-Path $preRemovalScript) { + Log "Invoking pre resource removal script '$preRemovalScript'" + &$preRemovalScript -ResourceGroupName $ResourceGroupName @PSBoundParameters + } } Log "Deleting resource group '$ResourceGroupName'" diff --git a/eng/common/TestResources/remove-test-resources.yml b/eng/common/TestResources/remove-test-resources.yml index 40eec569fa3..d6688bd9881 100644 --- a/eng/common/TestResources/remove-test-resources.yml +++ b/eng/common/TestResources/remove-test-resources.yml @@ -7,6 +7,9 @@ # Assumes steps in deploy-test-resources.yml was run previously. Requires # environment variable: AZURE_RESOURCEGROUP_NAME and Az PowerShell module +parameters: + ServiceDirectory: '' + steps: - pwsh: > eng/common/TestResources/Remove-TestResources.ps1 @@ -15,6 +18,7 @@ steps: -SubscriptionId '$(azure-subscription-id)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret)' + -ServiceDirectory ${{ parameters.ServiceDirectory }} -Environment 'AzureCloud' -Force -Verbose @@ -29,6 +33,7 @@ steps: -SubscriptionId '$(azure-subscription-id-gov)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-gov)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-gov)' + -ServiceDirectory ${{ parameters.ServiceDirectory }} -Environment 'AzureUSGovernment' -Force -Verbose @@ -43,6 +48,7 @@ steps: -SubscriptionId '$(azure-subscription-id-cn)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-cn)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-cn)' + -ServiceDirectory ${{ parameters.ServiceDirectory }} -Environment 'AzureChinaCloud' -Force -Verbose From bb9a64ae13ea4c4ce049fd666edace9f5dfeac2c Mon Sep 17 00:00:00 2001 From: Azad Abbasi Date: Tue, 28 Apr 2020 13:32:13 -0700 Subject: [PATCH 3/4] Add quotes around the parameter invokation --- eng/common/TestResources/remove-test-resources.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/common/TestResources/remove-test-resources.yml b/eng/common/TestResources/remove-test-resources.yml index d6688bd9881..e79dfe1267e 100644 --- a/eng/common/TestResources/remove-test-resources.yml +++ b/eng/common/TestResources/remove-test-resources.yml @@ -9,7 +9,7 @@ parameters: ServiceDirectory: '' - + steps: - pwsh: > eng/common/TestResources/Remove-TestResources.ps1 @@ -18,7 +18,7 @@ steps: -SubscriptionId '$(azure-subscription-id)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret)' - -ServiceDirectory ${{ parameters.ServiceDirectory }} + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureCloud' -Force -Verbose @@ -33,7 +33,7 @@ steps: -SubscriptionId '$(azure-subscription-id-gov)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-gov)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-gov)' - -ServiceDirectory ${{ parameters.ServiceDirectory }} + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureUSGovernment' -Force -Verbose @@ -48,7 +48,7 @@ steps: -SubscriptionId '$(azure-subscription-id-cn)' -ProvisionerApplicationId '$(aad-azure-sdk-test-client-id-cn)' -ProvisionerApplicationSecret '$(aad-azure-sdk-test-client-secret-cn)' - -ServiceDirectory ${{ parameters.ServiceDirectory }} + -ServiceDirectory '${{ parameters.ServiceDirectory }}' -Environment 'AzureChinaCloud' -Force -Verbose From 5d33888bbe8d6d9816a9c45834778664b2f6619a Mon Sep 17 00:00:00 2001 From: Azad Abbasi Date: Tue, 28 Apr 2020 14:36:02 -0700 Subject: [PATCH 4/4] Remove mandatory flag --- eng/common/TestResources/Remove-TestResources.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1 index 0bef44d64e0..53debad343e 100644 --- a/eng/common/TestResources/Remove-TestResources.ps1 +++ b/eng/common/TestResources/Remove-TestResources.ps1 @@ -39,7 +39,7 @@ param ( [Parameter(ParameterSetName = 'ResourceGroup+Provisioner', Mandatory = $true)] [string] $ProvisionerApplicationSecret, - [Parameter(Mandatory = $false)] + [Parameter()] [string] $ServiceDirectory, [Parameter()]