Skip to content

Commit 605c4a6

Browse files
grizzlytheodoreTheodore Chang
andauthored
New-AzVmss fix edgeZone issue (#23602)
* fix EdgeZone issue by creating LB in the edge zone as well * add test * changelog --------- Co-authored-by: Theodore Chang <[email protected]>
1 parent 07a99cd commit 605c4a6

File tree

6 files changed

+2296
-37
lines changed

6 files changed

+2296
-37
lines changed

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ public void TestVirtualMachineScaleSet()
3333

3434
[Fact]
3535
[Trait(Category.AcceptanceType, Category.CheckIn)]
36-
public void TestVirtualMachineScaleSetInEdgeZone()
36+
public void TestVirtualMachineScaleSetEdgeZone()
3737
{
38-
TestRunner.RunTestScript("Test-VirtualMachineScaleSetInEdgeZone");
38+
TestRunner.RunTestScript("Test-VirtualMachineScaleSetEdgeZone");
3939
}
4040

4141
[Fact]

src/Compute/Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.ps1

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -375,42 +375,30 @@ function Test-VirtualMachineScaleSet-Common($IsManaged)
375375
}
376376
}
377377

378-
function Test-VirtualMachineScaleSetInEdgeZone
378+
<#
379+
.SYNOPSIS
380+
Test Virtual Machine Scale Set created in Edge Zone
381+
#>
382+
function Test-VirtualMachineScaleSetEdgeZone
379383
{
380-
$ResourceGroupName = Get-ComputeTestResourceName;
381-
$Location = "westus";
382-
$EdgeZone = "microsoftlosangeles1";
383-
$ScaleSetName = "scalesetinedgezone";
384-
$stnd = "Standard";
384+
$rgname = Get-ComputeTestResourceName;
385+
$loc = "EastUs2Euap";
386+
$EdgeZone = "microsoftrrdclab3";
387+
$vmssName = "scaleSetInEdgeZone";
388+
385389
try
386390
{
387-
$config = New-AzVmssConfig -Location $Location -EdgeZone $EdgeZone;
388-
Assert-AreEqual $config.ExtendedLocation.Name $EdgeZone
389-
390-
New-AzResourceGroup -ResourceGroupName $ResourceGroupName -Location $Location;
391-
392-
$VMLocalAdminUser = "LocalAdminUser";
393-
$VMLocalAdminSecurePassword = ConvertTo-SecureString $PLACEHOLDER -AsPlainText -Force;
391+
New-AzResourceGroup -Name $rgname -Location $loc -Force;
394392

395-
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
393+
$adminUsername = Get-ComputeTestResourceName;
394+
$password = Get-PasswordForVM | ConvertTo-SecureString -AsPlainText -Force;
395+
$vmCred = New-Object System.Management.Automation.PSCredential ($adminUsername, $password);
396396

397-
New-AzVmss `
398-
-SecurityType $stnd `
399-
-ResourceGroupName $ResourceGroupName `
400-
-Location $Location `
401-
-EdgeZone $EdgeZone `
402-
-VMScaleSetName $ScaleSetName `
403-
-VirtualNetworkName "myVnet" `
404-
-SubnetName "mySubnet" `
405-
-PublicIpAddressName "myPublicIPAddress" `
406-
-LoadBalancerName "myLoadBalancer" `
407-
-UpgradePolicyMode "Automatic" `
408-
-Credential $Credential `
409-
-DomainNameLabel "scalesetinedgezone-70f698"
410-
411-
$vmss = Get-AzVmss -ResourceGroupName $ResourceGroupName -VMScaleSetName $ScaleSetName
412-
413-
Assert-AreEqual $vmss.ExtendedLocation.Name $EdgeZone
397+
# Create Vmss
398+
$result = New-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName -Location $loc -EdgeZone $EdgeZone -Credential $vmCred -DomainNameLabel ('pubip' + $rgname);
399+
$vmssGet = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
400+
401+
Assert-AreEqual $vmssGet.ExtendedLocation.Name $EdgeZone
414402
}
415403
finally
416404
{

src/Compute/Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetEdgeZone.json

Lines changed: 2264 additions & 0 deletions
Large diffs are not rendered by default.

src/Compute/Compute/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
* Fixed the `New-AzVM` bug to avoid accessing the `EncryptionAtHost` property for subscriptions who cannot access it since it is behind a feature flag.
2929
* Updated `Get-AzVmExtension` to return instanceView when used with `-Status`.
3030
* Reverted SSH Private Key File permission changes in `New-AzVm`.
31+
* Fixed `New-AzVmss` to correctly work when using `-EdgeZone` by creating the Load Balancer in the correct edge zone.
3132

3233
## Version 7.0.0
3334
* Added update functionality in `Update-AzVmss` for parameters `SecurityType`, `EnableSecureBoot`, and `EnableVtpm` for the parameter set with the Put operation.

src/Compute/Compute/Manual/VirtualMachineScaleSetCreateOrUpdateMethod.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,8 @@ private async Task<ResourceConfig<VirtualMachineScaleSet>> SimpleParameterSetNor
332332
//sku.Basic is not compatible with multiple placement groups
333333
sku: (noZones && _cmdlet.SinglePlacementGroup.IsPresent)
334334
? LoadBalancerStrategy.Sku.Basic
335-
: LoadBalancerStrategy.Sku.Standard);
335+
: LoadBalancerStrategy.Sku.Standard,
336+
edgeZone : _cmdlet.EdgeZone);
336337

337338
var frontendIpConfiguration = loadBalancer.CreateFrontendIPConfiguration(
338339
name: _cmdlet.FrontendPoolName,
@@ -508,7 +509,8 @@ private async Task<ResourceConfig<VirtualMachineScaleSet>> SimpleParameterSetOrc
508509
//sku.Basic is not compatible with multiple placement groups
509510
sku: (noZones && _cmdlet.SinglePlacementGroup.IsPresent)
510511
? LoadBalancerStrategy.Sku.Basic
511-
: LoadBalancerStrategy.Sku.Standard);
512+
: LoadBalancerStrategy.Sku.Standard,
513+
edgeZone: _cmdlet.EdgeZone);
512514

513515
var frontendIpConfiguration = loadBalancer.CreateFrontendIPConfiguration(
514516
name: _cmdlet.FrontendPoolName,

src/Compute/Compute/Strategies/Network/LoadBalancerStrategy.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ static bool EvaluatePreExistingConfig(LoadBalancer configToCompare)
6161
public static ResourceConfig<LoadBalancer> CreateLoadBalancerConfig(
6262
this ResourceConfig<ResourceGroup> resourceGroup,
6363
string name,
64-
Sku sku)
64+
Sku sku,
65+
string edgeZone)
6566
=> Strategy.CreateResourceConfig(
6667
resourceGroup: resourceGroup,
6768
name: name,
@@ -70,7 +71,10 @@ public static ResourceConfig<LoadBalancer> CreateLoadBalancerConfig(
7071
Sku = new LoadBalancerSku
7172
{
7273
Name = sku.ToString()
73-
}
74+
},
75+
ExtendedLocation = edgeZone == null
76+
? null
77+
: new ExtendedLocation { Name = edgeZone }
7478
});
7579
}
7680
}

0 commit comments

Comments
 (0)