Skip to content

Commit 376bbcd

Browse files
authored
Merge pull request #2982 from Nilambari/latestdev
Fix Active-Active Gateway feature commandlets
2 parents 11c5d20 + 73f330b commit 376bbcd

File tree

4 files changed

+98
-51
lines changed

4 files changed

+98
-51
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/Microsoft.Azure.Commands.Network.dll-Help.xml

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29995,13 +29995,13 @@ New-AzureRmVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName TestResource
2999529995
</maml:description>
2999629996
<command:parameterValue required="false" variableLength="false">Boolean</command:parameterValue>
2999729997
</command:parameter>
29998-
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named">
29999-
<maml:name>ActiveActive</maml:name>
29998+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
29999+
<maml:name>EnableActiveActiveFeature</maml:name>
3000030000
<maml:description>
30001-
<maml:para />
30001+
<maml:para>Flag to enable Active Active feature on virtual network gateway. </maml:para>
3000230002
</maml:description>
30003-
<command:parameterValue required="false" variableLength="false">Boolean</command:parameterValue>
30004-
</command:parameter>
30003+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
30004+
</command:parameter>
3000530005
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named">
3000630006
<maml:name>GatewaySku</maml:name>
3000730007
<maml:description>
@@ -30179,15 +30179,15 @@ New-AzureRmVirtualNetwork -Name MyVirtualNetwork -ResourceGroupName TestResource
3017930179
<maml:uri/>
3018030180
</dev:type>
3018130181
<dev:defaultValue>none</dev:defaultValue>
30182-
</command:parameter>
30183-
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named">
30184-
<maml:name>ActiveActive</maml:name>
30182+
</command:parameter>
30183+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
30184+
<maml:name>EnableActiveActiveFeature</maml:name>
3018530185
<maml:description>
30186-
<maml:para />
30186+
<maml:para>Flag to enable Active Active feature on virtual network gateway. </maml:para>
3018730187
</maml:description>
30188-
<command:parameterValue required="false" variableLength="false">Boolean</command:parameterValue>
30188+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
3018930189
<dev:type>
30190-
<maml:name>Boolean</maml:name>
30190+
<maml:name>SwitchParameter</maml:name>
3019130191
<maml:uri/>
3019230192
</dev:type>
3019330193
<dev:defaultValue></dev:defaultValue>
@@ -49090,13 +49090,20 @@ $virtualNetwork | Set-AzureRmVirtualNetwork</dev:code>
4909049090
<maml:para>The weight added to routes learned over BGP from this virtual network gateway</maml:para>
4909149091
</maml:description>
4909249092
<command:parameterValue required="true" variableLength="false">Int32</command:parameterValue>
49093+
</command:parameter>
49094+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
49095+
<maml:name>EnableActiveActiveFeature</maml:name>
49096+
<maml:description>
49097+
<maml:para>Flag to enable Active Active feature on virtual network gateway. </maml:para>
49098+
</maml:description>
49099+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
4909349100
</command:parameter>
49094-
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named">
49095-
<maml:name>ActiveActive</maml:name>
49101+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
49102+
<maml:name>DisableActiveActiveFeature</maml:name>
4909649103
<maml:description>
49097-
<maml:para />
49104+
<maml:para>Flag to disable Active Active feature on virtual network gateway. </maml:para>
4909849105
</maml:description>
49099-
<command:parameterValue required="false" variableLength="false">Boolean</command:parameterValue>
49106+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
4910049107
</command:parameter>
4910149108
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
4910249109
<maml:name>InformationAction</maml:name>
@@ -49210,15 +49217,27 @@ $virtualNetwork | Set-AzureRmVirtualNetwork</dev:code>
4921049217
<maml:uri/>
4921149218
</dev:type>
4921249219
<dev:defaultValue></dev:defaultValue>
49220+
</command:parameter>
49221+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
49222+
<maml:name>EnableActiveActiveFeature</maml:name>
49223+
<maml:description>
49224+
<maml:para>Flag to enable Active Active feature on virtual network gateway. </maml:para>
49225+
</maml:description>
49226+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
49227+
<dev:type>
49228+
<maml:name>SwitchParameter</maml:name>
49229+
<maml:uri/>
49230+
</dev:type>
49231+
<dev:defaultValue></dev:defaultValue>
4921349232
</command:parameter>
49214-
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="named">
49215-
<maml:name>ActiveActive</maml:name>
49233+
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="false" position="named">
49234+
<maml:name>DisableActiveActiveFeature</maml:name>
4921649235
<maml:description>
49217-
<maml:para />
49236+
<maml:para>Flag to disable Active Active feature on virtual network gateway. </maml:para>
4921849237
</maml:description>
49219-
<command:parameterValue required="false" variableLength="false">Boolean</command:parameterValue>
49238+
<command:parameterValue required="false" variableLength="false">SwitchParameter</command:parameterValue>
4922049239
<dev:type>
49221-
<maml:name>Boolean</maml:name>
49240+
<maml:name>SwitchParameter</maml:name>
4922249241
<maml:uri/>
4922349242
</dev:type>
4922449243
<dev:defaultValue></dev:defaultValue>

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: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,13 @@ public class SetAzureVirtualNetworkGatewayCommand : VirtualNetworkGatewayBaseCmd
8282

8383
[Parameter(
8484
Mandatory = false,
85-
ValueFromPipelineByPropertyName = true,
86-
HelpMessage = "ActiveActive feature flag")]
87-
public bool ActiveActive { get; set; }
85+
HelpMessage = "Flag to enable Active Active feature on virtual network gateway")]
86+
public SwitchParameter EnableActiveActiveFeature { get; set; }
87+
88+
[Parameter(
89+
Mandatory = false,
90+
HelpMessage = "Flag to disable Active Active feature on virtual network gateway")]
91+
public SwitchParameter DisableActiveActiveFeature { get; set; }
8892

8993
public override void Execute()
9094
{
@@ -95,16 +99,29 @@ public override void Execute()
9599
throw new ArgumentException(Microsoft.Azure.Commands.Network.Properties.Resources.ResourceNotFound);
96100
}
97101

98-
this.VirtualNetworkGateway.ActiveActive = this.ActiveActive;
102+
if (this.EnableActiveActiveFeature.IsPresent && this.DisableActiveActiveFeature.IsPresent)
103+
{
104+
throw new ArgumentException("Both EnableActiveActiveFeature and DisableActiveActiveFeature Parameters can not be passed.");
105+
}
106+
107+
if (this.EnableActiveActiveFeature.IsPresent)
108+
{
109+
this.VirtualNetworkGateway.ActiveActive = true;
110+
}
111+
112+
if (this.DisableActiveActiveFeature.IsPresent)
113+
{
114+
this.VirtualNetworkGateway.ActiveActive = false;
115+
}
99116

100117
if (this.VirtualNetworkGateway.ActiveActive)
101118
{
102119
bool activeActiveSkuCriteria = !string.IsNullOrEmpty(this.GatewaySku) ? !this.GatewaySku.Equals(MNM.VirtualNetworkGatewaySkuTier.HighPerformance) : !this.VirtualNetworkGateway.Sku.Tier.Equals(MNM.VirtualNetworkGatewaySkuTier.HighPerformance);
103-
104-
if(activeActiveSkuCriteria)
120+
121+
if (activeActiveSkuCriteria)
105122
{
106123
throw new ArgumentException("Virtual Network Gateway Sku should be " + MNM.VirtualNetworkGatewaySkuTier.HighPerformance + " when Active-Active feature flag is set to True.");
107-
}
124+
}
108125
}
109126

110127
if (!string.IsNullOrEmpty(GatewaySku))
@@ -187,4 +204,4 @@ public override void Execute()
187204
WriteObject(getVirtualNetworkGateway);
188205
}
189206
}
190-
}
207+
}

0 commit comments

Comments
 (0)