Skip to content

Commit 66a378c

Browse files
committed
Add Repair-AzureRmVmssServiceFabricUpdateDomain cmdlet
1 parent c311818 commit 66a378c

File tree

9 files changed

+8186
-3
lines changed

9 files changed

+8186
-3
lines changed

src/ResourceManager/Compute/AzureRM.Compute.psd1

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,14 +176,16 @@ CmdletsToExport = 'Remove-AzureRmAvailabilitySet', 'Get-AzureRmAvailabilitySet',
176176
'Disable-AzureRmVmssDiskEncryption',
177177
'Get-AzureRmVmssDiskEncryption', 'Get-AzureRmVmssVMDiskEncryption',
178178
'Export-AzureRmLogAnalyticRequestRateByInterval',
179-
'Export-AzureRmLogAnalyticThrottledRequests'
179+
'Export-AzureRmLogAnalyticThrottledRequests',
180+
'Repair-AzureRmVmssServiceFabricUpdateDomain'
180181

181182
# Variables to export from this module
182183
# VariablesToExport = @()
183184

184185
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
185186
AliasesToExport = 'Get-AzureRmVmssDiskEncryptionStatus',
186-
'Get-AzureRmVmssVMDiskEncryptionStatus'
187+
'Get-AzureRmVmssVMDiskEncryptionStatus',
188+
'Repair-AzureRmVmssServiceFabricUD'
187189

188190
# DSC resources to export from this module
189191
# DscResourcesToExport = @()

src/ResourceManager/Compute/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Current Release
21+
* `Repair-AzureRmVmssServiceFabricUpdateDomain` cmdlet is added.
2122

2223
## Version 4.6.0
2324
* `Get-AzureRmVmssDiskEncryptionStatus` supports encryption status at data disk level

src/ResourceManager/Compute/Commands.Compute.Test/Common/ComputeTestController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public void RunPsTestWorkflow(
155155
helper.RMStorageModule,
156156
helper.GetRMModulePath("AzureRM.Compute.psd1"),
157157
helper.GetRMModulePath("AzureRM.Network.psd1"),
158+
helper.GetRMModulePath("AzureRM.ServiceFabric.psd1"),
158159
helper.RMStorageDataPlaneModule,
159160
"AzureRM.Storage.ps1",
160161
"AzureRM.Resources.ps1");

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,12 @@ public void TestVirtualMachineScaleSetWriteAcceleratorUpdate()
114114
{
115115
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetWriteAcceleratorUpdate");
116116
}
117+
118+
[Fact]
119+
[Trait(Category.AcceptanceType, Category.CheckIn)]
120+
public void TestVirtualMachineScaleSetForceUDWalk()
121+
{
122+
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetForceUDWalk");
123+
}
117124
}
118125
}

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

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1465,3 +1465,128 @@ function Test-VirtualMachineScaleSetWriteAcceleratorUpdate
14651465
Clean-ResourceGroup $rgname
14661466
}
14671467
}
1468+
1469+
<#
1470+
.SYNOPSIS
1471+
Test Virtual Machine Scale Set Force Service Fabric UD Walk
1472+
#>
1473+
function Test-VirtualMachineScaleSetForceUDWalk
1474+
{
1475+
# Setup
1476+
$rgname = "vmsssfudtest"
1477+
1478+
try
1479+
{
1480+
# Common
1481+
$loc = 'CentralUS';
1482+
$adminUsername = 'Foo12';
1483+
$adminPassword = $PLACEHOLDER;
1484+
New-AzureRMResourceGroup -Name $rgname -Location $loc -Force;
1485+
$testMode = Get-ComputeTestMode;
1486+
1487+
if ($testMode -eq [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
1488+
{
1489+
$sf_endpoint = "https://${loc}.servicefabric.azure.com/runtime/clusters/828bd729-f938-41de-8fba-24139669e2d2";
1490+
$sf_nodename = "nt1vm";
1491+
$sf_durability = "Bronze";
1492+
}
1493+
else
1494+
{
1495+
###
1496+
### For record test, first run the following commands.
1497+
###
1498+
$password = ConvertTo-SecureString $adminPassword -AsPlainText -Force;
1499+
New-AzureRmServiceFabricCluster -ResourceGroupName $rgname -Location $loc -VmPassword $password;
1500+
$sf_cluster = Get-AzureRmServiceFabricCluster -ResourceGroupName $rgname -Name $rgname;
1501+
$sf_endpoint = $sf_cluster.ClusterEndpoint;
1502+
$sf_nodename = $sf_cluster.NodeTypes[0].Name;
1503+
$sf_durability = $sf_cluster.NodeTypes[0].DurabilityLevel;
1504+
}
1505+
1506+
# NRP
1507+
$subnet = New-AzureRMVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
1508+
$vnet = New-AzureRMVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
1509+
$vnet = Get-AzureRMVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
1510+
$subnetId = $vnet.Subnets[0].Id;
1511+
1512+
# New VMSS Parameters
1513+
$vmssName = 'vmss' + $rgname;
1514+
$imgRef = Get-DefaultCRPImage -loc $loc;
1515+
1516+
$extname = 'udwalktest';
1517+
$publisher = 'Microsoft.Azure.ServiceFabric';
1518+
$exttype = 'ServiceFabricNode';
1519+
$extver = '1.0';
1520+
$settings = @{"clusterEndpoint"=${sf_endpoint};"nodeTypeRef"=${sf_nodename};"durabilityLevel"=${sf_durability};"enableParallelJobs"="true";"dataPath"="D:\\\\SvcFab"};
1521+
1522+
$ipCfg = New-AzureRmVmssIPConfig -Name 'test' -SubnetId $subnetId;
1523+
$vmss = New-AzureRmVmssConfig -Location $loc -SkuCapacity 2 -SkuName 'Standard_A0' -UpgradePolicyMode 'Automatic' `
1524+
| Add-AzureRmVmssNetworkInterfaceConfiguration -Name 'test' -Primary $true -IPConfiguration $ipCfg `
1525+
| Set-AzureRmVmssOSProfile -ComputerNamePrefix 'test' -AdminUsername $adminUsername -AdminPassword $adminPassword `
1526+
| Set-AzureRmVmssStorageProfile -OsDiskCreateOption 'FromImage' -OsDiskCaching 'None' `
1527+
-ImageReferenceOffer $imgRef.Offer -ImageReferenceSku $imgRef.Skus -ImageReferenceVersion $imgRef.Version `
1528+
-ImageReferencePublisher $imgRef.PublisherName `
1529+
| Add-AzureRmVmssExtension -Name $extname -Publisher $publisher -Type $exttype -TypeHandlerVersion $extver -Setting $settings -AutoUpgradeMinorVersion $true;
1530+
1531+
$result = New-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName -VirtualMachineScaleSet $vmss;
1532+
1533+
Assert-AreEqual $LOC $RESULT.LOCATION;
1534+
Assert-AreEqual 2 $RESULT.SKU.CAPACITY;
1535+
Assert-AreEqual 'STANDARD_A0' $RESULT.SKU.NAME;
1536+
Assert-AreEqual 'Automatic' $result.UpgradePolicy.Mode;
1537+
1538+
# Validate Network Profile
1539+
Assert-AreEqual 'test' $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Name;
1540+
Assert-AreEqual $true $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Primary;
1541+
Assert-AreEqual $subnetId `
1542+
$result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id;
1543+
1544+
# Validate OS Profile
1545+
Assert-AreEqual 'test' $result.VirtualMachineProfile.OsProfile.ComputerNamePrefix;
1546+
Assert-AreEqual $adminUsername $result.VirtualMachineProfile.OsProfile.AdminUsername;
1547+
Assert-Null $result.VirtualMachineProfile.OsProfile.AdminPassword;
1548+
1549+
# Validate Storage Profile
1550+
Assert-AreEqual $imgRef.Offer $result.VirtualMachineProfile.StorageProfile.ImageReference.Offer;
1551+
Assert-AreEqual $imgRef.Skus $result.VirtualMachineProfile.StorageProfile.ImageReference.Sku;
1552+
Assert-AreEqual $imgRef.Version $result.VirtualMachineProfile.StorageProfile.ImageReference.Version;
1553+
Assert-AreEqual $imgRef.PublisherName $result.VirtualMachineProfile.StorageProfile.ImageReference.Publisher;
1554+
1555+
# Validate Extension Profile
1556+
Assert-AreEqual $extname $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Name;
1557+
Assert-AreEqual $publisher $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Publisher;
1558+
Assert-AreEqual $exttype $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Type;
1559+
Assert-AreEqual $extver $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].TypeHandlerVersion;
1560+
Assert-AreEqual $true $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].AutoUpgradeMinorVersion;
1561+
1562+
# Verify the result of VMSS
1563+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1564+
Assert-AreEqual $null $vmss.Zones;
1565+
Assert-AreEqual 0 $vmss.Tags.Count;
1566+
Assert-AreEqual 2 $vmss.Sku.Capacity;
1567+
Assert-AreEqual $false $vmss.VirtualMachineProfile.StorageProfile.OsDisk.WriteAcceleratorEnabled;
1568+
1569+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName;
1570+
$job = Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName -VirtualMachineScaleSet $vmss -SkuName 'Standard_A1' -AsJob;
1571+
1572+
Wait-Seconds 300;
1573+
$vmss_view = Get-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName -InstanceView;
1574+
$output = $vmss_view | Out-String
1575+
1576+
$result = Repair-AzureRmVmssServiceFabricUpdateDomain -ResourceGroupName $rgname -VMScaleSetName $vmssName -PlatformUpdateDomain 0;
1577+
Assert-True {$result.WalkPerformed};
1578+
Assert-AreEqual 1 $result.NextPlatformUpdateDomain;
1579+
1580+
$result = $vmss | Repair-AzureRmVmssServiceFabricUD -PlatformUpdateDomain 1;
1581+
Assert-True {$result.WalkPerformed};
1582+
Assert-AreEqual 2 $result.NextPlatformUpdateDomain;
1583+
1584+
$result = Repair-AzureRmVmssServiceFabricUD -ResourceId $vmss.Id -PlatformUpdateDomain 2;
1585+
Assert-True {$result.WalkPerformed};
1586+
}
1587+
finally
1588+
{
1589+
# Cleanup
1590+
Clean-ResourceGroup $rgname
1591+
}
1592+
}

0 commit comments

Comments
 (0)