Skip to content

Commit 39c52f7

Browse files
authored
Merge branch 'preview' into NetCoreStorage
2 parents 095dabf + 443db7d commit 39c52f7

File tree

10 files changed

+102
-53
lines changed

10 files changed

+102
-53
lines changed

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+
* `New-AzureRmVm` and `New-AzureRmVmss` (simple parameter set) support availability zones.
2122
* Updated to the latest version of the Azure ClientRuntime
2223

2324
## Version 4.5.0

src/ResourceManager/Compute/Commands.Compute/Manual/VirtualMachineScaleSetCreateOrUpdateMethod.cs

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
2323
using Microsoft.Azure.Management.Compute.Models;
2424
using Microsoft.Azure.Management.Internal.Network.Version2017_10_01.Models;
25+
using System;
2526
using System.Collections.Generic;
2627
using System.Linq;
2728
using System.Management.Automation;
2829
using System.Net;
2930
using System.Threading;
3031
using System.Threading.Tasks;
31-
using System;
3232

3333
namespace Microsoft.Azure.Commands.Compute.Automation
3434
{
@@ -153,10 +153,16 @@ public async Task<ResourceConfig<VirtualMachineScaleSet>> CreateConfigAsync()
153153

154154
var resourceGroup = ResourceGroupStrategy.CreateResourceGroupConfig(_cmdlet.ResourceGroupName);
155155

156+
var noZones = _cmdlet.Zone == null || _cmdlet.Zone.Count == 0;
157+
156158
var publicIpAddress = resourceGroup.CreatePublicIPAddressConfig(
157159
name: _cmdlet.PublicIpAddressName,
158160
domainNameLabel: _cmdlet.DomainNameLabel,
159-
allocationMethod: _cmdlet.AllocationMethod);
161+
allocationMethod: _cmdlet.AllocationMethod,
162+
sku: noZones
163+
? PublicIPAddressStrategy.Sku.Basic
164+
: PublicIPAddressStrategy.Sku.Standard,
165+
zones: null);
160166

161167
var virtualNetwork = resourceGroup.CreateVirtualNetworkConfig(
162168
name: _cmdlet.VirtualNetworkName,
@@ -166,11 +172,13 @@ public async Task<ResourceConfig<VirtualMachineScaleSet>> CreateConfigAsync()
166172
_cmdlet.SubnetName, _cmdlet.SubnetAddressPrefix);
167173

168174
var loadBalancer = resourceGroup.CreateLoadBalancerConfig(
169-
name: _cmdlet.LoadBalancerName);
175+
name: _cmdlet.LoadBalancerName,
176+
sku: noZones
177+
? LoadBalancerStrategy.Sku.Basic
178+
: LoadBalancerStrategy.Sku.Standard);
170179

171180
var frontendIpConfiguration = loadBalancer.CreateFrontendIPConfiguration(
172181
name: _cmdlet.FrontendPoolName,
173-
zones: _cmdlet.Zone,
174182
publicIpAddress: publicIpAddress);
175183

176184
var backendAddressPool = loadBalancer.CreateBackendAddressPool(
@@ -195,25 +203,34 @@ public async Task<ResourceConfig<VirtualMachineScaleSet>> CreateConfigAsync()
195203
var inboundNatPoolName = _cmdlet.VMScaleSetName;
196204
var PortRangeSize = _cmdlet.InstanceCount * 2;
197205

198-
var inboundNatPools = _cmdlet.NatBackendPort
199-
?.Select((port, i) =>
200-
{
201-
var portRangeStart = FirstPortRangeStart + i * 2000;
202-
return loadBalancer.CreateInboundNatPool(
203-
name: inboundNatPoolName + port.ToString(),
204-
frontendIpConfiguration: frontendIpConfiguration,
205-
frontendPortRangeStart: portRangeStart,
206-
frontendPortRangeEnd: portRangeStart + PortRangeSize,
207-
backendPort: port);
208-
})
206+
var ports = _cmdlet
207+
.NatBackendPort
208+
?.Select((port, i) => Tuple.Create(
209+
port,
210+
FirstPortRangeStart + i * 2000))
209211
.ToList();
210212

213+
var inboundNatPools = ports
214+
?.Select(p => loadBalancer.CreateInboundNatPool(
215+
name: inboundNatPoolName + p.Item1.ToString(),
216+
frontendIpConfiguration: frontendIpConfiguration,
217+
frontendPortRangeStart: p.Item2,
218+
frontendPortRangeEnd: p.Item2 + PortRangeSize,
219+
backendPort: p.Item1))
220+
.ToList();
221+
222+
var networkSecurityGroup = noZones
223+
? null
224+
: resourceGroup.CreateNetworkSecurityGroupConfig(
225+
_cmdlet.VMScaleSetName,
226+
_cmdlet.NatBackendPort.Concat(_cmdlet.BackendPort).ToList());
227+
211228
return resourceGroup.CreateVirtualMachineScaleSetConfig(
212229
name: _cmdlet.VMScaleSetName,
213-
subnet: subnet,
214-
frontendIpConfigurations: new[] { frontendIpConfiguration },
230+
subnet: subnet,
215231
backendAdressPool: backendAddressPool,
216232
inboundNatPools: inboundNatPools,
233+
networkSecurityGroup: networkSecurityGroup,
217234
imageAndOsType: ImageAndOsType,
218235
adminUsername: _cmdlet.Credential.UserName,
219236
adminPassword: new NetworkCredential(string.Empty, _cmdlet.Credential.Password).Password,
@@ -222,7 +239,8 @@ public async Task<ResourceConfig<VirtualMachineScaleSet>> CreateConfigAsync()
222239
upgradeMode: _cmdlet.MyInvocation.BoundParameters.ContainsKey(nameof(UpgradePolicyMode))
223240
? _cmdlet.UpgradePolicyMode
224241
: (UpgradeMode?)null,
225-
dataDisks: _cmdlet.DataDiskSizeInGb);
242+
dataDisks: _cmdlet.DataDiskSizeInGb,
243+
zones: _cmdlet.Zone);
226244
}
227245
}
228246

@@ -260,7 +278,7 @@ async Task SimpleParameterSetExecuteCmdlet(IAsyncCmdlet asyncCmdlet)
260278
var range =
261279
FirstPortRangeStart.ToString() +
262280
".." +
263-
(FirstPortRangeStart + InstanceCount * 2).ToString();
281+
(FirstPortRangeStart + InstanceCount * 2 - 1).ToString();
264282

265283
asyncCmdlet.WriteVerbose(
266284
Resources.VmssUseConnectionString,

src/ResourceManager/Compute/Commands.Compute/Strategies/ComputeRp/SubResourceStrategy.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ public static SubResource GetReference(
2828
this IEngine engine, ResourceConfig<AvailabilitySet> availabilitySet)
2929
=> engine.GetSubResourceReference(availabilitySet);
3030

31+
public static SubResource GetReference(
32+
this IEngine engine, ResourceConfig<N.NetworkSecurityGroup> networkSecurityGroup)
33+
=> engine.GetSubResourceReference(networkSecurityGroup);
34+
3135
public static SubResource GetReference(
3236
this IEngine engine,
3337
NestedResourceConfig<N.BackendAddressPool, N.LoadBalancer> backendAddressPool)

src/ResourceManager/Compute/Commands.Compute/Strategies/ComputeRp/VirtualMachineScaleSetStrategy.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,23 @@ internal static ResourceConfig<VirtualMachineScaleSet> CreateVirtualMachineScale
3939
this ResourceConfig<ResourceGroup> resourceGroup,
4040
string name,
4141
NestedResourceConfig<Subnet, VirtualNetwork> subnet,
42-
IEnumerable<NestedResourceConfig<FrontendIPConfiguration, LoadBalancer>> frontendIpConfigurations,
4342
NestedResourceConfig<BackendAddressPool, LoadBalancer> backendAdressPool,
4443
IEnumerable<NestedResourceConfig<InboundNatPool, LoadBalancer>> inboundNatPools,
44+
ResourceConfig<NetworkSecurityGroup> networkSecurityGroup,
4545
ImageAndOsType imageAndOsType,
4646
string adminUsername,
4747
string adminPassword,
4848
string vmSize,
4949
int instanceCount,
5050
UpgradeMode? upgradeMode,
51-
IEnumerable<int> dataDisks)
51+
IEnumerable<int> dataDisks,
52+
IList<string> zones)
5253
=> Strategy.CreateResourceConfig(
5354
resourceGroup: resourceGroup,
5455
name: name,
5556
createModel: engine => new VirtualMachineScaleSet()
5657
{
57-
Zones = frontendIpConfigurations
58-
?.Select(f => f.CreateModel(engine))
59-
?.Where(z => z?.Zones != null)
60-
.SelectMany(z => z.Zones)
61-
.Where(z => z != null)
62-
.ToList(),
58+
Zones = zones,
6359

6460
UpgradePolicy = new UpgradePolicy
6561
{
@@ -109,7 +105,8 @@ internal static ResourceConfig<VirtualMachineScaleSet> CreateVirtualMachineScale
109105
.ToList()
110106
}
111107
},
112-
Primary = true
108+
Primary = true,
109+
NetworkSecurityGroup = engine.GetReference(networkSecurityGroup)
113110
}
114111
}
115112
}

src/ResourceManager/Compute/Commands.Compute/Strategies/ComputeRp/VirtualMachineStrategy.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
4545
string adminPassword,
4646
string size,
4747
ResourceConfig<AvailabilitySet> availabilitySet,
48-
IEnumerable<int> dataDisks)
48+
IEnumerable<int> dataDisks,
49+
IList<string> zones)
4950
=> Strategy.CreateResourceConfig(
5051
resourceGroup: resourceGroup,
5152
name: name,
@@ -76,7 +77,8 @@ public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
7677
DataDisks = DataDiskStrategy.CreateDataDisks(
7778
imageAndOsType?.DataDiskLuns, dataDisks)
7879
},
79-
AvailabilitySet = engine.GetReference(availabilitySet)
80+
AvailabilitySet = engine.GetReference(availabilitySet),
81+
Zones = zones,
8082
});
8183

8284
public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
@@ -87,7 +89,8 @@ public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
8789
ResourceConfig<Disk> disk,
8890
string size,
8991
ResourceConfig<AvailabilitySet> availabilitySet,
90-
IEnumerable<int> dataDisks)
92+
IEnumerable<int> dataDisks,
93+
IList<string> zones)
9194
=> Strategy.CreateResourceConfig(
9295
resourceGroup: resourceGroup,
9396
name: name,
@@ -115,7 +118,8 @@ public static ResourceConfig<VirtualMachine> CreateVirtualMachineConfig(
115118
},
116119
DataDisks = DataDiskStrategy.CreateDataDisks(null, dataDisks)
117120
},
118-
AvailabilitySet = engine.GetReference(availabilitySet)
121+
AvailabilitySet = engine.GetReference(availabilitySet),
122+
Zones = zones
119123
});
120124
}
121125
}

src/ResourceManager/Compute/Commands.Compute/Strategies/Network/FrontendIPConfigurationStrategy.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,12 @@ static class FrontendIPConfigurationStrategy
3131
public static NestedResourceConfig<FrontendIPConfiguration, LoadBalancer> CreateFrontendIPConfiguration(
3232
this ResourceConfig<LoadBalancer> loadBalancer,
3333
string name,
34-
IList<string> zones,
3534
ResourceConfig<PublicIPAddress> publicIpAddress)
3635
=> loadBalancer.CreateNested(
3736
strategy: Strategy,
3837
name: name,
3938
createModel: engine => new FrontendIPConfiguration
4039
{
41-
Zones = zones,
4240
PublicIPAddress = engine.GetReference(publicIpAddress)
4341
});
4442
}

src/ResourceManager/Compute/Commands.Compute/Strategies/Network/LoadBalancerStrategy.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,25 @@ public static class LoadBalancerStrategy
3535
p.ResourceGroupName, p.Name, p.Model, p.CancellationToken),
3636
_ => 30);
3737

38+
public enum Sku
39+
{
40+
Basic,
41+
Standard,
42+
}
43+
3844
public static ResourceConfig<LoadBalancer> CreateLoadBalancerConfig(
3945
this ResourceConfig<ResourceGroup> resourceGroup,
40-
string name)
46+
string name,
47+
Sku sku)
4148
=> Strategy.CreateResourceConfig(
4249
resourceGroup: resourceGroup,
43-
name: name);
50+
name: name,
51+
createModel: engine => new LoadBalancer
52+
{
53+
Sku = new LoadBalancerSku
54+
{
55+
Name = sku.ToString()
56+
}
57+
});
4458
}
4559
}

src/ResourceManager/Compute/Commands.Compute/Strategies/Network/NetworkSecurityGroupPolicy.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using Microsoft.Azure.Commands.Common.Strategies;
2121
using Microsoft.Azure.Management.Compute.Models;
2222
using Microsoft.Azure.Commands.Compute.Strategies.ComputeRp;
23+
using System.Collections.Generic;
2324

2425
namespace Microsoft.Azure.Commands.Compute.Strategies.Network
2526
{
@@ -36,7 +37,7 @@ static class NetworkSecurityGroupStrategy
3637
createTime: _ => 15);
3738

3839
public static ResourceConfig<NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
39-
this ResourceConfig<ResourceGroup> resourceGroup, string name, int[] openPorts)
40+
this ResourceConfig<ResourceGroup> resourceGroup, string name, IList<int> openPorts)
4041
=> Strategy.CreateResourceConfig(
4142
resourceGroup: resourceGroup,
4243
name: name,
@@ -57,14 +58,5 @@ public static ResourceConfig<NetworkSecurityGroup> CreateNetworkSecurityGroupCon
5758
})
5859
.ToList()
5960
});
60-
61-
public static ResourceConfig<NetworkSecurityGroup> CreateNetworkSecurityGroupConfig(
62-
this ResourceConfig<ResourceGroup> resourceGroup,
63-
string name,
64-
int[] openPorts,
65-
ImageAndOsType imageAndOsType)
66-
=> resourceGroup.CreateNetworkSecurityGroupConfig(
67-
name,
68-
imageAndOsType.UpdatePorts(openPorts));
6961
}
7062
}

src/ResourceManager/Compute/Commands.Compute/Strategies/Network/PublicIPAddressStrategy.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.Azure.Management.Internal.Network.Version2017_10_01;
1717
using Microsoft.Azure.Management.Internal.Network.Version2017_10_01.Models;
1818
using Microsoft.Azure.Management.Internal.Resources.Models;
19+
using System.Collections.Generic;
1920
using System.Threading.Tasks;
2021

2122
namespace Microsoft.Azure.Commands.Compute.Strategies.Network
@@ -32,11 +33,19 @@ static class PublicIPAddressStrategy
3233
p.ResourceGroupName, p.Name, p.Model, p.CancellationToken),
3334
createTime: _ => 15);
3435

36+
public enum Sku
37+
{
38+
Basic,
39+
Standard,
40+
}
41+
3542
public static ResourceConfig<PublicIPAddress> CreatePublicIPAddressConfig(
3643
this ResourceConfig<ResourceGroup> resourceGroup,
3744
string name,
3845
string domainNameLabel,
39-
string allocationMethod)
46+
string allocationMethod,
47+
Sku sku,
48+
IList<string> zones)
4049
=> Strategy.CreateResourceConfig(
4150
resourceGroup: resourceGroup,
4251
name: name,
@@ -46,7 +55,12 @@ public static ResourceConfig<PublicIPAddress> CreatePublicIPAddressConfig(
4655
DnsSettings = new PublicIPAddressDnsSettings
4756
{
4857
DomainNameLabel = domainNameLabel,
49-
}
58+
},
59+
Sku = new PublicIPAddressSku
60+
{
61+
Name = sku.ToString(),
62+
},
63+
Zones = zones,
5064
});
5165

5266
public static async Task<string> UpdateDomainNameLabelAsync(

src/ResourceManager/Compute/Commands.Compute/VirtualMachine/Operation/NewAzureVMCommand.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ public class NewAzureVMCommand : VirtualMachineBaseCmdlet
105105
Mandatory = false,
106106
Position = 3,
107107
ValueFromPipelineByPropertyName = true)]
108+
[Parameter(ParameterSetName = SimpleParameterSet, Mandatory = false)]
108109
[ValidateNotNullOrEmpty]
109110
public string[] Zone { get; set; }
110111

@@ -273,11 +274,15 @@ public async Task<ResourceConfig<VirtualMachine>> CreateConfigAsync()
273274
var publicIpAddress = resourceGroup.CreatePublicIPAddressConfig(
274275
name: _cmdlet.PublicIpAddressName,
275276
domainNameLabel: _cmdlet.DomainNameLabel,
276-
allocationMethod: _cmdlet.AllocationMethod);
277+
allocationMethod: _cmdlet.AllocationMethod,
278+
sku: PublicIPAddressStrategy.Sku.Basic,
279+
zones: _cmdlet.Zone);
280+
281+
_cmdlet.OpenPorts = ImageAndOsType.UpdatePorts(_cmdlet.OpenPorts);
282+
277283
var networkSecurityGroup = resourceGroup.CreateNetworkSecurityGroupConfig(
278284
name: _cmdlet.SecurityGroupName,
279-
openPorts: _cmdlet.OpenPorts,
280-
imageAndOsType: ImageAndOsType);
285+
openPorts: _cmdlet.OpenPorts);
281286

282287
var networkInterface = resourceGroup.CreateNetworkInterfaceConfig(
283288
_cmdlet.Name, subnet, publicIpAddress, networkSecurityGroup);
@@ -297,7 +302,8 @@ public async Task<ResourceConfig<VirtualMachine>> CreateConfigAsync()
297302
new NetworkCredential(string.Empty, _cmdlet.Credential.Password).Password,
298303
size: _cmdlet.Size,
299304
availabilitySet: availabilitySet,
300-
dataDisks: _cmdlet.DataDiskSizeInGb);
305+
dataDisks: _cmdlet.DataDiskSizeInGb,
306+
zones: _cmdlet.Zone);
301307
}
302308
else
303309
{
@@ -312,7 +318,8 @@ public async Task<ResourceConfig<VirtualMachine>> CreateConfigAsync()
312318
disk: disk,
313319
size: _cmdlet.Size,
314320
availabilitySet: availabilitySet,
315-
dataDisks: _cmdlet.DataDiskSizeInGb);
321+
dataDisks: _cmdlet.DataDiskSizeInGb,
322+
zones: _cmdlet.Zone);
316323
}
317324
}
318325
}

0 commit comments

Comments
 (0)