Skip to content

Commit 0a23cc6

Browse files
authored
Fix issue creating the VMSS reference object, resulting in incorrect NAT Pool migrations (#95)
* added progress bars * fix vmss reference object creation * version bump
1 parent d872559 commit 0a23cc6

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

AzureBasicLoadBalancerUpgrade/module/AzureBasicLoadBalancerUpgrade/AzureBasicLoadBalancerUpgrade.psd1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
RootModule = 'AzureBasicLoadBalancerUpgrade'
1313

1414
# Version number of this module.
15-
ModuleVersion = '2.3.2'
15+
ModuleVersion = '2.3.3'
1616

1717
# Supported PSEditions
1818
# CompatiblePSEditions = @()
@@ -107,7 +107,7 @@
107107
# IconUri = ''
108108

109109
# ReleaseNotes of this module
110-
ReleaseNotes = 'Added progress bar to the migration process.'
110+
ReleaseNotes = 'Fixed issue with creating a reference object of the VMSS, resulting inconsistent NAT Pool membership'
111111

112112
# Prerelease string of this module
113113
# Prerelease = ''

AzureBasicLoadBalancerUpgrade/module/AzureBasicLoadBalancerUpgrade/modules/ScenariosMigration/ScenariosMigration.psm1

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ function PublicLBMigrationVmss {
9898
[Parameter(Mandatory = $True)][string] $StandardLoadBalancerName,
9999
[Parameter(Mandatory = $true)][string] $RecoveryBackupPath,
100100
[Parameter(Mandatory = $true)][psobject] $scenario,
101-
[Parameter(Mandatory = $false)][switch]$outputMigrationValiationObj
101+
[Parameter(Mandatory = $false)][switch]$outputMigrationValiationObj,
102+
[Parameter(Mandatory = $false)][Microsoft.Azure.Commands.Compute.Automation.Models.PSVirtualMachineScaleSet] $refVmss
102103
)
103104

104105
$progressParams = @{
@@ -111,7 +112,6 @@ function PublicLBMigrationVmss {
111112

112113
# Creating a vmss object before it gets changed as a reference for the backend pool migration
113114
Write-Progress -Status "Backing up VMSS" -ParentId 4 @progressParams
114-
$refVmss = GetVmssFromBasicLoadBalancer -BasicLoadBalancer $BasicLoadBalancer
115115

116116
# Backup VMSS Configurations
117117
BackupVmss -BasicLoadBalancer $BasicLoadBalancer -RecoveryBackupPath $RecoveryBackupPath
@@ -180,7 +180,8 @@ function InternalLBMigrationVmss {
180180
[Parameter(Mandatory = $True)][string] $StandardLoadBalancerName,
181181
[Parameter(Mandatory = $true)][string] $RecoveryBackupPath,
182182
[Parameter(Mandatory = $true)][psobject] $scenario,
183-
[Parameter(Mandatory = $false)][switch]$outputMigrationValiationObj
183+
[Parameter(Mandatory = $false)][switch]$outputMigrationValiationObj,
184+
[Parameter(Mandatory = $false)][Microsoft.Azure.Commands.Compute.Automation.Models.PSVirtualMachineScaleSet] $refVmss
184185
)
185186

186187
$progressParams = @{
@@ -192,7 +193,6 @@ function InternalLBMigrationVmss {
192193

193194
# Creating a vmss object before it gets changed as a reference for the backend pool migration
194195
Write-Progress -Status "Backing up VMSS" -PercentComplete ((1/14) * 100) @progressParams
195-
$refVmss = GetVmssFromBasicLoadBalancer -BasicLoadBalancer $BasicLoadBalancer
196196

197197
# Backup VMSS Configurations
198198
Write-Progress -Status "Backing up VMSS Configurations" -PercentComplete ((2/14) * 100) @progressParams
@@ -838,6 +838,11 @@ function LBMigrationPrep {
838838
Write-Progress -Status "Backing up Basic Load Balancer Configurations" -PercentComplete ((2/4) * 100) @progressParams
839839
BackupBasicLoadBalancer -BasicLoadBalancer $migrationConfig.BasicLoadBalancer -RecoveryBackupPath $RecoveryBackupPath
840840

841+
# get a reference copy of the vmss prior to modifying it
842+
If ($migrationConfig.scenario.backendType -eq 'VMSS') {
843+
$migrationConfig['vmssRefObject'] = GetVmssFromBasicLoadBalancer -BasicLoadBalancer $migrationConfig.BasicLoadBalancer
844+
}
845+
841846
If ($migrationConfig.scenario.ExternalOrInternal -eq 'External') {
842847
# Migrate public IP addresses on Basic LB to static (if dynamic)
843848
Write-Progress -Status "Migrating public IP addresses on Basic LB to static (if dynamic)" -PercentComplete ((3/4) * 100) @progressParams
@@ -850,6 +855,9 @@ function LBMigrationPrep {
850855

851856
log -message "[LBMigrationPrep] Completed preparing load balancer '$($migrationConfig.BasicLoadBalancer.Name)' for migration"
852857
}
858+
859+
# return the migration configs with the reference vmss object
860+
return $migrationConfigs
853861
}
854862

855863
Export-ModuleMember -Function PublicLBMigrationVmss

AzureBasicLoadBalancerUpgrade/module/AzureBasicLoadBalancerUpgrade/modules/Start-AzBasicLoadBalancerUpgrade/Start-AzBasicLoadBalancerUpgrade.psm1

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ function Start-AzBasicLoadBalancerUpgrade {
252252
# verify basic load balancer configuration is a supported scenario
253253

254254
## verify scenario for a single load balancer
255-
Write-Progress -Activity "Validating Migration Scenario" -Status "Validating Migration Scenario" -Id 2
255+
Write-Progress -Activity "Validating Migration Scenario" -Status "Validating Migration Scenario" -PercentComplete 0 -Id 2
256256
If ($PSCmdlet.ParameterSetName -ne 'MultiLB') {
257257
if ($PSBoundParameters.ContainsKey("StandardLoadBalancerName")) {
258258
$StdLoadBalancerName = $StandardLoadBalancerName
@@ -268,6 +268,7 @@ function Start-AzBasicLoadBalancerUpgrade {
268268
BasicLoadBalancer = $BasicLoadBalancer
269269
StandardLoadBalancerName = $StdLoadBalancerName
270270
scenario = $scenario
271+
vmssRefObject = ''
271272
})
272273

273274
if ($validateScenarioOnly) {
@@ -314,16 +315,16 @@ function Start-AzBasicLoadBalancerUpgrade {
314315
# prepare for migration by backing up the basic LB, upgrading Public IPs, and deleting the LB
315316
# this is done before the migration starts to ensure that all basic LBs are disassociated with any backend pool members, avoiding a mixed SKU scenario which would otherwise occur
316317

317-
Write-Progress -Activity "Preparing for Migration" -Status "Preparing for Migration" -Id 3
318+
Write-Progress -Activity "Preparing for Migration" -Status "Preparing for Migration" -Id 3 -PercentComplete 0
318319
log -Message "[Start-AzBasicLoadBalancerUpgrade] Preparing for migration by backing up and deleteing the basic LB(s)"
319-
LBMigrationPrep -migrationConfigs $migrationConfigs -RecoveryBackupPath $RecoveryBackupPath
320+
$migrationConfigs = LBMigrationPrep -migrationConfigs $migrationConfigs -RecoveryBackupPath $RecoveryBackupPath
320321
Write-Progress -Activity "Preparing for Migration" -Status "Preparing for Migration" -Completed -Id 3
321322

322323
# initiate the migration of each load balancer in the migration config array
323324
Write-Progress -Activity "Starting Migration" -Status "Starting Migration" -Id 4
324325
$migrationConfigsCompleted = 0
325326
ForEach ($migrationConfig in $migrationConfigs) {
326-
Write-Progress -Activity "Starting Migration" -Status "Starting migration of basic load balancer '$($migrationConfig.BasicLoadBalancer.Name)'" -Id 4
327+
Write-Progress -Activity "Starting Migration" -Status "Starting migration of basic load balancer '$($migrationConfig.BasicLoadBalancer.Name)'" -Id 4 -PercentComplete 0
327328
log -Message "[Start-AzBasicLoadBalancerUpgrade] Starting migration for Basic Load Balancer '$($migrationConfig.BasicLoadBalancer.Name)' in Resource Group '$($migrationConfig.BasicLoadBalancer.ResourceGroupName)'"
328329

329330
$standardScenarioParams = @{
@@ -358,15 +359,15 @@ function Start-AzBasicLoadBalancerUpgrade {
358359
switch ($migrationConfig.scenario.ExternalOrInternal) {
359360
'internal' {
360361
if ((!$PSBoundParameters.ContainsKey("FailedMigrationRetryFilePathLB"))) {
361-
InternalLBMigrationVmss @standardScenarioParams -RecoveryBackupPath $RecoveryBackupPath
362+
InternalLBMigrationVmss @standardScenarioParams -RecoveryBackupPath $RecoveryBackupPath -refVmss $migrationConfig.vmssRefObject
362363
}
363364
else {
364365
RestoreInternalLBMigrationVmss @standardScenarioParams -vmss $vmss
365366
}
366367
}
367368
'external' {
368369
if ((!$PSBoundParameters.ContainsKey("FailedMigrationRetryFilePathLB"))) {
369-
PublicLBMigrationVmss @standardScenarioParams -RecoveryBackupPath $RecoveryBackupPath
370+
PublicLBMigrationVmss @standardScenarioParams -RecoveryBackupPath $RecoveryBackupPath -refVmss $migrationConfig.vmssRefObject
370371
}
371372
else {
372373
RestoreExternalLBMigrationVmss @standardScenarioParams -vmss $vmss

AzureBasicLoadBalancerUpgrade/testEnvs/scenarios/027-service-fabric-basic-lb-mr-silver.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
},
2222
"clusterName": {
2323
"type": "string",
24-
"defaultValue": "clustermtb7",
24+
"defaultValue": "[concat('cluster',substring(uniqueString(deployment().properties.templateHash),0,4))]",
2525
"metadata": {
2626
"description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only"
2727
}

0 commit comments

Comments
 (0)