Skip to content

Commit 768f091

Browse files
author
unknown
committed
Add 'ResizedSizeInGB' parameter to Update-AzureDisk
1 parent b54853c commit 768f091

File tree

4 files changed

+99
-21
lines changed

4 files changed

+99
-21
lines changed

src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/FunctionalTestCommonVhd.cs

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ public class FunctionalTestCommonVhd : ServiceManagementTest
3333
[ClassInitialize]
3434
public static void ClassInit(TestContext context)
3535
{
36-
//SetTestSettings();
37-
3836
if (defaultAzureSubscription.Equals(null))
3937
{
4038
Assert.Inconclusive("No Subscription is selected!");
@@ -103,19 +101,42 @@ public void AzureDiskTest()
103101
found = true;
104102
Console.WriteLine("{0} is found", disk.DiskName);
105103
}
106-
107104
}
108105
Assert.IsTrue(found, "Error: Disk is not added");
109106

107+
// Update only label
110108
string newLabel = "NewLabel";
111109
vmPowershellCmdlets.UpdateAzureDisk(vhdName, newLabel);
112110

113-
DiskContext disk2 = vmPowershellCmdlets.GetAzureDisk(vhdName)[0];
111+
DiskContext virtualDisk = vmPowershellCmdlets.GetAzureDisk(vhdName)[0];
114112

115-
Console.WriteLine("Disk: Name - {0}, Label - {1}, Size - {2},", disk2.DiskName, disk2.Label, disk2.DiskSizeInGB);
116-
Assert.AreEqual(newLabel, disk2.Label);
113+
Console.WriteLine("Disk: Name - {0}, Label - {1}, Size - {2},", virtualDisk.DiskName, virtualDisk.Label, virtualDisk.DiskSizeInGB);
114+
Assert.AreEqual(newLabel, virtualDisk.Label);
117115
Console.WriteLine("Disk Label is successfully updated");
118116

117+
// Update only size
118+
int newSize = 100;
119+
vmPowershellCmdlets.UpdateAzureDisk(vhdName, null, newSize);
120+
121+
virtualDisk = vmPowershellCmdlets.GetAzureDisk(vhdName)[0];
122+
123+
Console.WriteLine("Disk: Name - {0}, Label - {1}, Size - {2},", virtualDisk.DiskName, virtualDisk.Label, virtualDisk.DiskSizeInGB);
124+
Assert.AreEqual(newLabel, virtualDisk.Label);
125+
Assert.AreEqual(newSize, virtualDisk.DiskSizeInGB);
126+
Console.WriteLine("Disk size is successfully updated");
127+
128+
// Update both label and size
129+
newLabel = "NewLabel2";
130+
newSize = 200;
131+
vmPowershellCmdlets.UpdateAzureDisk(vhdName, newLabel, newSize);
132+
133+
virtualDisk = vmPowershellCmdlets.GetAzureDisk(vhdName)[0];
134+
135+
Console.WriteLine("Disk: Name - {0}, Label - {1}, Size - {2},", virtualDisk.DiskName, virtualDisk.Label, virtualDisk.DiskSizeInGB);
136+
Assert.AreEqual(newLabel, virtualDisk.Label);
137+
Assert.AreEqual(newSize, virtualDisk.DiskSizeInGB);
138+
Console.WriteLine("Both disk label and size are successfully updated");
139+
119140
vmPowershellCmdlets.RemoveAzureDisk(vhdName, false);
120141
Assert.IsTrue(Utilities.CheckRemove(vmPowershellCmdlets.GetAzureDisk, vhdName), "The disk was not removed");
121142
pass = true;
@@ -129,6 +150,15 @@ public void AzureDiskTest()
129150
Console.WriteLine("Please upload {0} file to \\vhdtest\\ blob directory before running this test", vhdName);
130151
}
131152

153+
try
154+
{
155+
vmPowershellCmdlets.RemoveAzureDisk(vhdName, false);
156+
}
157+
catch (Exception cleanupError)
158+
{
159+
Console.WriteLine("Error during cleaning up the disk.. Continue..:{0}", cleanupError);
160+
}
161+
132162
Assert.Fail("Exception occurs: {0}", e.ToString());
133163
}
134164
}

src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/IaasCmdletInfo/UpdateAzureDiskCmdletInfo.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,20 @@ namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests
1818
{
1919
public class UpdateAzureDiskCmdletInfo : CmdletsInfo
2020
{
21-
public UpdateAzureDiskCmdletInfo(string diskName, string label)
21+
public UpdateAzureDiskCmdletInfo(string diskName, string label, int? resizedSize)
2222
{
2323
cmdletName = Utilities.UpdateAzureDiskCmdletName;
2424

2525
this.cmdletParams.Add(new CmdletParam("DiskName", diskName));
26-
this.cmdletParams.Add(new CmdletParam("Label", label));
26+
27+
if (label != null)
28+
{
29+
this.cmdletParams.Add(new CmdletParam("Label", label));
30+
}
31+
if (resizedSize != null)
32+
{
33+
this.cmdletParams.Add(new CmdletParam("ResizedSizeInGB", resizedSize));
34+
}
2735
}
2836
}
2937
}

src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementCmdletTestHelper.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,12 @@ public ManagementOperationContext RemoveAzureDisk(string diskName, bool deleteVh
535535
// Update-AzureDisk
536536
public SM.DiskContext UpdateAzureDisk(string diskName, string label)
537537
{
538-
return RunPSCmdletAndReturnFirst<SM.DiskContext>(new UpdateAzureDiskCmdletInfo(diskName, label));
538+
return RunPSCmdletAndReturnFirst<SM.DiskContext>(new UpdateAzureDiskCmdletInfo(diskName, label, null));
539+
}
540+
541+
public ManagementOperationContext UpdateAzureDisk(string diskName, string label, int? resizedSize)
542+
{
543+
return RunPSCmdletAndReturnFirst<ManagementOperationContext>(new UpdateAzureDiskCmdletInfo(diskName, label, resizedSize));
539544
}
540545

541546
#endregion

src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/DiskRepository/UpdateAzureDisk.cs

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,63 @@ namespace Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS
2424
[Cmdlet(VerbsData.Update, "AzureDisk"), OutputType(typeof(DiskContext))]
2525
public class UpdateAzureDiskCommand : ServiceManagementBaseCmdlet
2626
{
27-
[Parameter(Position = 0, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Name of the disk in the disk library.")]
27+
public const string ResizeParameterSetName = "Resize";
28+
public const string NoResizeParameterSetName = "NoResize";
29+
30+
[Parameter(Position = 0, ParameterSetName = ResizeParameterSetName, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Name of the disk in the disk library.")]
31+
[Parameter(Position = 0, ParameterSetName = NoResizeParameterSetName, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Name of the disk in the disk library.")]
2832
[ValidateNotNullOrEmpty]
2933
public string DiskName { get; set; }
3034

31-
[Parameter(Position = 1, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Label of the disk.")]
35+
[Parameter(Position = 1, ParameterSetName = ResizeParameterSetName, Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Label of the disk.")]
36+
[Parameter(Position = 1, ParameterSetName = NoResizeParameterSetName, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Label of the disk.")]
3237
[ValidateNotNullOrEmpty]
3338
public string Label { get; set; }
3439

40+
[Parameter(Position = 2, ParameterSetName = ResizeParameterSetName, Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Label of the disk.")]
41+
[ValidateNotNullOrEmpty]
42+
public int ResizedSizeInGB { get; set; }
43+
3544
internal void ExecuteCommand()
3645
{
3746
ServiceManagementProfile.Initialize();
38-
var parameters = new VirtualMachineDiskUpdateParameters
47+
48+
VirtualMachineDiskUpdateParameters parameters;
49+
50+
if (this.ParameterSetName == NoResizeParameterSetName)
3951
{
40-
Name = this.DiskName,
41-
Label = this.Label
42-
};
43-
44-
this.ExecuteClientActionNewSM(
45-
null,
46-
this.CommandRuntime.ToString(),
47-
() => this.ComputeClient.VirtualMachineDisks.UpdateDisk(this.DiskName, parameters),
48-
(s, response) => this.ContextFactory<VirtualMachineDiskUpdateResponse, DiskContext>(response, s));
52+
parameters = new VirtualMachineDiskUpdateParameters
53+
{
54+
Name = this.DiskName,
55+
Label = this.Label,
56+
};
57+
58+
this.ExecuteClientActionNewSM(
59+
null,
60+
this.CommandRuntime.ToString(),
61+
() => this.ComputeClient.VirtualMachineDisks.UpdateDisk(this.DiskName, parameters),
62+
(s, response) => this.ContextFactory<VirtualMachineDiskUpdateResponse, DiskContext>(response, s));
63+
}
64+
else
65+
{
66+
if (this.Label == null)
67+
{
68+
var currentDisk = this.ComputeClient.VirtualMachineDisks.GetDisk(this.DiskName);
69+
Label = currentDisk.Label;
70+
}
71+
72+
parameters = new VirtualMachineDiskUpdateParameters
73+
{
74+
Name = this.DiskName,
75+
Label = this.Label,
76+
ResizedSizeInGB = this.ResizedSizeInGB,
77+
};
78+
79+
this.ExecuteClientActionNewSM(
80+
null,
81+
this.CommandRuntime.ToString(),
82+
() => this.ComputeClient.VirtualMachineDisks.UpdateDiskSize(this.DiskName, parameters));
83+
}
4984
}
5085

5186
protected override void OnProcessRecord()

0 commit comments

Comments
 (0)