|
2 | 2 |
|
3 | 3 | . "$PSScriptRoot/AzureUtilityRest.ps1" |
4 | 4 |
|
5 | | -function Get-AzureStorageAccountResourceGroupName |
6 | | -{ |
| 5 | +function Get-AzureStorageAccountResourceGroupName { |
7 | 6 | param([string]$storageAccountName) |
8 | 7 |
|
9 | | - $ARMStorageAccountResourceType = "Microsoft.Storage/storageAccounts" |
10 | | - if (-not [string]::IsNullOrEmpty($storageAccountName)) |
11 | | - { |
12 | | - Write-Verbose "[Azure Call]Getting resource details for azure storage account resource: $storageAccountName with resource type: $ARMStorageAccountResourceType" |
13 | | - $azureStorageAccountResourceDetails = Az.Storage\Get-AzStorageAccount -ErrorAction Stop | Where-Object { $_.StorageAccountName -eq $storageAccountName } |
14 | | - |
15 | | - Write-Verbose "[Azure Call]Retrieved resource details successfully for azure storage account resource: $storageAccountName with resource type: $ARMStorageAccountResourceType" |
| 8 | + $ARMStorageAccountResourceType = "Microsoft.Storage/storageAccounts" |
| 9 | + |
| 10 | + if (-not [string]::IsNullOrEmpty($storageAccountName)) { |
| 11 | + Write-Verbose "[Azure Call] Getting resource details for Azure storage account resource: $storageAccountName with resource type: $ARMStorageAccountResourceType" |
16 | 12 |
|
| 13 | + $maxRetries = 3 |
| 14 | + $retryDelay = 30 |
| 15 | + |
| 16 | + for ($retryCnt = 0; $retryCnt -le $maxRetries; $retryCnt++) { |
| 17 | + try { |
| 18 | + # Attempt to get the Azure Storage Account details |
| 19 | + $azureStorageAccountResourceDetails = Az.Storage\Get-AzStorageAccount -ErrorAction Stop | |
| 20 | + Where-Object { $_.StorageAccountName -eq $storageAccountName } |
| 21 | + Write-Verbose "[Azure Call] Retrieved resource details successfully for Azure storage account resource: $storageAccountName with resource type: $ARMStorageAccountResourceType" |
| 22 | + # If successful, exit the loop |
| 23 | + break |
| 24 | + } |
| 25 | + catch { |
| 26 | + $errorMessage = $_.Exception.Message |
| 27 | + # Retry logic for HTTP 429 (Too Many Requests) |
| 28 | + if ($_.Exception.Response.StatusCode -eq 429) { |
| 29 | + Write-Verbose "Exception Message: $($_.Exception.Response.Message)" |
| 30 | + Write-Verbose "Exception Response StatusCode: $($_.Exception.Response.StatusCode)" |
| 31 | + # Wait before retrying |
| 32 | + Start-Sleep -Seconds $retryDelay |
| 33 | + continue |
| 34 | + } |
| 35 | + else { |
| 36 | + # For other errors, display the message and exit the loop |
| 37 | + Write-Verbose "[Error]: $errorMessage" |
| 38 | + break |
| 39 | + } |
| 40 | + } |
| 41 | + } |
| 42 | + |
17 | 43 | $azureResourceGroupName = $azureStorageAccountResourceDetails.ResourceGroupName |
18 | | - if ([string]::IsNullOrEmpty($azureResourceGroupName)) |
19 | | - { |
20 | | - Write-Verbose "(ARM)Storage account: $storageAccountName not found" |
| 44 | + if ([string]::IsNullOrEmpty($azureResourceGroupName)) { |
| 45 | + Write-Verbose "(ARM) Storage account: $storageAccountName not found" |
21 | 46 | Write-Telemetry "Task_InternalError" "RMStorageAccountNotFound" |
22 | 47 | Throw (Get-VstsLocString -Key "AFC_StorageAccountNotFound" -ArgumentList $storageAccountName) |
23 | 48 | } |
|
0 commit comments