Skip to content

Commit efa223b

Browse files
committed
Add sleep for network rule application
1 parent b99573d commit efa223b

4 files changed

Lines changed: 20 additions & 8 deletions

File tree

eng/common/TestResources/New-TestResources.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ param (
117117
$NewTestResourcesRemainingArguments
118118
)
119119

120+
. (Join-Path $PSScriptRoot .. scripts Helpers Resource-Helpers.ps1)
120121
. $PSScriptRoot/TestResources-Helpers.ps1
121122
. $PSScriptRoot/SubConfig-Helpers.ps1
122123

eng/common/TestResources/Remove-TestResources.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ $verifyDeleteScript = {
257257
# Get any resources that can be purged after the resource group is deleted coerced into a collection even if empty.
258258
$purgeableResources = Get-PurgeableGroupResources $ResourceGroupName
259259

260-
SetStorageNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -Override -CI:$CI
261-
Remove-WormStorageAccounts -GroupPrefix $ResourceGroupName
260+
SetResourceNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -Override -CI:$CI
261+
Remove-WormStorageAccounts -GroupPrefix $ResourceGroupName -CI:$CI
262262

263263
Log "Deleting resource group '$ResourceGroupName'"
264264
if ($Force -and !$purgeableResources) {

eng/common/scripts/Helpers/Resource-Helpers.ps1

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ function Wait-PurgeableResourceJob {
213213
function Remove-WormStorageAccounts() {
214214
[CmdletBinding(SupportsShouldProcess = $True)]
215215
param(
216-
[string]$GroupPrefix
216+
[string]$GroupPrefix,
217+
[switch]$CI
217218
)
218219

219220
$ErrorActionPreference = 'Stop'
@@ -222,8 +223,8 @@ function Remove-WormStorageAccounts() {
222223
# DO NOT REMOVE THIS
223224
# We call this script from live test pipelines as well, and a string mismatch/error could blow away
224225
# some static storage accounts we rely on
225-
if (!$groupPrefix -or !$GroupPrefix.StartsWith('rg-')) {
226-
throw "The -GroupPrefix parameter must start with 'rg-'"
226+
if (!$groupPrefix -or ($CI -and !$GroupPrefix.StartsWith('rg-'))) {
227+
throw "The -GroupPrefix parameter must not be empty, or must start with 'rg-' in CI contexts"
227228
}
228229

229230
$groups = Get-AzResourceGroup | Where-Object { $_.ResourceGroupName.StartsWith($GroupPrefix) } | Where-Object { $_.ProvisioningState -ne 'Deleting' }
@@ -274,12 +275,14 @@ function Remove-WormStorageAccounts() {
274275
try {
275276
Write-Host "Removing immutability policies - account: $($ctx.StorageAccountName), group: $($group.ResourceGroupName)"
276277
$null = $ctx | Get-AzStorageContainer | Get-AzStorageBlob | Remove-AzStorageBlobImmutabilityPolicy
277-
} catch {}
278+
}
279+
catch {}
278280

279281
try {
280282
$ctx | Get-AzStorageContainer | Get-AzStorageBlob | Remove-AzStorageBlob -Force
281283
$succeeded = $true
282-
} catch {
284+
}
285+
catch {
283286
Write-Warning "Failed to remove blobs - account: $($ctx.StorageAccountName), group: $($group.ResourceGroupName)"
284287
Write-Warning $_
285288
}
@@ -314,6 +317,7 @@ function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowI
314317
$storageAccounts = Retry { Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.Storage/storageAccounts" }
315318
# Add client IP to storage account when running as local user. Pipeline's have their own vnet with access
316319
if ($storageAccounts) {
320+
$appliedRule = $false
317321
foreach ($account in $storageAccounts) {
318322
$rules = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -AccountName $account.Name
319323
if ($rules -and ($Override -or $rules.DefaultAction -eq "Allow")) {
@@ -322,13 +326,15 @@ function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowI
322326
if ($CI -and $env:PoolSubnet) {
323327
Write-Host "Enabling access to '$($account.Name)' from pipeline subnet $($env:PoolSubnet)"
324328
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -VirtualNetworkResourceId $env:PoolSubnet }
329+
$appliedRule = $true
325330
}
326331
elseif ($AllowIpRanges) {
327332
Write-Host "Enabling access to '$($account.Name)' to $($AllowIpRanges.Length) IP ranges"
328333
$ipRanges = $AllowIpRanges | ForEach-Object {
329334
@{ Action = 'allow'; IPAddressOrRange = $_ }
330335
}
331336
Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -IPRule $ipRanges | Out-Null }
337+
$appliedRule = $true
332338
}
333339
elseif (!$CI) {
334340
Write-Host "Enabling access to '$($account.Name)' from client IP"
@@ -343,9 +349,14 @@ function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowI
343349
}
344350
}
345351
Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -IPAddressOrRange $clientIp | Out-Null }
352+
$appliedRule = $true
346353
}
347354
}
348355
}
356+
if ($appliedRule) {
357+
Write-Host "Sleeping for 15 seconds to allow network rules to take effect"
358+
Start-Sleep 15
359+
}
349360
}
350361
}
351362

eng/scripts/live-test-resource-cleanup.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ function DeleteAndPurgeGroups([array]$toDelete) {
436436
# can be left around which prevent deletion.
437437
if ($rg.Tags?.ContainsKey('ServiceDirectory') -and $rg.Tags.ServiceDirectory -like '*storage*') {
438438
SetStorageNetworkAccessRules -ResourceGroupName $rg.ResourceGroupName -Override -CI:($null -ne $env:SYSTEM_TEAMPROJECTID)
439-
Remove-WormStorageAccounts -GroupPrefix $rg.ResourceGroupName
439+
Remove-WormStorageAccounts -GroupPrefix $rg.ResourceGroupName -CI:($null -ne $env:SYSTEM_TEAMPROJECTID)
440440
} else {
441441
Write-Host ($rg | Remove-AzResourceGroup -Force -AsJob).Name
442442
}

0 commit comments

Comments
 (0)