@@ -1715,4 +1715,159 @@ function Test-VirtualMachineScaleSetRedeploy
1715
1715
# Cleanup
1716
1716
Clean - ResourceGroup $rgname
1717
1717
}
1718
+ }
1719
+
1720
+ <#
1721
+ . SYNOPSIS
1722
+ Test Virtual Machine Scale Set VM Update
1723
+ #>
1724
+ function Test-VirtualMachineScaleSetVMUpdate
1725
+ {
1726
+ # Setup
1727
+ $rgname = Get-ComputeTestResourceName
1728
+
1729
+ try
1730
+ {
1731
+ # Common
1732
+ $loc = Get-Location " Microsoft.Compute" " virtualMachines" " East US 2" ;
1733
+ New-AzureRMResourceGroup - Name $rgname - Location $loc - Force;
1734
+
1735
+ # SRP
1736
+ $stoname = ' sto' + $rgname ;
1737
+ $stotype = ' Standard_GRS' ;
1738
+ New-AzureRMStorageAccount - ResourceGroupName $rgname - Name $stoname - Location $loc - Type $stotype ;
1739
+ $stoaccount = Get-AzureRMStorageAccount - ResourceGroupName $rgname - Name $stoname ;
1740
+
1741
+ # NRP
1742
+ $subnet = New-AzureRMVirtualNetworkSubnetConfig - Name (' subnet' + $rgname ) - AddressPrefix " 10.0.0.0/24" ;
1743
+ $vnet = New-AzureRMVirtualNetwork - Force - Name (' vnet' + $rgname ) - ResourceGroupName $rgname - Location $loc - AddressPrefix " 10.0.0.0/16" - Subnet $subnet ;
1744
+ $vnet = Get-AzureRMVirtualNetwork - Name (' vnet' + $rgname ) - ResourceGroupName $rgname ;
1745
+ $subnetId = $vnet.Subnets [0 ].Id;
1746
+
1747
+ # New VMSS Parameters
1748
+ $vmssName = ' vmss' + $rgname ;
1749
+ $vmssType = ' Microsoft.Compute/virtualMachineScaleSets' ;
1750
+
1751
+ $adminUsername = ' Foo12' ;
1752
+ $adminPassword = Get-PasswordForVM ;
1753
+
1754
+ $imgRef = Get-DefaultCRPImage - loc $loc ;
1755
+
1756
+ # Create VMSS with managed disk
1757
+ $ipCfg = New-AzureRmVmssIPConfig - Name ' test' - SubnetId $subnetId ;
1758
+ $vmss = New-AzureRmVmssConfig - Location $loc - SkuCapacity 2 - SkuName ' Standard_A1_v2' - UpgradePolicyMode ' Automatic' `
1759
+ | Add-AzureRmVmssNetworkInterfaceConfiguration - Name ' test' - Primary $true - IPConfiguration $ipCfg `
1760
+ | Set-AzureRmVmssOSProfile - ComputerNamePrefix ' test' - AdminUsername $adminUsername - AdminPassword $adminPassword `
1761
+ | Set-AzureRmVmssStorageProfile - OsDiskCreateOption ' FromImage' - OsDiskCaching ' None' `
1762
+ - ImageReferenceOffer $imgRef.Offer - ImageReferenceSku $imgRef.Skus - ImageReferenceVersion $imgRef.Version `
1763
+ - ImageReferencePublisher $imgRef.PublisherName ;
1764
+
1765
+ $result = New-AzureRmVmss - ResourceGroupName $rgname - Name $vmssName - VirtualMachineScaleSet $vmss ;
1766
+
1767
+ Assert-AreEqual $loc.ToLowerInvariant ().Replace(" " , " " ) $result.Location ;
1768
+ Assert-AreEqual 2 $result.Sku.Capacity ;
1769
+ Assert-AreEqual ' Standard_A1_v2' $result.Sku.Name ;
1770
+ Assert-AreEqual ' Automatic' $result.UpgradePolicy.Mode ;
1771
+
1772
+ # Validate Network Profile
1773
+ Assert-AreEqual ' test' $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations [0 ].Name;
1774
+ Assert-AreEqual $true $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations [0 ].Primary;
1775
+ Assert-AreEqual $subnetId `
1776
+ $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations [0 ].IpConfigurations[0 ].Subnet.Id;
1777
+
1778
+ # Validate OS Profile
1779
+ Assert-AreEqual ' test' $result.VirtualMachineProfile.OsProfile.ComputerNamePrefix ;
1780
+ Assert-AreEqual $adminUsername $result.VirtualMachineProfile.OsProfile.AdminUsername ;
1781
+ Assert-Null $result.VirtualMachineProfile.OsProfile.AdminPassword ;
1782
+
1783
+ # Validate Storage Profile
1784
+ Assert-AreEqual ' FromImage' $result.VirtualMachineProfile.StorageProfile.OsDisk.CreateOption ;
1785
+ Assert-AreEqual ' None' $result.VirtualMachineProfile.StorageProfile.OsDisk.Caching ;
1786
+ Assert-AreEqual $imgRef.Offer $result.VirtualMachineProfile.StorageProfile.ImageReference.Offer ;
1787
+ Assert-AreEqual $imgRef.Skus $result.VirtualMachineProfile.StorageProfile.ImageReference.Sku ;
1788
+ Assert-AreEqual $imgRef.Version $result.VirtualMachineProfile.StorageProfile.ImageReference.Version ;
1789
+ Assert-AreEqual $imgRef.PublisherName $result.VirtualMachineProfile.StorageProfile.ImageReference.Publisher ;
1790
+
1791
+ $vmss = Get-AzureRmVmss - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1792
+ $vmssVMs = Get-AzureRmVmssVM - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1793
+
1794
+ # Add a data disk to VMSS VM using VMSS VM object (with piping)
1795
+ $diskname0 = ' datadisk0' ;
1796
+ New-AzureRmDiskConfig - Location $loc - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty `
1797
+ | New-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname0 ;
1798
+ $disk0 = Get-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname0 ;
1799
+
1800
+ $result = $vmssVMs [0 ] `
1801
+ | Add-AzureRmVmDataDisk - Caching ' ReadOnly' - DiskSizeInGB 10 - Lun 1 - CreateOption Attach - StorageAccountType Standard_LRS - ManagedDiskId $disk0.Id `
1802
+ | Update-AzureRmVmssVM ;
1803
+
1804
+ $vmss = Get-AzureRmVmss - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1805
+ $vmssVMs = Get-AzureRmVmssVM - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1806
+ Assert-AreEqual 1 $vmssVMs [0 ].StorageProfile.DataDisks[0 ].Lun;
1807
+ Assert-AreEqual $diskname0 $vmssVMs [0 ].StorageProfile.DataDisks[0 ].Name;
1808
+ Assert-AreEqual 10 $vmssVMs [0 ].StorageProfile.DataDisks[0 ].DiskSizeGB;
1809
+ Assert-AreEqual " Attach" $vmssVMs [0 ].StorageProfile.DataDisks[0 ].CreateOption;
1810
+ Assert-AreEqual " Standard_LRS" $vmssVMs [0 ].StorageProfile.DataDisks[0 ].ManagedDisk.StorageAccountType;
1811
+ Assert-AreEqual $disk0.Id $vmssVMs [0 ].StorageProfile.DataDisks[0 ].ManagedDisk.Id;
1812
+
1813
+ # Adding a data disk to a VMSS VM using resource group name, VMSS name and instance ID..
1814
+ $instance_id = $vmssVMs [0 ].InstanceId;
1815
+ $diskname1 = ' datadisk1' ;
1816
+ New-AzureRmDiskConfig - Location $loc - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty `
1817
+ | New-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname1 ;
1818
+ $disk1 = Get-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname1 ;
1819
+
1820
+ $diskname2 = ' datadisk2' ;
1821
+ New-AzureRmDiskConfig - Location $loc - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty `
1822
+ | New-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname2 ;
1823
+ $disk2 = Get-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname2 ;
1824
+
1825
+ Assert-ThrowsContains { New-AzureRmVMDataDisk - Name ' wrongdiskname' - Caching ' ReadOnly' - Lun 2 - CreateOption Attach - StorageAccountType Standard_LRS - ManagedDiskId $disk1.Id ; } `
1826
+ " does not match with given managed disk ID" ;
1827
+
1828
+ $datadisk1 = New-AzureRmVMDataDisk - Caching ' ReadOnly' - Lun 2 - CreateOption Attach - StorageAccountType Standard_LRS - ManagedDiskId $disk1.Id ;
1829
+ $datadisk2 = New-AzureRmVMDataDisk - Caching ' ReadOnly' - Lun 3 - CreateOption Attach - StorageAccountType Standard_LRS - ManagedDiskId $disk2.Id ;
1830
+ $result = Update-AzureRmVmssVM - ResourceGroupName $rgname - VMScaleSetName $vmssName - InstanceId $instance_id - DataDisk $datadisk1 , $datadisk2
1831
+
1832
+ $vmss = Get-AzureRmVmss - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1833
+ $vmssVMs = Get-AzureRmVmssVM - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1834
+
1835
+ Assert-AreEqual 2 $vmssVMs [0 ].StorageProfile.DataDisks[1 ].Lun;
1836
+ Assert-AreEqual $diskname1 $vmssVMs [0 ].StorageProfile.DataDisks[1 ].Name;
1837
+ Assert-AreEqual 5 $vmssVMs [0 ].StorageProfile.DataDisks[1 ].DiskSizeGB;
1838
+ Assert-AreEqual " Attach" $vmssVMs [0 ].StorageProfile.DataDisks[1 ].CreateOption;
1839
+ Assert-AreEqual " Standard_LRS" $vmssVMs [0 ].StorageProfile.DataDisks[1 ].ManagedDisk.StorageAccountType;
1840
+ Assert-AreEqual $disk1.Id $vmssVMs [0 ].StorageProfile.DataDisks[1 ].ManagedDisk.Id;
1841
+
1842
+ Assert-AreEqual 3 $vmssVMs [0 ].StorageProfile.DataDisks[2 ].Lun;
1843
+ Assert-AreEqual $diskname2 $vmssVMs [0 ].StorageProfile.DataDisks[2 ].Name;
1844
+ Assert-AreEqual 5 $vmssVMs [0 ].StorageProfile.DataDisks[2 ].DiskSizeGB;
1845
+ Assert-AreEqual " Attach" $vmssVMs [0 ].StorageProfile.DataDisks[2 ].CreateOption;
1846
+ Assert-AreEqual " Standard_LRS" $vmssVMs [0 ].StorageProfile.DataDisks[2 ].ManagedDisk.StorageAccountType;
1847
+ Assert-AreEqual $disk2.Id $vmssVMs [0 ].StorageProfile.DataDisks[2 ].ManagedDisk.Id;
1848
+
1849
+ # Adding a data disk to a VMSS VM using resource ID.
1850
+ $resource_id = $vmssVMs [0 ].Id;
1851
+ $diskname3 = ' datadisk3' ;
1852
+ $diskconfig = New-AzureRmDiskConfig - Location $loc - DiskSizeGB 5 - AccountType Standard_LRS - OsType Windows - CreateOption Empty;
1853
+ New-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname3 - Disk $diskconfig
1854
+ $disk3 = Get-AzureRmDisk - ResourceGroupName $rgname - DiskName $diskname3 ;
1855
+
1856
+ $datadisk3 = New-AzureRmVMDataDisk - Caching ' ReadOnly' - Lun 4 - CreateOption Attach - StorageAccountType Standard_LRS - ManagedDiskId $disk3.Id ;
1857
+ $result = Update-AzureRmVmssVM - ResourceId $resource_id - DataDisk $datadisk3
1858
+
1859
+ $vmss = Get-AzureRmVmss - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1860
+ $vmssVMs = Get-AzureRmVmssVM - ResourceGroupName $rgname - VMScaleSetName $vmssName ;
1861
+ Assert-AreEqual 4 $vmssVMs [0 ].StorageProfile.DataDisks[3 ].Lun;
1862
+ Assert-AreEqual $diskname3 $vmssVMs [0 ].StorageProfile.DataDisks[3 ].Name;
1863
+ Assert-AreEqual 5 $vmssVMs [0 ].StorageProfile.DataDisks[3 ].DiskSizeGB;
1864
+ Assert-AreEqual " Attach" $vmssVMs [0 ].StorageProfile.DataDisks[3 ].CreateOption;
1865
+ Assert-AreEqual " Standard_LRS" $vmssVMs [0 ].StorageProfile.DataDisks[3 ].ManagedDisk.StorageAccountType;
1866
+ Assert-AreEqual $disk3.Id $vmssVMs [0 ].StorageProfile.DataDisks[3 ].ManagedDisk.Id;
1867
+ }
1868
+ finally
1869
+ {
1870
+ # Cleanup
1871
+ Clean - ResourceGroup $rgname
1872
+ }
1718
1873
}
0 commit comments