Skip to content

Commit 64a914b

Browse files
Nilambariisra-fel
andauthored
Virtual Wan P2S MultiPool feature changes (#17032)
* MultiPool feature changes Part1 * bug fix * Command let changes * Add change log * Fix command let * Test update * Incorporate review comments * Fixes * Incorporate review comments * Incorpotate review comments * Add missing field in cmd output * Update help files * Minor fix * Update help file & include new test recording with new changes covered. * Update ChangeLog.md Co-authored-by: Yeming Liu <[email protected]>
1 parent 0beeece commit 64a914b

31 files changed

+19885
-8779
lines changed

src/Network/Network.Test/ScenarioTests/CortexTests.ps1

Lines changed: 91 additions & 23 deletions
Large diffs are not rendered by default.

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.CortexTests/TestP2SCortexCRUD.json

Lines changed: 16866 additions & 8666 deletions
Large diffs are not rendered by default.

src/Network/Network/Az.Network.psd1

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,12 @@ CmdletsToExport = 'Add-AzApplicationGatewayAuthenticationCertificate',
440440
'Get-AzVpnConnection', 'Update-AzVpnConnection',
441441
'Remove-AzVpnConnection', 'New-AzVirtualHubVnetConnection',
442442
'Get-AzVirtualHubVnetConnection',
443-
'Remove-AzVirtualHubVnetConnection',
444-
'Update-AzVirtualHubVnetConnection', 'Get-AzVpnServerConfiguration',
445-
'New-AzVpnServerConfiguration', 'Remove-AzVpnServerConfiguration',
446-
'Update-AzVpnServerConfiguration', 'Get-AzP2sVpnGateway',
443+
'Remove-AzVirtualHubVnetConnection', 'Update-AzVirtualHubVnetConnection',
444+
'Get-AzVpnServerConfiguration', 'New-AzVpnServerConfiguration',
445+
'Remove-AzVpnServerConfiguration', 'Update-AzVpnServerConfiguration',
446+
'Get-AzVpnServerConfigurationPolicyGroup',
447+
'New-AzVpnServerConfigurationPolicyGroup', 'Remove-AzVpnServerConfigurationPolicyGroup',
448+
'Update-AzVpnServerConfigurationPolicyGroup', 'Get-AzP2sVpnGateway',
447449
'Disconnect-AzP2sVpnGatewayVpnConnection',
448450
'Get-AzP2sVpnGatewayConnectionHealth',
449451
'Get-AzP2sVpnGatewayDetailedConnectionHealth',

src/Network/Network/ChangeLog.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@
2929
- `New-AzVirtualHub`
3030
- `Update-AzVirtualHub`
3131
* Added optional parameter `AuxiliaryMode` to cmdlet `New-AzNetworkInterface` to enable this network interface as Sirius enabled. Allowed values are None(default) and MaxConnections.
32+
* Multipool feature change: Updated cmdlets to add new optional property: `ConfigurationPolicyGroups` object for associating policy groups.
33+
- `Update-AzVpnServerConfiguration`
34+
- `New-AzVpnServerConfiguration`
35+
* Multipool feature change: Updated cmdlets to add new optional property: `P2SConnectionConfiguration` object for specifying multiple Connection configurations.
36+
- `Update-AzP2sVpnGateway`
37+
- `New-AzP2sVpnGateway`
38+
* Multipool feature change: Added new cmdlets to suppport CRUD of Configuration policy groups for VpnServerConfiguration.
39+
- `Get-AzVpnServerConfigurationPolicyGroup`
40+
- `New-AzVpnServerConfigurationPolicyGroup`
41+
- `Update-AzVpnServerConfigurationPolicyGroup`
42+
- `Remove-AzVpnServerConfigurationPolicyGroup`
3243

3344
## Version 4.16.1
3445
* Fixed `ArgumentNullException` in `Add-AzureRmRouteConfig` when `RouteTable.Routes` is null.

src/Network/Network/Common/NetworkResourceManagerProfile.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1235,6 +1235,8 @@ private static void Initialize()
12351235
// MNM to CNM
12361236
cfg.CreateMap<MNM.P2SVpnGateway, CNM.PSP2SVpnGateway>();
12371237
cfg.CreateMap<MNM.P2SConnectionConfiguration, CNM.PSP2SConnectionConfiguration>();
1238+
cfg.CreateMap<MNM.VpnServerConfigurationPolicyGroup, CNM.PSVpnServerConfigurationPolicyGroup>();
1239+
cfg.CreateMap<MNM.VpnServerConfigurationPolicyGroupMember, CNM.PSVpnServerConfigurationPolicyGroupMember>();
12381240
cfg.CreateMap<MNM.VpnClientConnectionHealth, CNM.PSVpnClientConnectionHealth>();
12391241
cfg.CreateMap<MNM.P2SVpnConnectionHealth, CNM.PSP2SVpnConnectionHealth>();
12401242
cfg.CreateMap<MNM.VpnProfileResponse, CNM.PSVpnProfileResponse>();
@@ -1251,6 +1253,8 @@ private static void Initialize()
12511253
// CNM to MNM
12521254
cfg.CreateMap<CNM.PSP2SVpnGateway, MNM.P2SVpnGateway>();
12531255
cfg.CreateMap<CNM.PSP2SConnectionConfiguration, MNM.P2SConnectionConfiguration>();
1256+
cfg.CreateMap<CNM.PSVpnServerConfigurationPolicyGroup, MNM.VpnServerConfigurationPolicyGroup>();
1257+
cfg.CreateMap<CNM.PSVpnServerConfigurationPolicyGroupMember, MNM.VpnServerConfigurationPolicyGroupMember>();
12541258
cfg.CreateMap<CNM.PSVpnClientConnectionHealth, MNM.VpnClientConnectionHealth>();
12551259
cfg.CreateMap<CNM.PSP2SVpnConnectionHealth, MNM.P2SVpnConnectionHealth>();
12561260
cfg.CreateMap<CNM.PSVpnProfileResponse, MNM.VpnProfileResponse>();

src/Network/Network/Cortex/P2SVpnGateway/NewAzureRmP2sVpnGatewayCommand.cs

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public class NewAzureRmP2SVpnGatewayCommand : P2SVpnGatewayBaseCmdlet
126126
public string VpnServerConfigurationId { get; set; }
127127

128128
[Parameter(
129-
Mandatory = true,
129+
Mandatory = false,
130130
HelpMessage = "P2S VpnClient AddressPool for this P2SVpnGateway P2SConnectionConfiguration.")]
131131
[ValidateNotNullOrEmpty]
132132
public string[] VpnClientAddressPool { get; set; }
@@ -157,6 +157,11 @@ public class NewAzureRmP2SVpnGatewayCommand : P2SVpnGatewayBaseCmdlet
157157
HelpMessage = "Flag to enable Routing Preference Internet on this P2SVpnGateway.")]
158158
public SwitchParameter EnableRoutingPreferenceInternetFlag { get; set; }
159159

160+
[Parameter(
161+
Mandatory = false,
162+
HelpMessage = "The list of P2SConnectionConfigurations that this P2SVpnGateway needs to have.")]
163+
public PSP2SConnectionConfiguration[] P2SConnectionConfiguration { get; set; }
164+
160165
[Parameter(
161166
Mandatory = false,
162167
HelpMessage = "A hashtable which represents resource tags.")]
@@ -211,43 +216,53 @@ public override void Execute()
211216
p2sVpnGateway.Location = resolvedVirtualHub.Location;
212217
p2sVpnGateway.VirtualHub = new PSResourceId() { Id = resolvedVirtualHub.Id };
213218

214-
//// Set P2SConnectionConfigurations. Currently, only one P2SConnectionConfiguration is allowed.
215-
PSP2SConnectionConfiguration p2sConnectionConfig = new PSP2SConnectionConfiguration()
219+
// Set P2SConnectionConfigurations.
220+
p2sVpnGateway.P2SConnectionConfigurations = new List<PSP2SConnectionConfiguration>();
221+
if (this.P2SConnectionConfiguration != null && this.P2SConnectionConfiguration.Any())
222+
{
223+
p2sVpnGateway.P2SConnectionConfigurations.AddRange(this.P2SConnectionConfiguration);
224+
}
225+
else
216226
{
217-
Name = P2SConnectionConfigurationName,
218-
VpnClientAddressPool = new PSAddressSpace()
227+
PSP2SConnectionConfiguration p2sConnectionConfig = new PSP2SConnectionConfiguration()
219228
{
220-
AddressPrefixes = new List<string>(this.VpnClientAddressPool)
221-
},
222-
};
229+
Name = P2SConnectionConfigurationName,
230+
VpnClientAddressPool = new PSAddressSpace()
231+
{
232+
AddressPrefixes = new List<string>(this.VpnClientAddressPool)
233+
},
234+
};
235+
p2sVpnGateway.P2SConnectionConfigurations.Add(p2sConnectionConfig);
236+
}
223237

224238
// By default EnableInternetSecurity will be true if not specified explicitly by customer.
225-
p2sConnectionConfig.EnableInternetSecurity = true;
239+
p2sVpnGateway.P2SConnectionConfigurations.ForEach(config => config.EnableInternetSecurity = true);
240+
241+
if (this.EnableInternetSecurityFlag.IsPresent && this.DisableInternetSecurityFlag.IsPresent)
242+
{
243+
throw new ArgumentException("Both EnableInternetSecurityFlag and DisableInternetSecurityFlag Parameters can not be passed.");
244+
}
226245

227246
if (this.EnableInternetSecurityFlag.IsPresent)
228247
{
229-
p2sConnectionConfig.EnableInternetSecurity = true;
248+
p2sVpnGateway.P2SConnectionConfigurations.ForEach(config => config.EnableInternetSecurity = true);
230249
}
231250
if (this.DisableInternetSecurityFlag.IsPresent)
232251
{
233-
p2sConnectionConfig.EnableInternetSecurity = false;
252+
p2sVpnGateway.P2SConnectionConfigurations.ForEach(config => config.EnableInternetSecurity = false);
234253
}
235254

255+
// Set Routing configuration
236256
if (this.RoutingConfiguration != null)
237257
{
238258
if (this.RoutingConfiguration.VnetRoutes != null && this.RoutingConfiguration.VnetRoutes.StaticRoutes != null && this.RoutingConfiguration.VnetRoutes.StaticRoutes.Any())
239259
{
240260
throw new PSArgumentException(Properties.Resources.StaticRoutesNotSupportedForThisRoutingConfiguration);
241261
}
242-
243-
p2sConnectionConfig.RoutingConfiguration = RoutingConfiguration;
262+
263+
p2sVpnGateway.P2SConnectionConfigurations.ForEach(config => config.RoutingConfiguration = RoutingConfiguration);
244264
}
245265

246-
p2sVpnGateway.P2SConnectionConfigurations = new List<PSP2SConnectionConfiguration>()
247-
{
248-
p2sConnectionConfig
249-
};
250-
251266
//// Scale unit, if specified
252267
p2sVpnGateway.VpnGatewayScaleUnit = 0;
253268
if (this.VpnGatewayScaleUnit > 0)

src/Network/Network/Cortex/P2SVpnGateway/UpdateAzureRmP2SVpnGatewayCommand.cs

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,11 @@ public class UpdateAzureRmP2SVpnGatewayCommand : P2SVpnGatewayBaseCmdlet
112112
[ValidateNotNullOrEmpty]
113113
public string[] VpnClientAddressPool { get; set; }
114114

115+
[Parameter(
116+
Mandatory = false,
117+
HelpMessage = "The list of P2SConnectionConfigurations that this P2SVpnGateway needs to have.")]
118+
public PSP2SConnectionConfiguration[] P2SConnectionConfiguration { get; set; }
119+
115120
[Parameter(
116121
Mandatory = false,
117122
ValueFromPipeline = true,
@@ -215,28 +220,36 @@ public override void Execute()
215220
existingP2SVpnGateway.VpnGatewayScaleUnit = Convert.ToInt32(this.VpnGatewayScaleUnit);
216221
}
217222

218-
//// Modify the P2SConnectionConfigurations
219-
if (existingP2SVpnGateway.P2SConnectionConfigurations == null || !existingP2SVpnGateway.P2SConnectionConfigurations.Any())
223+
// Modify the P2SConnectionConfigurations
224+
if (this.P2SConnectionConfiguration != null)
220225
{
221-
PSP2SConnectionConfiguration p2sConnectionConfig = new PSP2SConnectionConfiguration()
226+
existingP2SVpnGateway.P2SConnectionConfigurations = new List<PSP2SConnectionConfiguration>();
227+
existingP2SVpnGateway.P2SConnectionConfigurations.AddRange(this.P2SConnectionConfiguration);
228+
}
229+
else
230+
{
231+
if (existingP2SVpnGateway.P2SConnectionConfigurations == null || !existingP2SVpnGateway.P2SConnectionConfigurations.Any())
222232
{
223-
Name = P2SConnectionConfigurationName,
224-
VpnClientAddressPool = new PSAddressSpace()
233+
PSP2SConnectionConfiguration p2sConnectionConfig = new PSP2SConnectionConfiguration()
225234
{
226-
AddressPrefixes = new List<string>()
227-
}
228-
};
235+
Name = P2SConnectionConfigurationName,
236+
VpnClientAddressPool = new PSAddressSpace()
237+
{
238+
AddressPrefixes = new List<string>()
239+
}
240+
};
229241

230-
existingP2SVpnGateway.P2SConnectionConfigurations = new List<PSP2SConnectionConfiguration>()
242+
existingP2SVpnGateway.P2SConnectionConfigurations = new List<PSP2SConnectionConfiguration>()
231243
{
232244
p2sConnectionConfig
233245
};
234-
}
246+
}
235247

236-
if (this.VpnClientAddressPool != null)
237-
{
238-
existingP2SVpnGateway.P2SConnectionConfigurations[0].VpnClientAddressPool.AddressPrefixes.Clear();
239-
existingP2SVpnGateway.P2SConnectionConfigurations[0].VpnClientAddressPool.AddressPrefixes = new List<string>(this.VpnClientAddressPool);
248+
if (this.VpnClientAddressPool != null)
249+
{
250+
existingP2SVpnGateway.P2SConnectionConfigurations[0].VpnClientAddressPool.AddressPrefixes.Clear();
251+
existingP2SVpnGateway.P2SConnectionConfigurations[0].VpnClientAddressPool.AddressPrefixes = new List<string>(this.VpnClientAddressPool);
252+
}
240253
}
241254

242255
if (this.EnableInternetSecurityFlag.IsPresent && this.DisableInternetSecurityFlag.IsPresent)
@@ -246,12 +259,12 @@ public override void Execute()
246259

247260
if (this.EnableInternetSecurityFlag.IsPresent)
248261
{
249-
existingP2SVpnGateway.P2SConnectionConfigurations[0].EnableInternetSecurity = true;
262+
existingP2SVpnGateway.P2SConnectionConfigurations.ForEach(config => config.EnableInternetSecurity = true);
250263
}
251264

252265
if (this.DisableInternetSecurityFlag.IsPresent)
253266
{
254-
existingP2SVpnGateway.P2SConnectionConfigurations[0].EnableInternetSecurity = false;
267+
existingP2SVpnGateway.P2SConnectionConfigurations.ForEach(config => config.EnableInternetSecurity = false);
255268
}
256269

257270
if (this.RoutingConfiguration != null)
@@ -261,7 +274,7 @@ public override void Execute()
261274
throw new PSArgumentException(Properties.Resources.StaticRoutesNotSupportedForThisRoutingConfiguration);
262275
}
263276

264-
existingP2SVpnGateway.P2SConnectionConfigurations[0].RoutingConfiguration = RoutingConfiguration;
277+
existingP2SVpnGateway.P2SConnectionConfigurations.ForEach(config => config.RoutingConfiguration = RoutingConfiguration);
265278
}
266279

267280
// Set the custom dns servers, if it is specified by customer.

src/Network/Network/Cortex/VpnServerConfiguration/NewAzureRmVpnServerConfigurationCommand.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@ public class NewAzureRmVpnServerConfigurationCommand : VpnServerConfigurationBas
133133
HelpMessage = "A list of IPSec policies for VpnServerConfiguration.")]
134134
public PSIpsecPolicy[] VpnClientIpsecPolicy { get; set; }
135135

136+
[Parameter(
137+
Mandatory = false,
138+
HelpMessage = "The list of VpnServerConfigurationPolicyGroups that this P2SVpnGateway needs to have.")]
139+
public PSVpnServerConfigurationPolicyGroup[] ConfigurationPolicyGroup { get; set; }
140+
136141
[Parameter(
137142
Mandatory = false,
138143
HelpMessage = "A hashtable which represents resource tags.")]
@@ -171,7 +176,8 @@ public override void Execute()
171176
this.AadTenant,
172177
this.AadAudience,
173178
this.AadIssuer,
174-
this.VpnClientIpsecPolicy);
179+
this.VpnClientIpsecPolicy,
180+
this.ConfigurationPolicyGroup);
175181

176182
ConfirmAction(
177183
Properties.Resources.CreatingResourceMessage,

src/Network/Network/Cortex/VpnServerConfiguration/UpdateAzureRmVpnServerConfigurationCommand.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ public class UpdateAzureRmVpnServerConfigurationCommand : VpnServerConfiguration
242242
HelpMessage = "A list of IPSec policies for VpnServerConfiguration.")]
243243
public PSIpsecPolicy[] VpnClientIpsecPolicy { get; set; }
244244

245+
[Parameter(
246+
Mandatory = false,
247+
HelpMessage = "The list of VpnServerConfigurationPolicyGroups that this P2SVpnGateway needs to have.")]
248+
public PSVpnServerConfigurationPolicyGroup[] ConfigurationPolicyGroup { get; set; }
249+
245250
[Parameter(
246251
Mandatory = false,
247252
HelpMessage = "A hashtable which represents resource tags.")]
@@ -296,6 +301,13 @@ public override void Execute()
296301
vpnServerConfigurationToUpdate.VpnClientIpsecPolicies = new List<PSIpsecPolicy>(this.VpnClientIpsecPolicy);
297302
}
298303

304+
// Modify the vpnServerConfigurationPolicyGroups
305+
if (this.ConfigurationPolicyGroup != null)
306+
{
307+
vpnServerConfigurationToUpdate.ConfigurationPolicyGroups = new List<PSVpnServerConfigurationPolicyGroup>();
308+
vpnServerConfigurationToUpdate.ConfigurationPolicyGroups.AddRange(this.ConfigurationPolicyGroup);
309+
}
310+
299311
// VpnAuthenticationType = Certificate related validations.
300312
if (vpnServerConfigurationToUpdate.VpnAuthenticationTypes == null ||
301313
(vpnServerConfigurationToUpdate.VpnAuthenticationTypes != null && vpnServerConfigurationToUpdate.VpnAuthenticationTypes.Contains(MNM.VpnAuthenticationType.Certificate)))

src/Network/Network/Cortex/VpnServerConfiguration/VpnServerConfigurationBaseCmdlet.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ public PSVpnServerConfiguration CreateVpnServerConfigurationObject(
110110
string aadTenant,
111111
string aadAudience,
112112
string aadIssuer,
113-
PSIpsecPolicy[] vpnClientIpsecPolicy)
113+
PSIpsecPolicy[] vpnClientIpsecPolicy,
114+
PSVpnServerConfigurationPolicyGroup[] configurationPolicyGroups)
114115
{
115116
if (vpnProtocol != null)
116117
{
@@ -127,6 +128,13 @@ public PSVpnServerConfiguration CreateVpnServerConfigurationObject(
127128
vpnServerConfiguration.VpnClientIpsecPolicies = new List<PSIpsecPolicy>(vpnClientIpsecPolicy);
128129
}
129130

131+
// VpnServerConfigurationPolicyGroups, if specified
132+
vpnServerConfiguration.ConfigurationPolicyGroups = new List<PSVpnServerConfigurationPolicyGroup>();
133+
if (configurationPolicyGroups != null && configurationPolicyGroups.Any())
134+
{
135+
vpnServerConfiguration.ConfigurationPolicyGroups.AddRange(configurationPolicyGroups);
136+
}
137+
130138
// VpnAuthenticationType = Certificate related validations.
131139
if (vpnAuthenticationType == null ||
132140
(vpnAuthenticationType != null && vpnAuthenticationType.Contains(MNM.VpnAuthenticationType.Certificate)))

0 commit comments

Comments
 (0)