Skip to content

Commit 04fd4b9

Browse files
committed
Active Active Ipsec gateway feature commandlets fix
1 parent 35d5b90 commit 04fd4b9

File tree

3 files changed

+61
-27
lines changed

3 files changed

+61
-27
lines changed

src/ResourceManager/Network/Commands.Network.Test/ScenarioTests/VirtualNetworkGatewayTests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,28 +376,28 @@ function Test-VirtualNetworkGatewayActiveActiveFeatureOperations
376376
$publicip2 = New-AzureRmPublicIpAddress -ResourceGroupName $rgname -name $publicIpName2 -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel2
377377
$vnetIpConfig2 = New-AzureRmVirtualNetworkGatewayIpConfig -Name $vnetGatewayConfigName2 -PublicIpAddress $publicip2 -Subnet $subnet
378378

379-
$actual = New-AzureRmVirtualNetworkGateway -ResourceGroupName $rgname -name $rname -Location $location -IpConfigurations $vnetIpConfig1,$vnetIpConfig2 -GatewayType Vpn -VpnType RouteBased -EnableBgp $false -ActiveActive $true -GatewaySku HighPerformance
379+
$actual = New-AzureRmVirtualNetworkGateway -ResourceGroupName $rgname -name $rname -Location $location -IpConfigurations $vnetIpConfig1,$vnetIpConfig2 -GatewayType Vpn -VpnType RouteBased -EnableBgp $false -GatewaySku HighPerformance -EnableActiveActiveFeature
380380
$expected = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rgname -name $rname
381381
Assert-AreEqual $expected.ResourceGroupName $actual.ResourceGroupName
382382
Assert-AreEqual $expected.Name $actual.Name
383383
#Assert-AreEqual "Vpn" $expected.GatewayType
384384
#Assert-AreEqual "RouteBased" $expected.VpnType
385385
Assert-AreEqual true $expected.ActiveActive
386386
Assert-AreEqual 2 @($expected.IpConfigurations).Count
387-
387+
388388
<# ToDo:- Enable this validation afterwards
389389
# Update virtualNetworkGateway from Active-Active to Active-Standby
390390
$gw = Get-AzureRmVirtualNetworkGateway -Name $rname -ResourceGroupName $rgname
391391
Remove-AzureRmVirtualNetworkGatewayIpConfig -Name $vnetGatewayConfigName2 -VirtualNetworkGateway $gw
392-
$expected = Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gw -ActiveActive $false
392+
$expected = Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gw -DisableActiveActiveFeature
393393
$expected = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rgname -name $rname
394394
Assert-AreEqual false $expected.ActiveActive
395395
Assert-AreEqual 1 @($expected.IpConfigurations).Count
396396
397397
# Update virtualNetworkGateway from Active-Standby to Active-Active
398398
$gw = Get-AzureRmVirtualNetworkGateway -Name $rname -ResourceGroupName $rgname
399399
Add-AzureRmVirtualNetworkGatewayIpConfig -Name $vnetGatewayConfigName2 -VirtualNetworkGateway $gw
400-
$expected = Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gw -ActiveActive $true
400+
$expected = Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gw -EnableActiveActiveFeature
401401
$expected = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rgname -name $rname
402402
Assert-AreEqual true $expected.ActiveActive
403403
Assert-AreEqual 2 @($expected.IpConfigurations).Count

src/ResourceManager/Network/Commands.Network/VirtualNetworkGateway/NewAzureVirtualNetworkGatewayCommand.cs

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,8 @@ public class NewAzureVirtualNetworkGatewayCommand : VirtualNetworkGatewayBaseCmd
8585

8686
[Parameter(
8787
Mandatory = false,
88-
ValueFromPipelineByPropertyName = true,
89-
HelpMessage = "Active-Active feature flag")]
90-
public bool ActiveActive { get; set; }
88+
HelpMessage = "Flag to enable Active Active feature on virtual network gateway")]
89+
public SwitchParameter EnableActiveActiveFeature { get; set; }
9190

9291
[Parameter(
9392
Mandatory = false,
@@ -174,22 +173,45 @@ private PSVirtualNetworkGateway CreateVirtualNetworkGateway()
174173
vnetGateway.ResourceGroupName = this.ResourceGroupName;
175174
vnetGateway.Location = this.Location;
176175

177-
if (this.ActiveActive && !this.GatewaySku.Equals(MNM.VirtualNetworkGatewaySkuTier.HighPerformance))
176+
if (this.GatewaySku != null)
177+
{
178+
vnetGateway.Sku = new PSVirtualNetworkGatewaySku();
179+
vnetGateway.Sku.Tier = this.GatewaySku;
180+
vnetGateway.Sku.Name = this.GatewaySku;
181+
}
182+
else
183+
{
184+
// If gateway sku param value is not passed, set gateway sku to Standard if VpnType is RouteBased and Basic if VpnType is PolicyBased
185+
if (this.VpnType != null && this.VpnType.Equals(MNM.VpnType.RouteBased))
186+
{
187+
vnetGateway.Sku = new PSVirtualNetworkGatewaySku();
188+
vnetGateway.Sku.Tier = MNM.VirtualNetworkGatewaySkuTier.Standard;
189+
vnetGateway.Sku.Name = MNM.VirtualNetworkGatewaySkuTier.Standard;
190+
}
191+
else
192+
{
193+
vnetGateway.Sku = new PSVirtualNetworkGatewaySku();
194+
vnetGateway.Sku.Tier = MNM.VirtualNetworkGatewaySkuTier.Basic;
195+
vnetGateway.Sku.Name = MNM.VirtualNetworkGatewaySkuTier.Basic;
196+
}
197+
}
198+
199+
if (this.EnableActiveActiveFeature.IsPresent && !vnetGateway.Sku.Tier.Equals(MNM.VirtualNetworkGatewaySkuTier.HighPerformance))
178200
{
179201
throw new ArgumentException("Virtual Network Gateway Sku should be " + MNM.VirtualNetworkGatewaySkuTier.HighPerformance + " when Active-Active feature flag is set to True.");
180202
}
181203

182-
if (this.ActiveActive && !this.VpnType.Equals(MNM.VpnType.RouteBased))
204+
if (this.EnableActiveActiveFeature.IsPresent && !this.VpnType.Equals(MNM.VpnType.RouteBased))
183205
{
184206
throw new ArgumentException("Virtual Network Gateway VpnType should be " + MNM.VpnType.RouteBased + " when Active-Active feature flag is set to True.");
185207
}
186208

187-
if (this.ActiveActive && this.IpConfigurations.Count != 2)
209+
if (this.EnableActiveActiveFeature.IsPresent && this.IpConfigurations.Count != 2)
188210
{
189211
throw new ArgumentException("Virtual Network Gateway should have 2 Gateway IpConfigurations specified when Active-Active feature flag is True.");
190212
}
191213

192-
if (!this.ActiveActive && this.IpConfigurations.Count == 2)
214+
if (!this.EnableActiveActiveFeature.IsPresent && this.IpConfigurations.Count == 2)
193215
{
194216
throw new ArgumentException("Virtual Network Gateway should have Active-Active feature flag set to True as there are 2 Gateway IpConfigurations specified. OR there should be only one Gateway IpConfiguration specified.");
195217
}
@@ -202,7 +224,7 @@ private PSVirtualNetworkGateway CreateVirtualNetworkGateway()
202224
vnetGateway.GatewayType = this.GatewayType;
203225
vnetGateway.VpnType = this.VpnType;
204226
vnetGateway.EnableBgp = this.EnableBgp;
205-
vnetGateway.ActiveActive = this.ActiveActive;
227+
vnetGateway.ActiveActive = this.EnableActiveActiveFeature.IsPresent;
206228

207229
if (this.GatewayDefaultSite != null)
208230
{
@@ -214,17 +236,6 @@ private PSVirtualNetworkGateway CreateVirtualNetworkGateway()
214236
vnetGateway.GatewayDefaultSite = null;
215237
}
216238

217-
if (this.GatewaySku != null)
218-
{
219-
vnetGateway.Sku = new PSVirtualNetworkGatewaySku();
220-
vnetGateway.Sku.Tier = this.GatewaySku;
221-
vnetGateway.Sku.Name = this.GatewaySku;
222-
}
223-
else
224-
{
225-
vnetGateway.Sku = null;
226-
}
227-
228239
if (this.VpnClientAddressPool != null || this.VpnClientRootCertificates != null || this.VpnClientRevokedCertificates != null)
229240
{
230241
vnetGateway.VpnClientConfiguration = new PSVpnClientConfiguration();

src/ResourceManager/Network/Commands.Network/VirtualNetworkGateway/UpdateAzureVirtualNetworkGatewayCommand.cs

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,21 @@ public class SetAzureVirtualNetworkGatewayCommand : VirtualNetworkGatewayBaseCmd
8080
HelpMessage = "The weight added to routes learned over BGP from this virtual network gateway")]
8181
public int PeerWeight { get; set; }
8282

83+
//[Parameter(
84+
// Mandatory = false,
85+
// ValueFromPipelineByPropertyName = true,
86+
// HelpMessage = "ActiveActive feature flag")]
87+
//public bool ActiveActive { get; set; }
88+
8389
[Parameter(
8490
Mandatory = false,
85-
ValueFromPipelineByPropertyName = true,
86-
HelpMessage = "ActiveActive feature flag")]
87-
public bool ActiveActive { get; set; }
91+
HelpMessage = "Flag to enable Active Active feature on virtual network gateway")]
92+
public SwitchParameter EnableActiveActiveFeature { get; set; }
93+
94+
[Parameter(
95+
Mandatory = false,
96+
HelpMessage = "Flag to disable Active Active feature on virtual network gateway")]
97+
public SwitchParameter DisableActiveActiveFeature { get; set; }
8898

8999
public override void Execute()
90100
{
@@ -95,7 +105,20 @@ public override void Execute()
95105
throw new ArgumentException(Microsoft.Azure.Commands.Network.Properties.Resources.ResourceNotFound);
96106
}
97107

98-
this.VirtualNetworkGateway.ActiveActive = this.ActiveActive;
108+
if(this.EnableActiveActiveFeature.IsPresent && this.DisableActiveActiveFeature.IsPresent)
109+
{
110+
throw new ArgumentException("Both EnableActiveActiveFeature and DisableActiveActiveFeature Parameters can not be passed.");
111+
}
112+
113+
if (this.EnableActiveActiveFeature.IsPresent)
114+
{
115+
this.VirtualNetworkGateway.ActiveActive = true;
116+
}
117+
118+
if (this.DisableActiveActiveFeature.IsPresent)
119+
{
120+
this.VirtualNetworkGateway.ActiveActive = false;
121+
}
99122

100123
if (this.VirtualNetworkGateway.ActiveActive)
101124
{

0 commit comments

Comments
 (0)