Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -465,5 +465,33 @@ public void TestEncryptionIdentityNotPartOfAzureVmssConfig()
{
TestRunner.RunTestScript("Test-EncryptionIdentityNotPartOfAzureVmssConfig");
}
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void testgennewazvmssconfig()
{
TestRunner.RunTestScript("TestGen-newazvmssconfig");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void testgennewazvmss()
{
TestRunner.RunTestScript("TestGen-newazvmss");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void testgenupdateazvmss()
{
TestRunner.RunTestScript("TestGen-updateazvmss");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void testgenupdateazvm()
{
TestRunner.RunTestScript("TestGen-updateazvm");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5789,3 +5789,240 @@ function Test-EncryptionIdentityNotPartOfAzureVmssConfig{
clean-ResourceGroup $rgName;
}
}

function TestGen-newazvmssconfig
{
# Setup
$rgname = Get-ComputeTestResourceName;
$loc = Get-Location;

try
{
# Common
New-AzResourceGroup -Name $rgname -Location $loc -Force;
$vmssName = 'vmss' + $rgname;

# Create VMSS Config with new parameters
$vmssConfig = New-AzVmssConfig -Location $loc `
-EnableAutomaticZoneRebalancingPolicy $true `
-AutomaticZoneRebalanceStrategy "Recreate" `
-AutomaticZoneRebalanceBehavior "CreateBeforeDelete" `
-AutomaticZoneRebalanceTargetInstanceCount 5;

# Validate VMSS Config properties
Assert-IsTrue $vmssConfig.EnableAutomaticZoneRebalancingPolicy;
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceStrategy "Recreate";
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceBehavior "CreateBeforeDelete";
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceTargetInstanceCount 5;

# Create VMSS using the config
New-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmssConfig;
$vmssGet = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;

# Validate VMSS properties after creation
Assert-IsTrue $vmssGet.EnableAutomaticZoneRebalancingPolicy;
Assert-AreEqual $vmssGet.AutomaticZoneRebalanceStrategy "Recreate";
Assert-AreEqual $vmssGet.AutomaticZoneRebalanceBehavior "CreateBeforeDelete";
Assert-AreEqual $vmssGet.AutomaticZoneRebalanceTargetInstanceCount 5;
}
finally
{
# Cleanup
Remove-AzResourceGroup -Name $rgname -Force -ErrorAction SilentlyContinue;
}
}

function TestGen-newazvmss
{
# Setup
$rgname = Get-ComputeTestResourceName;
$loc = Get-Location;

try
{
# Common
New-AzResourceGroup -Name $rgname -Location $loc -Force;

$vmssName = 'vs' + $rgname;
$adminUsername = Get-ComputeTestResourceName;
$password = Get-PasswordForVM;
$adminPassword = $password | ConvertTo-SecureString -AsPlainText -Force;
$cred = New-Object System.Management.Automation.PSCredential ($adminUsername, $adminPassword);

# Test New-AzVmssConfig with new parameters
$vmssConfig = New-AzVmssConfig -EnableAutomaticZoneRebalancingPolicy $true `
-AutomaticZoneRebalanceStrategy "Recreate" `
-AutomaticZoneRebalanceBehavior "CreateBeforeDelete" `
-AutomaticZoneRebalanceTargetInstanceCount 5;

Assert-IsNotNull $vmssConfig;
Assert-AreEqual $vmssConfig.EnableAutomaticZoneRebalancingPolicy $true;
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceStrategy "Recreate";
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceBehavior "CreateBeforeDelete";
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceTargetInstanceCount 5;

# Test New-AzVmss with the new configuration
$vmss = New-AzVmss -ResourceGroupName $rgname -Credential $cred -VMScaleSetName $vmssName -VMScaleSetConfig $vmssConfig;

Assert-IsNotNull $vmss;
Assert-AreEqual $vmss.VirtualMachineScaleSetName $vmssName;
Assert-AreEqual $vmss.EnableAutomaticZoneRebalancingPolicy $true;
Assert-AreEqual $vmss.AutomaticZoneRebalanceStrategy "Recreate";
Assert-AreEqual $vmss.AutomaticZoneRebalanceBehavior "CreateBeforeDelete";
Assert-AreEqual $vmss.AutomaticZoneRebalanceTargetInstanceCount 5;

# Test Update-AzVmss with new parameters
$vmssUpdated = Update-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName `
-EnableAutomaticZoneRebalancingPolicy $false `
-AutomaticZoneRebalanceStrategy "TargetScaleOut" `
-AutomaticZoneRebalanceTargetInstanceCount 10;

Assert-IsNotNull $vmssUpdated;
Assert-AreEqual $vmssUpdated.EnableAutomaticZoneRebalancingPolicy $false;
Assert-AreEqual $vmssUpdated.AutomaticZoneRebalanceStrategy "TargetScaleOut";
Assert-AreEqual $vmssUpdated.AutomaticZoneRebalanceTargetInstanceCount 10;
}
finally
{
# Cleanup
Remove-AzResourceGroup -Name $rgname -Force -ErrorAction SilentlyContinue;
}
}

function TestGen-updateazvmss
{
# Setup
$rgname = Get-ComputeTestResourceName;
$loc = Get-Location;

try
{
# Common
New-AzResourceGroup -Name $rgname -Location $loc -Force;

$vmssSize = 'Standard_D4s_v3';
$PublisherName = "MicrosoftWindowsServer";
$Offer = "WindowsServer";
$SKU = "2016-datacenter-gensecond";

# NRP
$vnetworkName = 'vnet' + $rgname;
$subnetName = 'subnet' + $rgname;
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix "10.0.0.0/24";
$vnet = New-AzVirtualNetwork -Name $vnetworkName -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
$vnet = Get-AzVirtualNetwork -Name $vnetworkName -ResourceGroupName $rgname;
$subnetId = $vnet.Subnets[0].Id;

# New VMSS Parameters
$vmssName = 'vmss' + $rgname;
$adminUsername = Get-ComputeTestResourceName;
$adminPassword = Get-PasswordForVM | ConvertTo-SecureString -AsPlainText -Force;

$imgRef = New-Object -TypeName 'Microsoft.Azure.Commands.Compute.Models.PSVirtualMachineImage';
$imgRef.PublisherName = $PublisherName;
$imgRef.Offer = $Offer;
$imgRef.Skus = $SKU;
$imgRef.Version = "latest";

$ipCfg = New-AzVmssIPConfig -Name 'test' -SubnetId $subnetId;

$vmss = New-AzVmssConfig -Location $loc -SkuCapacity 2 -SkuName $vmssSize -UpgradePolicyMode 'Manual' `
| Add-AzVmssNetworkInterfaceConfiguration -Name 'test' -Primary $true -IPConfiguration $ipCfg `
| Set-AzVmssOSProfile -ComputerNamePrefix 'test' -AdminUsername $adminUsername -AdminPassword $adminPassword `
| Set-AzVmssStorageProfile -OsDiskCreateOption 'FromImage' -OsDiskCaching 'ReadOnly' `
-ImageReferenceOffer $imgRef.Offer -ImageReferenceSku $imgRef.Skus -ImageReferenceVersion $imgRef.Version `
-ImageReferencePublisher $imgRef.PublisherName `
-EnableAutomaticZoneRebalancingPolicy $true `
-AutomaticZoneRebalanceStrategy 'Recreate' `
-AutomaticZoneRebalanceBehavior 'CreateBeforeDelete';

# Create VMSS
$result = New-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmss;
$vmssGet = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;

# Assert initial configuration
Assert-AreEqual $vmssGet.VirtualMachineProfile.AutomaticZoneRebalancingPolicy $true;
Assert-AreEqual $vmssGet.VirtualMachineProfile.AutomaticZoneRebalanceStrategy 'Recreate';
Assert-AreEqual $vmssGet.VirtualMachineProfile.AutomaticZoneRebalanceBehavior 'CreateBeforeDelete';

# Test update functionality
Update-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmssGet `
-EnableAutomaticZoneRebalancingPolicy $false `
-AutomaticZoneRebalanceStrategy 'TargetScaleOut' `
-AutomaticZoneRebalanceTargetInstanceCount 5;

$vmssGetUpdated = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;

# Assert updated configuration
Assert-AreEqual $vmssGetUpdated.VirtualMachineProfile.AutomaticZoneRebalancingPolicy $false;
Assert-AreEqual $vmssGetUpdated.VirtualMachineProfile.AutomaticZoneRebalanceStrategy 'TargetScaleOut';
Assert-AreEqual $vmssGetUpdated.VirtualMachineProfile.AutomaticZoneRebalanceTargetInstanceCount 5;
}
finally
{
# Cleanup
Remove-AzResourceGroup -Name $rgname -Force -AsJob;
}
}

function TestGen-updateazvm
{
# Setup
$rgname = Get-ComputeTestResourceName

try
{
# Common
$loc = Get-Location;
New-AzResourceGroup -Name $rgname -Location $loc -Force;

# New VMSS Parameters
$vmssName = 'vmssUpdateTest' + $rgname;
$adminUsername = 'TestUser';
$adminPassword = $PLACEHOLDER;
$securePassword = ConvertTo-SecureString $adminPassword -AsPlainText -Force;
$cred = New-Object System.Management.Automation.PSCredential ($adminUsername, $securePassword);

# Create VMSS
$Vmss = New-AzVmssConfig `
-Location $loc `
-SkuCapacity 2 `
-SkuName "Standard_DS1_v2" `
-EnableAutomaticZoneRebalancingPolicy $true `
-AutomaticZoneRebalanceStrategy "Recreate" `
-AutomaticZoneRebalanceBehavior "CreateBeforeDelete";

$Vmss = New-AzVmss `
-ResourceGroupName $rgname `
-Location $loc `
-Credential $cred `
-VMScaleSet $Vmss `
-Name $vmssName;

# Validate VMSS creation with new parameters
$createdVmss = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
Assert-AreEqual $true $createdVmss.EnableAutomaticZoneRebalancingPolicy;
Assert-AreEqual "Recreate" $createdVmss.AutomaticZoneRebalanceStrategy;
Assert-AreEqual "CreateBeforeDelete" $createdVmss.AutomaticZoneRebalanceBehavior;

# Update VMSS with new parameters
$updatedVmss = Update-AzVmss `
-ResourceGroupName $rgname `
-VMScaleSetName $vmssName `
-EnableAutomaticZoneRebalancingPolicy $false `
-AutomaticZoneRebalanceStrategy "TargetScaleOut" `
-AutomaticZoneRebalanceTargetInstanceCount 5;

# Validate VMSS update
$updatedVmssDetails = Get-AzVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
Assert-AreEqual $false $updatedVmssDetails.EnableAutomaticZoneRebalancingPolicy;
Assert-AreEqual "TargetScaleOut" $updatedVmssDetails.AutomaticZoneRebalanceStrategy;
Assert-AreEqual 5 $updatedVmssDetails.AutomaticZoneRebalanceTargetInstanceCount;

}
finally
{
# Cleanup
Remove-AzResourceGroup -Name $rgname -Force -Confirm:$false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -695,5 +695,12 @@ public void TestVirtualMachinePlacement()
{
TestRunner.RunTestScript("Test-VirtualMachinePlacement");
}
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void testgennewazvm()
{
TestRunner.RunTestScript("TestGen-newazvm");
}
}
}
51 changes: 50 additions & 1 deletion src/Compute/Compute.Test/ScenarioTests/VirtualMachineTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7945,4 +7945,53 @@ function Test-VirtualMachinePlacement
# Cleanup
Clean-ResourceGroup $rgname;
}
}
}
function TestGen-newazvm
{
# To have a test recording
Get-AzVm

$name = Get-ComputeTestResourceName;
$vmssName = 'vmss' + $name;
$location = Get-Location;

# Test New-AzVmssConfig with new parameters
$vmssConfig = New-AzVmssConfig -VMScaleSetName $vmssName -SkuCapacity 2 -Location $location `
-EnableAutomaticZoneRebalancingPolicy $true `
-AutomaticZoneRebalanceStrategy 'Recreate' `
-AutomaticZoneRebalanceBehavior 'CreateBeforeDelete' `
-AutomaticZoneRebalanceTargetInstanceCount 5;

# Validate New-AzVmssConfig
Assert-AreEqual $vmssConfig.EnableAutomaticZoneRebalancingPolicy $true
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceStrategy 'Recreate'
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceBehavior 'CreateBeforeDelete'
Assert-AreEqual $vmssConfig.AutomaticZoneRebalanceTargetInstanceCount 5

# Test Update-AzVmss with new parameters
$vmssConfigUpdated = Update-AzVmss -VMScaleSetName $vmssName `
-EnableAutomaticZoneRebalancingPolicy $false `
-AutomaticZoneRebalanceStrategy 'TargetScaleOut' `
-AutomaticZoneRebalanceTargetInstanceCount 10;

# Validate Update-AzVmss
Assert-AreEqual $vmssConfigUpdated.EnableAutomaticZoneRebalancingPolicy $false
Assert-AreEqual $vmssConfigUpdated.AutomaticZoneRebalanceStrategy 'TargetScaleOut'
Assert-AreEqual $vmssConfigUpdated.AutomaticZoneRebalanceTargetInstanceCount 10

# Test Update-AzVmss with partial parameters
$vmssConfigPartialUpdate = Update-AzVmss -VMScaleSetName $vmssName `
-AutomaticZoneRebalanceBehavior 'CreateBeforeDelete';

# Validate partial Update-AzVmss
Assert-AreEqual $vmssConfigPartialUpdate.AutomaticZoneRebalanceBehavior 'CreateBeforeDelete'

# Test New-AzVmssConfig without new parameters
$vmssConfigDefault = New-AzVmssConfig -VMScaleSetName $vmssName -SkuCapacity 2 -Location $location;

# Validate default New-AzVmssConfig
Assert-Null $vmssConfigDefault.EnableAutomaticZoneRebalancingPolicy
Assert-Null $vmssConfigDefault.AutomaticZoneRebalanceStrategy
Assert-Null $vmssConfigDefault.AutomaticZoneRebalanceBehavior
Assert-Null $vmssConfigDefault.AutomaticZoneRebalanceTargetInstanceCount
}
1 change: 1 addition & 0 deletions src/Compute/Compute/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

-->
## Upcoming Release
* Added parameters `EnableAutomaticZoneRebalancingPolicy`, `AutomaticZoneRebalanceStrategy`, `AutomaticZoneRebalanceBehavior`, and `AutomaticZoneRebalanceTargetInstanceCount` to `New-AzVmssConfig` and `Update-AzVmss`.
* Added new cmdlets `Add-AzVmssSkuProfileVMSize` and `Remove-AzVmssSkuProfileVMSize` to add and remove VM sizes to and from the VMSS SkuProfile.
* Added new parameters `ZonePlacementPolicy`, `IncludeZone`, `ExcludeZone`, and `AlignRegionalDisksToVMZone` to cmdlets `New-AzVM` and `New-AzVmConfig`
* Added new parameter `AlignRegionalDisksToVMZone` to cmdlet `Update-AzVM`.
Expand Down
Loading