Skip to content

Commit 5706468

Browse files
committed
Merge branch 'crp2' of https://github.com/huangpf/azure-powershell-pr into crp2
2 parents 8fdd3ef + 90c8b9e commit 5706468

File tree

5 files changed

+75
-21
lines changed

5 files changed

+75
-21
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ function Test-VirtualMachine
166166
$vm2 = Get-AzureVM -Name $vmname2 -ResourceGroupName $rgname;
167167
Assert-NotNull $vm2;
168168
Assert-AreEqual $vm2.AvailabilitySetId $asetId;
169+
Assert-True { $vm2.ResourceGroupName -eq $rgname }
169170

170171
# Remove
171172
Remove-AzureVM -Name $vmname2 -ResourceGroupName $rgname -Force;
@@ -191,6 +192,11 @@ function Test-VirtualMachineList
191192
$s1 = Get-AzureVM -All;
192193
$s2 = Get-AzureVM;
193194

195+
if ($s2 -ne $null)
196+
{
197+
Assert-True { $s2[0].ResourceGroupName -ne $null; }
198+
}
199+
194200
Assert-ThrowsContains { $s3 = Get-AzureVM -NextLink "http://www.test.com/test"; } "Unexpected character"
195201

196202
$passed = $true;
@@ -627,6 +633,8 @@ function Test-VirtualMachinePIRv2
627633
$p.StorageProfile.SourceImage = $null;
628634
$imgRef = Get-DefaultCRPImage;
629635
$p = Set-AzureVMSourceImage -VM $p -ImageReference $imgRef;
636+
Assert-True { $p.ImageReference -ne $null };
637+
Assert-True { $p.SourceImageId -eq $null };
630638

631639
# TODO: Remove Data Disks for now
632640
$p.StorageProfile.DataDisks = $null;

src/ResourceManager/Compute/Commands.Compute/Microsoft.Azure.Commands.Compute.Types.ps1xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<Name>ProvisioningState</Name>
1919
<Name>OSConfiguration</Name>
2020
<Name>SourceImageId</Name>
21+
<Name>ImageReference</Name>
2122
<Name>DestinationVHDsContainer</Name>
2223
<Name>OSDisk</Name>
2324
<Name>DataDisks</Name>

src/ResourceManager/Compute/Commands.Compute/Models/PSVirtualMachine.cs

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
// ----------------------------------------------------------------------------------
1414

1515
using Microsoft.Azure.Management.Compute.Models;
16-
using System;
1716
using System.Collections.Generic;
1817
using System.Linq;
18+
using System.Text.RegularExpressions;
1919

2020
namespace Microsoft.Azure.Commands.Compute.Models
2121
{
@@ -41,7 +41,9 @@ public string VMSize
4141
}
4242

4343
public IDictionary<string, string> Tags { get; set; }
44+
4445
public string AvailabilitySetId { get; set; }
46+
4547
public string ProvisioningState { get; set; }
4648

4749
public string OSConfiguration
@@ -70,16 +72,29 @@ public string SourceImageId
7072
}
7173
}
7274

73-
public string OSDisk
75+
public ImageReference ImageReference
7476
{
7577
get
7678
{
77-
if (this.StorageProfile != null && this.StorageProfile.OSDisk != null)
79+
if (this.StorageProfile != null)
80+
{
81+
return this.StorageProfile.ImageReference;
82+
}
83+
84+
return null;
85+
}
86+
}
87+
88+
public OSDisk OSDisk
89+
{
90+
get
91+
{
92+
if (this.StorageProfile != null)
7893
{
79-
return this.StorageProfile.OSDisk.Name;
94+
return this.StorageProfile.OSDisk;
8095
}
8196

82-
return string.Empty;
97+
return null;
8398
}
8499
}
85100

@@ -111,15 +126,19 @@ public IList<string> NetworkInterfaces
111126

112127
public IList<VirtualMachineExtension> Extensions { get; set; }
113128

114-
public VirtualMachineInstanceView Status { get; set; }
115-
116129
public HardwareProfile HardwareProfile { get; set; }
117130

118131
public NetworkProfile NetworkProfile { get; set; }
119132

120133
public OSProfile OSProfile { get; set; }
121134

122135
public StorageProfile StorageProfile { get; set; }
136+
137+
public VirtualMachineInstanceView InstanceView { get; set; }
138+
139+
public Plan Plan { get; set; }
140+
141+
public string Id { get; set; }
123142
}
124143

125144
public static class PSVirtualMachineConversions
@@ -136,28 +155,33 @@ public static PSVirtualMachine ToPSVirtualMachine(this VirtualMachineGetResponse
136155

137156
public static PSVirtualMachine ToPSVirtualMachine(this VirtualMachine virtualMachine, string rgName = null)
138157
{
158+
if (string.IsNullOrEmpty(rgName))
159+
{
160+
bool parsed = TryParseResourceGroupName(virtualMachine.Id, out rgName);
161+
}
162+
139163
PSVirtualMachine result = new PSVirtualMachine
140164
{
141165
ResourceGroupName = rgName,
142-
Name = virtualMachine == null ? null : virtualMachine.Name,
143-
Location = virtualMachine == null ? null : virtualMachine.Location,
166+
Id = virtualMachine.Id,
167+
Name = virtualMachine.Name,
168+
Location = virtualMachine.Location,
144169
ProvisioningState = virtualMachine.ProvisioningState,
145-
Tags = virtualMachine.Tags,
146-
Extensions = virtualMachine.Extensions,
147-
Status = null, // TODO: VM response does not return Status info yet
170+
Tags = virtualMachine.Tags,
171+
Extensions = virtualMachine.Extensions,
172+
InstanceView = virtualMachine.InstanceView,
173+
Plan = virtualMachine.Plan,
174+
OSProfile = virtualMachine.OSProfile,
175+
HardwareProfile = virtualMachine.HardwareProfile,
176+
StorageProfile = virtualMachine.StorageProfile,
177+
NetworkProfile = virtualMachine.NetworkProfile,
148178
};
149179

150-
var asetRef = virtualMachine.AvailabilitySetReference;
151-
if (asetRef != null)
180+
if (virtualMachine.AvailabilitySetReference != null)
152181
{
153182
result.AvailabilitySetId = virtualMachine.AvailabilitySetReference.ReferenceUri;
154183
}
155184

156-
result.OSProfile = virtualMachine.OSProfile;
157-
result.HardwareProfile = virtualMachine.HardwareProfile;
158-
result.StorageProfile = virtualMachine.StorageProfile;
159-
result.NetworkProfile = virtualMachine.NetworkProfile;
160-
161185
return result;
162186
}
163187

@@ -176,5 +200,25 @@ public static List<PSVirtualMachine> ToPSVirtualMachineList(this VirtualMachineL
176200

177201
return results;
178202
}
203+
204+
private static bool TryParseResourceGroupName(string virtualMachineId, out string rgName)
205+
{
206+
const string group = "rgname";
207+
const string pattern = @"(.*?)/resourcegroups/(?<" + group + @">\S+)/providers/Microsoft.Compute/virtualMachines/(.*?)";
208+
209+
Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
210+
Match m = r.Match(virtualMachineId);
211+
212+
if (m.Success)
213+
{
214+
rgName = m.Groups[group].Value;
215+
return true;
216+
}
217+
else
218+
{
219+
rgName = null;
220+
return false;
221+
}
222+
}
179223
}
180224
}

src/ResourceManager/Compute/Commands.Compute/Models/PSVirtualMachineInstanceView.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class PSVirtualMachineInstanceView
3030
public IList<VirtualMachineExtensionInstanceView> Extensions { get; set; }
3131

3232
public int? PlatformFaultDomain { get; set; }
33+
3334
public int? PlatformUpdateDomain { get; set; }
3435

3536
public string RemoteDesktopThumbprint { get; set; }

src/ResourceManager/Compute/Commands.Compute/VirtualMachine/Config/SetAzureVMOSDiskCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ public override void ExecuteCmdlet()
117117
},
118118
SourceImage = string.IsNullOrEmpty(this.SourceImageUri) ? null : new VirtualHardDisk
119119
{
120-
Uri = SourceImageUri
120+
Uri = this.SourceImageUri
121121
},
122-
CreateOption = CreateOption
122+
CreateOption = this.CreateOption
123123
};
124124

125125
WriteObject(this.VM);

0 commit comments

Comments
 (0)