Skip to content

Commit 79e2ac2

Browse files
fix: Enhance subscription handling in post-deploy script for non-interactive mode
1 parent cabd92a commit 79e2ac2

1 file changed

Lines changed: 43 additions & 33 deletions

File tree

infra/scripts/post_deploy.ps1

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -494,40 +494,50 @@ try {
494494
$currentSubscriptionId = az account show --query id -o tsv
495495
$currentSubscriptionName = az account show --query name -o tsv
496496

497-
if (-not $NonInteractive -and $script:azSubscriptionId -and $currentSubscriptionId -ne $script:azSubscriptionId) {
498-
Write-Host "Current subscription is $currentSubscriptionName ( $currentSubscriptionId )."
499-
$confirmation = Read-Host "Do you want to continue with this subscription? (y/n)"
500-
if ($confirmation -notin @("y", "Y")) {
501-
$availableSubscriptions = az account list --query "[?state=='Enabled'].[name,id]" --output tsv
502-
$subscriptions = $availableSubscriptions -split "`n" | ForEach-Object { $_.Split("`t") }
503-
504-
do {
505-
Write-Host ""
506-
Write-Host "Available Subscriptions:"
507-
Write-Host "========================"
508-
for ($i = 0; $i -lt $subscriptions.Count; $i += 2) {
509-
$index = ($i / 2) + 1
510-
Write-Host "$index. $($subscriptions[$i]) ( $($subscriptions[$i + 1]) )"
511-
}
512-
Write-Host "========================"
513-
514-
$subscriptionIndex = Read-Host "Enter the number of the subscription (1-$([int]($subscriptions.Count / 2)))"
515-
516-
if ($subscriptionIndex -match '^\d+$' -and [int]$subscriptionIndex -ge 1 -and [int]$subscriptionIndex -le ($subscriptions.Count / 2)) {
517-
$selectedIndex = ([int]$subscriptionIndex - 1) * 2
518-
$selectedSubscriptionName = $subscriptions[$selectedIndex]
519-
$selectedSubscriptionId = $subscriptions[$selectedIndex + 1]
520-
az account set --subscription $selectedSubscriptionId
521-
Write-Host "Switched to subscription: $selectedSubscriptionName ( $selectedSubscriptionId )"
522-
$script:azSubscriptionId = $selectedSubscriptionId
523-
break
524-
} else {
525-
Write-Host "Invalid selection. Please try again." -ForegroundColor Red
526-
}
527-
} while ($true)
497+
if ($script:azSubscriptionId -and $currentSubscriptionId -ne $script:azSubscriptionId) {
498+
if ($NonInteractive) {
499+
# In non-interactive mode, auto-switch to target subscription
500+
$targetSubscriptionName = az account show --subscription $script:azSubscriptionId --query name -o tsv
501+
Write-Host "Switching to target subscription: $targetSubscriptionName ( $script:azSubscriptionId )"
502+
az account set --subscription $script:azSubscriptionId
503+
$currentSubscriptionId = $script:azSubscriptionId
504+
$currentSubscriptionName = $targetSubscriptionName
528505
} else {
529-
az account set --subscription $currentSubscriptionId
530-
$script:azSubscriptionId = $currentSubscriptionId
506+
# In interactive mode, prompt user
507+
Write-Host "Current subscription is $currentSubscriptionName ( $currentSubscriptionId )."
508+
$confirmation = Read-Host "Do you want to continue with this subscription? (y/n)"
509+
if ($confirmation -notin @("y", "Y")) {
510+
$availableSubscriptions = az account list --query "[?state=='Enabled'].[name,id]" --output tsv
511+
$subscriptions = $availableSubscriptions -split "`n" | ForEach-Object { $_.Split("`t") }
512+
513+
do {
514+
Write-Host ""
515+
Write-Host "Available Subscriptions:"
516+
Write-Host "========================"
517+
for ($i = 0; $i -lt $subscriptions.Count; $i += 2) {
518+
$index = ($i / 2) + 1
519+
Write-Host "$index. $($subscriptions[$i]) ( $($subscriptions[$i + 1]) )"
520+
}
521+
Write-Host "========================"
522+
523+
$subscriptionIndex = Read-Host "Enter the number of the subscription (1-$([int]($subscriptions.Count / 2)))"
524+
525+
if ($subscriptionIndex -match '^\d+$' -and [int]$subscriptionIndex -ge 1 -and [int]$subscriptionIndex -le ($subscriptions.Count / 2)) {
526+
$selectedIndex = ([int]$subscriptionIndex - 1) * 2
527+
$selectedSubscriptionName = $subscriptions[$selectedIndex]
528+
$selectedSubscriptionId = $subscriptions[$selectedIndex + 1]
529+
az account set --subscription $selectedSubscriptionId
530+
Write-Host "Switched to subscription: $selectedSubscriptionName ( $selectedSubscriptionId )"
531+
$script:azSubscriptionId = $selectedSubscriptionId
532+
break
533+
} else {
534+
Write-Host "Invalid selection. Please try again." -ForegroundColor Red
535+
}
536+
} while ($true)
537+
} else {
538+
az account set --subscription $currentSubscriptionId
539+
$script:azSubscriptionId = $currentSubscriptionId
540+
}
531541
}
532542
} else {
533543
Write-Host "Proceeding with subscription: $currentSubscriptionName ( $currentSubscriptionId )"

0 commit comments

Comments
 (0)