Public/Misc/Retry/Set-ApiRetryConfig.ps1
function Set-ApiRetryConfig { <# .SYNOPSIS Configures global retry behavior for Azure DevOps API calls. .DESCRIPTION This function allows you to configure the default retry behavior for all Azure DevOps API calls. These settings will be used by default unless overridden in individual function calls. .PARAMETER RetryCount The maximum number of retry attempts for transient failures. Default is 3. .PARAMETER RetryDelay The base delay in seconds between retry attempts. Default is 1 second. .PARAMETER DisableRetry Disables retry logic completely for all API calls. .PARAMETER MaxRetryDelay The maximum delay in seconds between retries. Default is 30 seconds. .PARAMETER UseExponentialBackoff Whether to use exponential backoff for retry delays. Default is $true. .PARAMETER UseJitter Whether to add random jitter to retry delays. Default is $true. .PARAMETER PassThru Returns the current retry configuration. .EXAMPLE Set-ApiRetryConfig -RetryCount 5 -RetryDelay 2 .EXAMPLE Set-ApiRetryConfig -DisableRetry .EXAMPLE $config = Set-ApiRetryConfig -PassThru #> [CmdletBinding()] param( [ValidateRange(0, 10)] [int] $RetryCount = 3, [ValidateRange(0.1, 300)] [double] $RetryDelay = 1.0, [switch] $DisableRetry, [ValidateRange(1, 300)] [double] $MaxRetryDelay = 30.0, [bool] $UseExponentialBackoff = $true, [bool] $UseJitter = $true, [switch] $PassThru ) process { # Update global configuration if ($PSBoundParameters.ContainsKey('RetryCount')) { $global:AzureDevOpsApi_RetryConfig.RetryCount = $RetryCount } if ($PSBoundParameters.ContainsKey('RetryDelay')) { $global:AzureDevOpsApi_RetryConfig.RetryDelay = $RetryDelay } if ($PSBoundParameters.ContainsKey('DisableRetry')) { $global:AzureDevOpsApi_RetryConfig.DisableRetry = $DisableRetry.IsPresent -and $DisableRetry } if ($PSBoundParameters.ContainsKey('MaxRetryDelay')) { $global:AzureDevOpsApi_RetryConfig.MaxRetryDelay = $MaxRetryDelay } if ($PSBoundParameters.ContainsKey('UseExponentialBackoff')) { $global:AzureDevOpsApi_RetryConfig.UseExponentialBackoff = $UseExponentialBackoff } if ($PSBoundParameters.ContainsKey('UseJitter')) { $global:AzureDevOpsApi_RetryConfig.UseJitter = $UseJitter } Write-Verbose "Updated Azure DevOps API retry configuration" if ($PassThru.IsPresent -and $PassThru) { return $global:AzureDevOpsApi_RetryConfig.Clone() } } } |