Skip to content

Commit cff242c

Browse files
Validations for Snat private ranges and route server id - Azure Firewall and Azure Firewall Policy (Azure#22108)
* update to the snat command * clean up * adding validation for route server id on hub firewalls * scenario test for hub firewall with route server id * clean up * revert the bad changes * Test for empty private range with auto learn * test recordings
1 parent 1f1dc25 commit cff242c

File tree

7 files changed

+2344
-180
lines changed

7 files changed

+2344
-180
lines changed

src/Network/Network.Test/ScenarioTests/AzureFirewallPolicyTests.ps1

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1778,6 +1778,7 @@ function Test-AzureFirewallSnat {
17781778
$vnetName = Get-ResourceName
17791779
$privateRange = @("3.3.0.0/24", "98.0.0.0/8","10.227.16.0/20")
17801780
$privateRange2 = @("0.0.0.0/0", "66.92.0.0/16")
1781+
$emptyPrivateRange = @()
17811782

17821783
try {
17831784

@@ -1801,7 +1802,7 @@ function Test-AzureFirewallSnat {
18011802
Assert-AreEqualArray $privateRange $getAzureFirewallPolicy.Snat.PrivateRanges
18021803
Assert-AreEqual "Enabled" $getAzureFirewallPolicy.Snat.AutoLearnPrivateRanges
18031804

1804-
# Modify
1805+
# Modify
18051806
$snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2
18061807
# Set AzureFirewallPolicy
18071808
$azureFirewallPolicy.Snat = $snat
@@ -1811,6 +1812,13 @@ function Test-AzureFirewallSnat {
18111812
Assert-NotNull $policy.Snat
18121813
Assert-AreEqualArray $privateRange2 $policy.Snat.PrivateRanges
18131814
Assert-AreEqual "Disabled" $policy.Snat.AutoLearnPrivateRanges
1815+
1816+
# Modify
1817+
$snat = New-AzFirewallPolicySnat -AutoLearnPrivateRange
1818+
Assert-AreEqual $emptyPrivateRange $snat.PrivateRanges
1819+
Assert-NotNull $snat.PrivateRanges
1820+
Assert-AreEqual $snat.PrivateRanges.count 0
1821+
18141822
}
18151823
finally {
18161824
# Cleanup

src/Network/Network.Test/ScenarioTests/AzureFirewallTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,14 @@ public void TestAzureFirewallCRUDRouteServerId()
186186
TestRunner.RunTestScript("Test-AzureFirewallCRUDRouteServerId");
187187
}
188188

189+
[Fact]
190+
[Trait(Category.AcceptanceType, Category.CheckIn)]
191+
[Trait(Category.Owner, NrpTeamAlias.azurefirewall)]
192+
public void TestAzureFirewallCRUDRouteServerIdHub()
193+
{
194+
TestRunner.RunTestScript("Test-AzureFirewallCRUDRouteServerIdHub");
195+
}
196+
189197
[Fact(Skip = "Skipped due to LearnedIpPrefixes feature not available in most regions")]
190198
[Trait(Category.AcceptanceType, Category.CheckIn)]
191199
[Trait(Category.Owner, NrpTeamAlias.azurefirewall)]

src/Network/Network.Test/ScenarioTests/AzureFirewallTests.ps1

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,6 +2056,31 @@ function Test-AzureFirewallCRUDRouteServerId {
20562056
}
20572057
}
20582058

2059+
<#
2060+
.SYNOPSIS
2061+
Tests AzureFirewall RouteServerId on Hub Firewall
2062+
#>
2063+
function Test-AzureFirewallCRUDRouteServerIdHub {
2064+
# Setup
2065+
$rgname = Get-ResourceGroupName
2066+
$azureFirewallName = Get-ResourceName
2067+
$resourceTypeParent = "Microsoft.Network/AzureFirewalls"
2068+
$location = Get-ProviderLocation $resourceTypeParent
2069+
$skuName = "AZFW_Hub"
2070+
$skuTier = "Standard"
2071+
$routeServerId="/subscriptions/aeb5b02a-0f18-45a4-86d6-81808115cacf/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
2072+
2073+
try {
2074+
2075+
Assert-ThrowsContains { New-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname -Location $location -SkuName $skuName -SkuTier $skuTier -RouteServerId $routeServerId } "The Route Server is not supported on AZFW_Hub SKU Firewalls"
2076+
2077+
}
2078+
finally {
2079+
# Cleanup
2080+
Clean-ResourceGroup $rgname
2081+
}
2082+
}
2083+
20592084
<#
20602085
.SYNOPSIS
20612086
Tests Get Azure Firewall LearnedPrefixes

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.AzureFirewallPolicyTests/TestAzureFirewallSnat.json

Lines changed: 236 additions & 179 deletions
Large diffs are not rendered by default.

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.AzureFirewallTests/TestAzureFirewallCRUDRouteServerIdHub.json

Lines changed: 2056 additions & 0 deletions
Large diffs are not rendered by default.

src/Network/Network/AzureFirewall/NewAzureFirewallCommand.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,11 @@ private PSAzureFirewall CreateAzureFirewall()
313313
throw new ArgumentException("The list of public Ip addresses cannot be provided during the firewall creation");
314314
}
315315

316+
if(this.RouteServerId != null)
317+
{
318+
throw new ArgumentException("The Route Server is not supported on AZFW_Hub SKU Firewalls");
319+
}
320+
316321
firewall = new PSAzureFirewall()
317322
{
318323
Name = this.Name,

src/Network/Network/AzureFirewallPolicy/Snat/NewAzureFirewallPolicySNATCommand.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ public override void Execute()
3636
{
3737
base.Execute();
3838

39+
if(this.AutoLearnPrivateRange.IsPresent && this.PrivateRange == null)
40+
{
41+
this.PrivateRange = new string[] {};
42+
}
43+
3944
var firewallPolicySNAT = new PSAzureFirewallPolicySNAT
4045
{
4146
AutoLearnPrivateRanges = this.AutoLearnPrivateRange.IsPresent ? "Enabled" : "Disabled",

0 commit comments

Comments
 (0)