Skip to content

Commit 86ad901

Browse files
Merge branch 'release-network-2022-11-01' of https://github.com/Azure/azure-powershell into release-network-2022-11-01
2 parents 79caa9a + db25c22 commit 86ad901

File tree

87 files changed

+16933
-239
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+16933
-239
lines changed

.azure-pipelines/test-coverage.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,10 @@ jobs:
111111
pwsh: true
112112
targetType: inline
113113
script: |
114+
git checkout -b testcoverage-baseline
114115
$blDir = "./tools/TestFx/Coverage"
115116
$blCsv = Join-Path -Path $blDir -ChildPath "Baseline.csv"
116-
if (Test-Path -Path $blCsv) {
117-
Remove-Item -Path $blCsv -Force
118-
}
119-
120-
git checkout -b testcoverage-baseline
121-
Copy-Item -Path "$(Pipeline.Workspace)/artifacts/TestCoverageAnalysis/Results/Baseline.csv" -Destination $blDir
117+
Copy-Item -Path "$(Pipeline.Workspace)/artifacts/TestCoverageAnalysis/Results/Baseline.csv" -Destination $blDir -Force
122118
git config user.email "[email protected]"
123119
git config user.name "azure-powershell-bot"
124120
git add $blCsv

src/Accounts/Accounts/Utilities/CommandMappings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4261,6 +4261,7 @@
42614261
"New-AzOffice365PolicyProperty": {},
42624262
"Get-AzNetworkVirtualApplianceSku": {},
42634263
"New-AzVirtualApplianceSkuProperty": {},
4264+
"New-AzVirtualApplianceAdditionalNicProperty": {},
42644265
"New-AzCustomIpPrefix": {},
42654266
"Update-AzCustomIpPrefix": {},
42664267
"Get-AzCustomIpPrefix": {},

src/Network/Network.Management.Sdk/Generated/Generated/Models/NetworkVirtualAppliance.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public NetworkVirtualAppliance()
7373
/// to cloud-init and config blob.</param>
7474
/// <param name="etag">A unique read-only string that changes whenever
7575
/// the resource is updated.</param>
76-
public NetworkVirtualAppliance(string id = default(string), string name = default(string), string type = default(string), string location = default(string), IDictionary<string, string> tags = default(IDictionary<string, string>), VirtualApplianceSkuProperties nvaSku = default(VirtualApplianceSkuProperties), string addressPrefix = default(string), IList<string> bootStrapConfigurationBlobs = default(IList<string>), SubResource virtualHub = default(SubResource), IList<string> cloudInitConfigurationBlobs = default(IList<string>), string cloudInitConfiguration = default(string), long? virtualApplianceAsn = default(long?), string sshPublicKey = default(string), IList<VirtualApplianceNicProperties> virtualApplianceNics = default(IList<VirtualApplianceNicProperties>), IList<SubResource> virtualApplianceSites = default(IList<SubResource>), IList<SubResource> inboundSecurityRules = default(IList<SubResource>), string provisioningState = default(string), string deploymentType = default(string), DelegationProperties delegation = default(DelegationProperties), PartnerManagedResourceProperties partnerManagedResource = default(PartnerManagedResourceProperties), ManagedServiceIdentity identity = default(ManagedServiceIdentity), string etag = default(string))
76+
/// <param name="additionalNic">A unique read-only string that changes whenever
77+
/// the resource is updated.</param>
78+
public NetworkVirtualAppliance(string id = default(string), string name = default(string), string type = default(string), string location = default(string), IDictionary<string, string> tags = default(IDictionary<string, string>), VirtualApplianceSkuProperties nvaSku = default(VirtualApplianceSkuProperties), string addressPrefix = default(string), IList<string> bootStrapConfigurationBlobs = default(IList<string>), SubResource virtualHub = default(SubResource), IList<string> cloudInitConfigurationBlobs = default(IList<string>), string cloudInitConfiguration = default(string), long? virtualApplianceAsn = default(long?), string sshPublicKey = default(string), IList<VirtualApplianceNicProperties> virtualApplianceNics = default(IList<VirtualApplianceNicProperties>), IList<SubResource> virtualApplianceSites = default(IList<SubResource>), IList<SubResource> inboundSecurityRules = default(IList<SubResource>), string provisioningState = default(string), string deploymentType = default(string), DelegationProperties delegation = default(DelegationProperties), PartnerManagedResourceProperties partnerManagedResource = default(PartnerManagedResourceProperties), ManagedServiceIdentity identity = default(ManagedServiceIdentity), string etag = default(string), IList<VirtualApplianceAdditionalNicProperties> additionalNic = null)
7779
: base(id, name, type, location, tags)
7880
{
7981
NvaSku = nvaSku;
@@ -94,6 +96,7 @@ public NetworkVirtualAppliance()
9496
Identity = identity;
9597
Etag = etag;
9698
CustomInit();
99+
VirtualApplianceAdditionalNic = additionalNic;
97100
}
98101

99102
/// <summary>
@@ -208,6 +211,13 @@ public NetworkVirtualAppliance()
208211
[JsonProperty(PropertyName = "etag")]
209212
public string Etag { get; private set; }
210213

214+
/// <summary>
215+
/// List of Virtual Appliance Additional Network Interfaces.
216+
/// </summary>
217+
[JsonProperty(PropertyName = "properties.virtualApplianceAdditionalNics")]
218+
public IList<VirtualApplianceAdditionalNicProperties> VirtualApplianceAdditionalNic { get; set; }
219+
220+
211221
/// <summary>
212222
/// Validate the object.
213223
/// </summary>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// <auto-generated>
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
// Licensed under the MIT License. See License.txt in the project root for
4+
// license information.
5+
//
6+
// Code generated by Microsoft (R) AutoRest Code Generator.
7+
// Changes may cause incorrect behavior and will be lost if the code is
8+
// regenerated.
9+
// </auto-generated>
10+
11+
namespace Microsoft.Azure.Management.Network.Models
12+
{
13+
using Newtonsoft.Json;
14+
using System.Linq;
15+
16+
/// <summary>
17+
/// Network Virtual Appliance Additional Nic Properties
18+
/// </summary>
19+
/// <remarks>
20+
/// Network Virtual Appliance Additional NIC properties.
21+
/// </remarks>
22+
public partial class VirtualApplianceAdditionalNicProperties
23+
{
24+
/// <summary>
25+
/// Initializes a new instance of the
26+
/// VirtualApplianceAdditionalNicProperties class.
27+
/// </summary>
28+
public VirtualApplianceAdditionalNicProperties()
29+
{
30+
CustomInit();
31+
}
32+
33+
/// <summary>
34+
/// Initializes a new instance of the
35+
/// VirtualApplianceAdditionalNicProperties class.
36+
/// </summary>
37+
/// <param name="name">Customer Name for additional nic</param>
38+
/// <param name="hasPublicIp">Customer Intent for Public Ip on
39+
/// additional nic</param>
40+
public VirtualApplianceAdditionalNicProperties(string name = default(string), bool? hasPublicIp = default(bool?))
41+
{
42+
Name = name;
43+
HasPublicIp = hasPublicIp;
44+
CustomInit();
45+
}
46+
47+
/// <summary>
48+
/// An initialization method that performs custom operations like setting defaults
49+
/// </summary>
50+
partial void CustomInit();
51+
52+
/// <summary>
53+
/// Gets or sets customer Name for additional nic
54+
/// </summary>
55+
[JsonProperty(PropertyName = "name")]
56+
public string Name { get; set; }
57+
58+
/// <summary>
59+
/// Gets or sets customer Intent for Public Ip on additional nic
60+
/// </summary>
61+
[JsonProperty(PropertyName = "hasPublicIp")]
62+
public bool? HasPublicIp { get; set; }
63+
64+
}
65+
}

src/Network/Network.Test/Network.Test.csproj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<PackageReference Include="Microsoft.Azure.Management.OperationalInsights" Version="0.25.0-preview" />
2424
<PackageReference Include="Microsoft.Azure.Management.ManagedServiceIdentity" Version="0.10.0-preview" />
2525
<PackageReference Include="Microsoft.Azure.Management.Storage" Version="25.0.0" />
26+
<PackageReference Include="Microsoft.Azure.Management.Network" Version="26.0.0" />
2627
</ItemGroup>
2728

2829
<ItemGroup>
@@ -49,9 +50,6 @@
4950
<ItemGroup>
5051
<Folder Include="SessionRecords\Commands.Network.Test.ScenarioTests.NetworkManagerTests\" />
5152
</ItemGroup>
52-
53-
<ItemGroup>
54-
<ProjectReference Include="..\Network.Management.Sdk\Network.Management.Sdk.csproj" />
55-
</ItemGroup>
5653

5754
</Project>
55+

src/Network/Network.Test/NrpTeamAlias.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,8 @@ class NrpTeamAlias
8585
// Windows Azure NRP dev team
8686
public const string wanrpdev = "wanrpdev";
8787
public const string wanrpdev_subset1 = "wanrpdev_subset1";
88+
89+
//NVA Network Virtual Appliance Team
90+
public const string nvaengdev = "nvaeng";
8891
}
8992
}

src/Network/Network.Test/ScenarioTests/ApplicationGatewayTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ public void TestApplicationGatewayWithFirewallPolicy()
156156
TestRunner.RunTestScript(string.Format("Test-ApplicationGatewayWithFirewallPolicy -baseDir '{0}'", AppDomain.CurrentDomain.BaseDirectory));
157157
}
158158

159+
[Fact]
160+
[Trait(Category.AcceptanceType, Category.CheckIn)]
161+
[Trait(Category.Owner, NrpTeamAlias.nvadev_subset1)]
162+
public void TestApplicationGatewayWithFirewallPolicyWithLogScrubbing()
163+
{
164+
TestRunner.RunTestScript(string.Format("Test-ApplicationGatewayFirewallPolicyWithLogScrubbing -baseDir '{0}'", AppDomain.CurrentDomain.BaseDirectory));
165+
}
166+
159167
[Fact]
160168
[Trait(Category.AcceptanceType, Category.CheckIn)]
161169
[Trait(Category.Owner, NrpTeamAlias.nvadev_subset1)]
@@ -237,6 +245,13 @@ public void TestApplicationGatewayFirewallPolicyWithCustomRules()
237245
TestRunner.RunTestScript("Test-ApplicationGatewayFirewallPolicyWithCustomRules");
238246
}
239247

248+
[Fact]
249+
[Trait(Category.AcceptanceType, Category.CheckIn)]
250+
[Trait(Category.Owner, NrpTeamAlias.nvadev_subset1)]
251+
public void TestApplicationGatewayFirewallPolicyWithRateLimitRule()
252+
{
253+
TestRunner.RunTestScript("Test-ApplicationGatewayFirewallPolicyWithRateLimitRule");
254+
}
240255

241256
[Fact]
242257
[Trait(Category.AcceptanceType, Category.CheckIn)]

src/Network/Network.Test/ScenarioTests/ApplicationGatewayTests.ps1

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3477,6 +3477,55 @@ function Test-ApplicationGatewayFirewallPolicyWithPerRuleExclusions
34773477
}
34783478
}
34793479

3480+
<#
3481+
.SYNOPSIS
3482+
Application gateway v2 waf policy with log scrubbing
3483+
#>
3484+
function Test-ApplicationGatewayFirewallPolicyWithLogScrubbing
3485+
{
3486+
# Setup
3487+
$location = Get-ProviderLocation "Microsoft.Network/applicationGateways" "West US 2"
3488+
3489+
$rgname = Get-ResourceGroupName
3490+
$wafPolicyName = Get-ResourceName
3491+
3492+
try
3493+
{
3494+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
3495+
3496+
# WAF Policy and Custom Rule
3497+
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestHeaders -Selector Content-Length
3498+
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GreaterThan -MatchValue 1000 -Transform Lowercase -NegationCondition $False
3499+
$logScrubbingRule1 = New-AzApplicationGatewayFirewallPolicyLogScrubbingRule -State Enabled -MatchVariable RequestArgNames -SelectorMatchOperator Equals -Selector test
3500+
$logScrubbingRule2 = New-AzApplicationGatewayFirewallPolicyLogScrubbingRule -State Enabled -MatchVariable RequestIPAddress -SelectorMatchOperator EqualsAny
3501+
$logScrubbingRuleConfig = New-AzApplicationGatewayFirewallPolicyLogScrubbingConfiguration -State Enabled -ScrubbingRule $logScrubbingRule1, $logScrubbingRule2
3502+
$policySettings = New-AzApplicationGatewayFirewallPolicySetting -Mode Prevention -State Enabled -MaxFileUploadInMb 4000 -MaxRequestBodySizeInKb 2000 -LogScrubbing $logScrubbingRuleConfig
3503+
$managedRuleSet = New-AzApplicationGatewayFirewallPolicyManagedRuleSet -RuleSetType "OWASP" -RuleSetVersion "3.2"
3504+
$managedRule = New-AzApplicationGatewayFirewallPolicyManagedRule -ManagedRuleSet $managedRuleSet
3505+
New-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname -Location $location -ManagedRule $managedRule -PolicySetting $policySettings
3506+
3507+
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname
3508+
3509+
# Check firewall policy
3510+
Assert-AreEqual $policy.PolicySettings.FileUploadLimitInMb $policySettings.FileUploadLimitInMb
3511+
Assert-AreEqual $policy.PolicySettings.MaxRequestBodySizeInKb $policySettings.MaxRequestBodySizeInKb
3512+
Assert-AreEqual $policy.PolicySettings.RequestBodyCheck $policySettings.RequestBodyCheck
3513+
Assert-AreEqual $policy.PolicySettings.Mode $policySettings.Mode
3514+
Assert-AreEqual $policy.PolicySettings.State $policySettings.State
3515+
Assert-AreEqual $policy.PolicySettings.LogScrubbing.ScrubbingRules.Count 2
3516+
Assert-AreEqual $policy.PolicySettings.LogScrubbing.ScrubbingRules[0].State $policySettings.LogScrubbing.ScrubbingRules[0].State
3517+
Assert-AreEqual $policy.PolicySettings.LogScrubbing.ScrubbingRules[0].MatchVariable $policySettings.LogScrubbing.ScrubbingRules[0].MatchVariable
3518+
Assert-AreEqual $policy.PolicySettings.LogScrubbing.ScrubbingRules[0].SelectorMatchOperator $policySettings.LogScrubbing.ScrubbingRules[0].SelectorMatchOperator
3519+
Assert-AreEqual $policy.PolicySettings.LogScrubbing.ScrubbingRules[0].Selector $policySettings.LogScrubbing.ScrubbingRules[0].Selector
3520+
3521+
}
3522+
finally
3523+
{
3524+
# Cleanup
3525+
Clean-ResourceGroup $rgname
3526+
}
3527+
}
3528+
34803529
<#
34813530
.SYNOPSIS
34823531
This case tests the per-listener HostNames feature.
@@ -4245,6 +4294,62 @@ function Test-ApplicationGatewayFirewallPolicyWithCustomRules
42454294
}
42464295
}
42474296

4297+
function Test-ApplicationGatewayFirewallPolicyWithRateLimitRule
4298+
{
4299+
# Setup
4300+
$location = Get-ProviderLocation "Microsoft.Network/applicationGateways" "West US 2"
4301+
$rgname = Get-ResourceGroupName
4302+
$wafPolicyName = "wafPolicy1"
4303+
4304+
try {
4305+
4306+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
4307+
4308+
# WAF Policy with rate limiting rule custom Rule
4309+
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestHeaders -Selector Malicious-Header
4310+
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator Any -NegationCondition $False
4311+
$groupbyVar = New-AzApplicationGatewayFirewallCustomRuleGroupByVariable -VariableName ClientAddr
4312+
$groupbyUserSes = New-AzApplicationGatewayFirewallCustomRuleGroupByUserSession -GroupByVariable $groupbyVar
4313+
$customRule = New-AzApplicationGatewayFirewallCustomRule -Name example -Priority 2 -RateLimitDuration OneMin -RateLimitThreshold 10 -RuleType RateLimitRule -MatchCondition $condition -GroupByUserSession $groupbyUserSes -Action Block
4314+
4315+
$policySettings = New-AzApplicationGatewayFirewallPolicySetting -Mode Prevention -State Enabled -MaxFileUploadInMb 70 -MaxRequestBodySizeInKb 70
4316+
$managedRuleSet = New-AzApplicationGatewayFirewallPolicyManagedRuleSet -RuleSetType "OWASP" -RuleSetVersion "3.2"
4317+
$managedRule = New-AzApplicationGatewayFirewallPolicyManagedRule -ManagedRuleSet $managedRuleSet
4318+
New-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname -Location $location -ManagedRule $managedRule -PolicySetting $policySettings -CustomRule $customRule
4319+
4320+
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname
4321+
4322+
# Check WAF policy
4323+
Assert-AreEqual $policy.CustomRules[0].Name $customRule.Name
4324+
Assert-AreEqual $policy.CustomRules[0].RuleType $customRule.RuleType
4325+
Assert-AreEqual $policy.CustomRules[0].Action $customRule.Action
4326+
Assert-AreEqual $policy.CustomRules[0].Priority $customRule.Priority
4327+
Assert-AreEqual $policy.CustomRules[0].RateLimitDuration $customRule.RateLimitDuration
4328+
Assert-AreEqual $policy.CustomRules[0].RateLimitThreshold $customRule.RateLimitThreshold
4329+
Assert-AreEqual $policy.CustomRules[0].State "Enabled"
4330+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].OperatorProperty $customRule.MatchConditions[0].OperatorProperty
4331+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].NegationConditon $customRule.MatchConditions[0].NegationConditon
4332+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].MatchVariables[0].VariableName $customRule.MatchConditions[0].MatchVariables[0].VariableName
4333+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].MatchVariables[0].Selector $customRule.MatchConditions[0].MatchVariables[0].Selector
4334+
Assert-AreEqual $policy.CustomRules[0].GroupByUserSession[0].GroupByVariables[0].VariableName $customRule.GroupByUserSession[0].GroupByVariables[0].VariableName
4335+
Assert-AreEqual $policy.PolicySettings.FileUploadLimitInMb $policySettings.FileUploadLimitInMb
4336+
Assert-AreEqual $policy.PolicySettings.MaxRequestBodySizeInKb $policySettings.MaxRequestBodySizeInKb
4337+
Assert-AreEqual $policy.PolicySettings.RequestBodyCheck $policySettings.RequestBodyCheck
4338+
Assert-AreEqual $policy.PolicySettings.Mode $policySettings.Mode
4339+
Assert-AreEqual $policy.PolicySettings.State $policySettings.State
4340+
4341+
$policy.CustomRules[0].State = "Disabled"
4342+
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
4343+
$policy1 = Get-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname
4344+
Assert-AreEqual $policy1.CustomRules[0].State "Disabled"
4345+
}
4346+
finally
4347+
{
4348+
# Cleanup
4349+
Clean-ResourceGroup $rgname
4350+
}
4351+
}
4352+
42484353
function Test-ApplicationGatewayFirewallPolicyWithUppercaseTransform
42494354
{
42504355
# Setup

src/Network/Network.Test/ScenarioTests/AzureFirewallPolicyTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,5 +180,13 @@ public void TestAzureFirewallSnat()
180180
{
181181
TestRunner.RunTestScript("Test-AzureFirewallSnat");
182182
}
183+
184+
[Fact]
185+
[Trait(Category.AcceptanceType, Category.CheckIn)]
186+
[Trait(Category.Owner, NrpTeamAlias.azurefirewall)]
187+
public void TestAzureFirewallPolicyApplicationRuleCustomHttpHeader()
188+
{
189+
TestRunner.RunTestScript("Test-AzureFirewallPolicyApplicationRuleCustomHttpHeader");
190+
}
183191
}
184192
}

0 commit comments

Comments
 (0)