Skip to content

Commit 611926d

Browse files
authored
Merge pull request #5575 from hyonholee/accelerator
[Compute] WriteAccelerator feature
2 parents 4b98454 + feb3afc commit 611926d

File tree

49 files changed

+11311
-211
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+11311
-211
lines changed

src/ResourceManager/Compute/ChangeLog.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818
- Additional information about change #1
1919
-->
2020
## Current Release
21+
* WriteAccelerator feature
22+
- Added WriteAccelerator switch parameter to the following cmdlets:
23+
Set-AzureRmVMOSDisk
24+
Set-AzureRmVMDataDisk
25+
Add-AzureRmVMDataDisk
26+
Add-AzureRmVmssDataDisk
27+
- Added OsDiskWriteAccelerator switch parameter to the following cmdlet:
28+
Set-AzureRmVmssStorageProfile.
29+
- Added OsDiskWriteAccelerator Boolean parameter to the following cmdlets:
30+
Update-AzureRmVM
31+
Update-AzureRmVmss
2132

2233
## Version 4.3.2
2334
* Fix ErrorAction issue for some of Get cmdlets.

src/ResourceManager/Compute/Commands.Compute.Test/Commands.Compute.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Authorization.2.0.0\lib\net40\Microsoft.Azure.Management.Authorization.dll</HintPath>
6565
</Reference>
6666
<Reference Include="Microsoft.Azure.Management.Compute">
67-
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Compute.17.3.0\lib\net452\Microsoft.Azure.Management.Compute.dll</HintPath>
67+
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Compute.17.5.0\lib\net452\Microsoft.Azure.Management.Compute.dll</HintPath>
6868
</Reference>
6969
<Reference Include="Microsoft.Azure.Management.Network, Version=17.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
7070
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Network.17.0.0-preview\lib\net452\Microsoft.Azure.Management.Network.dll</HintPath>

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,12 @@ function Test-VirtualMachineProfile
7171
Assert-AreEqual $managedDataDiskId $p.StorageProfile.DataDisks[2].ManagedDisk.Id;
7272
Assert-AreEqual "StandardLRS" $p.StorageProfile.DataDisks[2].ManagedDisk.StorageAccountType;
7373
Assert-Null $p.StorageProfile.DataDisks[2].DiskSizeGB;
74+
Assert-AreEqual $false $p.StorageProfile.DataDisks[2].WriteAcceleratorEnabled;
7475

75-
$p = Set-AzureRmVMDataDisk -VM $p -Name 'testDataDisk3' -StorageAccountType PremiumLRS;
76+
$p = Set-AzureRmVMDataDisk -VM $p -Name 'testDataDisk3' -StorageAccountType PremiumLRS -WriteAccelerator;
7677
Assert-AreEqual $managedDataDiskId $p.StorageProfile.DataDisks[2].ManagedDisk.Id;
7778
Assert-AreEqual "PremiumLRS" $p.StorageProfile.DataDisks[2].ManagedDisk.StorageAccountType;
79+
Assert-AreEqual $true $p.StorageProfile.DataDisks[2].WriteAcceleratorEnabled;
7880

7981
$p = Remove-AzureRmVMDataDisk -VM $p -Name 'testDataDisk3';
8082

@@ -86,10 +88,13 @@ function Test-VirtualMachineProfile
8688
Assert-AreEqual $p.StorageProfile.DataDisks[0].DiskSizeGB 10;
8789
Assert-AreEqual $p.StorageProfile.DataDisks[0].Lun 0;
8890
Assert-AreEqual $p.StorageProfile.DataDisks[0].Vhd.Uri $dataDiskVhdUri1;
91+
Assert-AreEqual $false $p.StorageProfile.DataDisks[0].WriteAcceleratorEnabled;
92+
8993
Assert-AreEqual $p.StorageProfile.DataDisks[1].Caching 'ReadOnly';
9094
Assert-AreEqual $p.StorageProfile.DataDisks[1].DiskSizeGB 11;
9195
Assert-AreEqual $p.StorageProfile.DataDisks[1].Lun 1;
9296
Assert-AreEqual $p.StorageProfile.DataDisks[1].Vhd.Uri $dataDiskVhdUri2;
97+
Assert-AreEqual $false $p.StorageProfile.DataDisks[1].WriteAcceleratorEnabled;
9398

9499
# Remove all data disks
95100
$p = $p | Remove-AzureRmVMDataDisk;
@@ -111,19 +116,21 @@ function Test-VirtualMachineProfile
111116
$managedOsDiskId_0 = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rggroup/providers/Microsoft.Compute/disks/osDisk0";
112117
$managedOsDiskId_1 = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rggroup/providers/Microsoft.Compute/disks/osDisk1";
113118

114-
$p = Set-AzureRmVMOsDisk -VM $p -ManagedDiskId $managedOsDiskId_0 -StorageAccountType StandardLRS;
119+
$p = Set-AzureRmVMOsDisk -VM $p -ManagedDiskId $managedOsDiskId_0 -StorageAccountType StandardLRS -WriteAccelerator;
115120
Assert-AreEqual $osDiskCaching $p.StorageProfile.OSDisk.Caching;
116121
Assert-AreEqual $osDiskName $p.StorageProfile.OSDisk.Name;
117122
Assert-AreEqual $p.StorageProfile.OSDisk.Vhd.Uri $osDiskVhdUri;
118123
Assert-AreEqual $managedOsDiskId_0 $p.StorageProfile.OSDisk.ManagedDisk.Id;
119124
Assert-AreEqual 'StandardLRS' $p.StorageProfile.OSDisk.ManagedDisk.StorageAccountType;
125+
Assert-AreEqual $true $p.StorageProfile.OSDisk.WriteAcceleratorEnabled;
120126

121127
$p = Set-AzureRmVMOsDisk -VM $p -ManagedDiskId $managedOsDiskId_1;
122128
Assert-AreEqual $p.StorageProfile.OSDisk.Caching $osDiskCaching;
123129
Assert-AreEqual $p.StorageProfile.OSDisk.Name $osDiskName;
124130
Assert-AreEqual $p.StorageProfile.OSDisk.Vhd.Uri $osDiskVhdUri;
125131
Assert-AreEqual $managedOsDiskId_1 $p.StorageProfile.OSDisk.ManagedDisk.Id;
126132
Assert-AreEqual 'StandardLRS' $p.StorageProfile.OSDisk.ManagedDisk.StorageAccountType;
133+
Assert-AreEqual $false $p.StorageProfile.OSDisk.WriteAcceleratorEnabled;
127134

128135
# Windows OS
129136
$user = "Foo12";

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,12 @@ public void TestVirtualMachineScaleSetPriority()
107107
{
108108
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetPriority");
109109
}
110+
111+
[Fact]
112+
[Trait(Category.AcceptanceType, Category.CheckIn)]
113+
public void TestVirtualMachineScaleSetWriteAcceleratorUpdate()
114+
{
115+
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetWriteAcceleratorUpdate");
116+
}
110117
}
111118
}

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

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,31 @@ function Test-VirtualMachineScaleSet-Common($IsManaged)
126126
{
127127
$vmss = $vmss | Set-AzureRmVmssStorageProfile -OsDiskCreateOption 'FromImage' -OsDiskCaching 'None' `
128128
-ImageReferenceOffer $imgRef.Offer -ImageReferenceSku $imgRef.Skus -ImageReferenceVersion $imgRef.Version `
129-
-ImageReferencePublisher $imgRef.PublisherName
129+
-ImageReferencePublisher $imgRef.PublisherName -OsDiskWriteAccelerator `
130+
| Add-AzureRmVmssDataDisk -Name 'testDataDisk1' -Caching 'ReadOnly' -DiskSizeGB 20 -Lun 1 -CreateOption Empty `
131+
-StorageAccountType StandardLRS -WriteAccelerator;
132+
133+
Assert-AreEqual 'FromImage' $vmss.VirtualMachineProfile.StorageProfile.OsDisk.CreateOption;
134+
Assert-AreEqual 'None' $vmss.VirtualMachineProfile.StorageProfile.OsDisk.Caching;
135+
Assert-AreEqual $true $vmss.VirtualMachineProfile.StorageProfile.OsDisk.WriteAcceleratorEnabled;
136+
$vmss.VirtualMachineProfile.StorageProfile.OsDisk.WriteAcceleratorEnabled = $false;
137+
138+
Assert-AreEqual $imgRef.PublisherName $vmss.VirtualMachineProfile.StorageProfile.ImageReference.Publisher;
139+
Assert-AreEqual $imgRef.Offer $vmss.VirtualMachineProfile.StorageProfile.ImageReference.Offer;
140+
Assert-AreEqual $imgRef.Skus $vmss.VirtualMachineProfile.StorageProfile.ImageReference.Sku;
141+
Assert-AreEqual $imgRef.Version $vmss.VirtualMachineProfile.StorageProfile.ImageReference.Version;
142+
143+
Assert-AreEqual 'testDataDisk1' $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].Name;
144+
Assert-AreEqual 'ReadOnly' $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].Caching;
145+
Assert-AreEqual 20 $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].DiskSizeGB;
146+
Assert-AreEqual 1 $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].Lun;
147+
Assert-AreEqual 'Empty' $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].CreateOption;
148+
Assert-AreEqual 'StandardLRS' $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].ManagedDisk.StorageAccountType;
149+
Assert-AreEqual $true $vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].WriteAcceleratorEnabled;
150+
$vmss.VirtualMachineProfile.StorageProfile.DataDisks[0].WriteAcceleratorEnabled = $false;
151+
152+
$vmss = $vmss | Remove-AzureRmVmssDataDisk -Lun 1;
153+
Assert-AreEqual 0 $vmss.VirtualMachineProfile.StorageProfile.DataDisks.Count;
130154
}
131155
else
132156
{
@@ -1347,3 +1371,97 @@ function Test-VirtualMachineScaleSetPriority
13471371
Clean-ResourceGroup $rgname
13481372
}
13491373
}
1374+
1375+
<#
1376+
.SYNOPSIS
1377+
Test Virtual Machine Scale Set Write Accelerator Update
1378+
#>
1379+
function Test-VirtualMachineScaleSetWriteAcceleratorUpdate
1380+
{
1381+
# Setup
1382+
$rgname = Get-ComputeTestResourceName
1383+
1384+
try
1385+
{
1386+
# Common
1387+
$loc = 'WestEurope';
1388+
New-AzureRMResourceGroup -Name $rgname -Location $loc -Force;
1389+
1390+
# NRP
1391+
$subnet = New-AzureRMVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
1392+
$vnet = New-AzureRMVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
1393+
$vnet = Get-AzureRMVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
1394+
$subnetId = $vnet.Subnets[0].Id;
1395+
1396+
# New VMSS Parameters
1397+
$vmssName = 'vmss' + $rgname;
1398+
1399+
$adminUsername = 'Foo12';
1400+
$adminPassword = $PLACEHOLDER;
1401+
$imgRef = Get-DefaultCRPImage -loc $loc;
1402+
1403+
$extname = 'csetest';
1404+
$publisher = 'Microsoft.Compute';
1405+
$exttype = 'BGInfo';
1406+
$extver = '2.1';
1407+
1408+
$ipCfg = New-AzureRmVmssIPConfig -Name 'test' -SubnetId $subnetId;
1409+
$vmss = New-AzureRmVmssConfig -Location $loc -SkuCapacity 2 -SkuName 'Standard_A0' -UpgradePolicyMode 'Manual' `
1410+
| Add-AzureRmVmssNetworkInterfaceConfiguration -Name 'test' -Primary $true -IPConfiguration $ipCfg `
1411+
| Set-AzureRmVmssOSProfile -ComputerNamePrefix 'test' -AdminUsername $adminUsername -AdminPassword $adminPassword `
1412+
| Set-AzureRmVmssStorageProfile -OsDiskCreateOption 'FromImage' -OsDiskCaching 'None' `
1413+
-ImageReferenceOffer $imgRef.Offer -ImageReferenceSku $imgRef.Skus -ImageReferenceVersion $imgRef.Version `
1414+
-ImageReferencePublisher $imgRef.PublisherName `
1415+
| Add-AzureRmVmssExtension -Name $extname -Publisher $publisher -Type $exttype -TypeHandlerVersion $extver -AutoUpgradeMinorVersion $true;
1416+
1417+
$result = New-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName -VirtualMachineScaleSet $vmss;
1418+
1419+
Assert-AreEqual $loc $result.Location;
1420+
Assert-AreEqual 2 $result.Sku.Capacity;
1421+
Assert-AreEqual 'Standard_A0' $result.Sku.Name;
1422+
Assert-AreEqual 'Manual' $result.UpgradePolicy.Mode;
1423+
1424+
# Validate Network Profile
1425+
Assert-AreEqual 'test' $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Name;
1426+
Assert-AreEqual $true $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Primary;
1427+
Assert-AreEqual $subnetId `
1428+
$result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id;
1429+
1430+
# Validate OS Profile
1431+
Assert-AreEqual 'test' $result.VirtualMachineProfile.OsProfile.ComputerNamePrefix;
1432+
Assert-AreEqual $adminUsername $result.VirtualMachineProfile.OsProfile.AdminUsername;
1433+
Assert-Null $result.VirtualMachineProfile.OsProfile.AdminPassword;
1434+
1435+
# Validate Storage Profile
1436+
Assert-AreEqual $imgRef.Offer $result.VirtualMachineProfile.StorageProfile.ImageReference.Offer;
1437+
Assert-AreEqual $imgRef.Skus $result.VirtualMachineProfile.StorageProfile.ImageReference.Sku;
1438+
Assert-AreEqual $imgRef.Version $result.VirtualMachineProfile.StorageProfile.ImageReference.Version;
1439+
Assert-AreEqual $imgRef.PublisherName $result.VirtualMachineProfile.StorageProfile.ImageReference.Publisher;
1440+
1441+
# Validate Extension Profile
1442+
Assert-AreEqual $extname $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Name;
1443+
Assert-AreEqual $publisher $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Publisher;
1444+
Assert-AreEqual $exttype $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].Type;
1445+
Assert-AreEqual $extver $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].TypeHandlerVersion;
1446+
Assert-AreEqual $true $result.VirtualMachineProfile.ExtensionProfile.Extensions[0].AutoUpgradeMinorVersion;
1447+
1448+
# Verify the result of VMSS
1449+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1450+
Assert-AreEqual $null $vmss.Zones;
1451+
Assert-AreEqual 0 $vmss.Tags.Count;
1452+
Assert-AreEqual 2 $vmss.Sku.Capacity;
1453+
Assert-AreEqual $false $vmss.VirtualMachineProfile.StorageProfile.OsDisk.WriteAcceleratorEnabled;
1454+
1455+
Assert-ThrowsContains {
1456+
$vmss | Update-AzureRmVmss -OsDiskWriteAccelerator $true; } `
1457+
"not supported on disks with Write Accelerator enabled";
1458+
1459+
$vmss2 = $vmss | Update-AzureRmVmss -OsDiskWriteAccelerator $false;
1460+
Assert-AreEqual $false $vmss2.VirtualMachineProfile.StorageProfile.OsDisk.WriteAcceleratorEnabled;
1461+
}
1462+
finally
1463+
{
1464+
# Cleanup
1465+
Clean-ResourceGroup $rgname
1466+
}
1467+
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,5 +233,12 @@ public void TestVirtualMachineIdentityUpdate()
233233
{
234234
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineIdentityUpdate");
235235
}
236+
237+
[Fact]
238+
[Trait(Category.AcceptanceType, Category.CheckIn)]
239+
public void TestVirtualMachineWriteAcceleratorUpdate()
240+
{
241+
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineWriteAcceleratorUpdate");
242+
}
236243
}
237244
}

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3257,4 +3257,68 @@ function Test-VirtualMachineIdentityUpdate
32573257
# Cleanup
32583258
Clean-ResourceGroup $rgname
32593259
}
3260+
}
3261+
3262+
<#
3263+
.SYNOPSIS
3264+
Test Virtual Machine Write Accelerator Update
3265+
#>
3266+
function Test-VirtualMachineWriteAcceleratorUpdate
3267+
{
3268+
# Setup
3269+
$rgname = Get-ComputeTestResourceName
3270+
3271+
try
3272+
{
3273+
# Common
3274+
$loc = 'WestEurope';
3275+
3276+
New-AzureRmResourceGroup -Name $rgname -Location $loc -Force;
3277+
3278+
# VM Profile & Hardware
3279+
$vmsize = 'Standard_DS1_v2';
3280+
$vmname = 'vm' + $rgname;
3281+
3282+
# NRP
3283+
$subnet = New-AzureRmVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
3284+
$vnet = New-AzureRmVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
3285+
$vnet = Get-AzureRmVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
3286+
$subnetId = $vnet.Subnets[0].Id;
3287+
$pubip = New-AzureRmPublicIpAddress -Force -Name ('pubip' + $rgname) -ResourceGroupName $rgname -Location $loc -AllocationMethod Dynamic -DomainNameLabel ('pubip' + $rgname);
3288+
$pubip = Get-AzureRmPublicIpAddress -Name ('pubip' + $rgname) -ResourceGroupName $rgname;
3289+
$pubipId = $pubip.Id;
3290+
$nic = New-AzureRmNetworkInterface -Force -Name ('nic' + $rgname) -ResourceGroupName $rgname -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
3291+
$nic = Get-AzureRmNetworkInterface -Name ('nic' + $rgname) -ResourceGroupName $rgname;
3292+
$nicId = $nic.Id;
3293+
3294+
# OS & Image
3295+
$user = "Foo12";
3296+
$password = $PLACEHOLDER;
3297+
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
3298+
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
3299+
$computerName = 'test';
3300+
3301+
$p = New-AzureRmVMConfig -VMName $vmname -VMSize $vmsize `
3302+
| Add-AzureRmVMNetworkInterface -Id $nicId -Primary `
3303+
| Set-AzureRmVMOperatingSystem -Windows -ComputerName $computerName -Credential $cred;
3304+
3305+
$imgRef = Get-DefaultCRPImage -loc $loc;
3306+
$imgRef | Set-AzureRmVMSourceImage -VM $p | New-AzureRmVM -ResourceGroupName $rgname -Location $loc;
3307+
3308+
# Get VM
3309+
$vm1 = Get-AzureRmVM -Name $vmname -ResourceGroupName $rgname;
3310+
$vm1_output = $vm1 | Out-String;
3311+
Write-Verbose($vm1_output);
3312+
3313+
Assert-ThrowsContains {
3314+
$st = $vm1 | Update-AzureRmVM -OsDiskWriteAccelerator $true; } `
3315+
"not supported on disks with Write Accelerator enabled";
3316+
3317+
$st = $vm1 | Update-AzureRmVM -OsDiskWriteAccelerator $false;
3318+
}
3319+
finally
3320+
{
3321+
# Cleanup
3322+
Clean-ResourceGroup $rgname
3323+
}
32603324
}

0 commit comments

Comments
 (0)