Skip to content

Commit ab960b1

Browse files
Add new cmdlet to query port mapping and update existing inboundNatRule cmdlets (#16743) (#17068)
* update inboundNatRule cmds, update inboundNatRule, backendAddres PSObject, create queryPortMapping cmd * add UTs and create new PSNatRulePortMapping for backendAddress * fixed UTs * update inboundNatRule md files * add md file for query port mapping * update changelog.md * small change to resolve comment * update json file Co-authored-by: Feifei-Z <[email protected]>
1 parent c1c3ecf commit ab960b1

25 files changed

+15054
-1380
lines changed

src/Network/Network.Test/ScenarioTests/LoadBalancerBackendPoolTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,21 @@ public void TestLoadBalancerBackendPoolCRUDWithAddTunnelInterface()
8888
{
8989
TestRunner.RunTestScript("Test-LoadBalancerBackendPoolCRUDWithAddTunnelInterface");
9090
}
91+
92+
[Fact]
93+
[Trait(Category.AcceptanceType, Category.CheckIn)]
94+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
95+
public void TestIPBasedBackendPoolQueryInboundNatRulePortMapping()
96+
{
97+
TestRunner.RunTestScript("Test-IPBasedBackendPoolQueryInboundNatRulePortMapping");
98+
}
99+
100+
[Fact]
101+
[Trait(Category.AcceptanceType, Category.CheckIn)]
102+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
103+
public void TestNICBasedBackendPoolQueryInboundNatRulePortMapping()
104+
{
105+
TestRunner.RunTestScript("Test-NICBasedBackendPoolQueryInboundNatRulePortMapping");
106+
}
91107
}
92108
}

src/Network/Network.Test/ScenarioTests/LoadBalancerBackendPoolTests.ps1

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,4 +533,156 @@ function Test-LoadBalancerBackendAddressConfig
533533
# Cleanup
534534
Clean-ResourceGroup $rgname
535535
}
536+
}
537+
538+
<#
539+
.SYNOPSIS
540+
Tests
541+
#>
542+
function Test-IPBasedBackendPoolQueryInboundNatRulePortMapping
543+
{
544+
545+
# Setup
546+
$rgname = Get-ResourceGroupName
547+
$rglocation = "eastus2euap"
548+
549+
$subnetName = Get-ResourceName
550+
$vnetName = Get-ResourceName
551+
$location = "eastus2euap"
552+
553+
$publicIpName = Get-ResourceName
554+
$domainNameLabel = Get-ResourceName
555+
556+
$frontendName = Get-ResourceName
557+
$backendAddressPoolName = Get-ResourceName
558+
$inboundNatRuleV2Name = Get-ResourceName
559+
$lbName = Get-ResourceName
560+
561+
$testIpAddress1 = "10.0.0.5"
562+
$testIpAddress2 = "10.0.0.6"
563+
564+
$backendAddressConfigName1 = Get-ResourceName
565+
$backendAddressConfigName2 = Get-ResourceName
566+
567+
try
568+
{
569+
# Create the regional resource group
570+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
571+
572+
# Create the Virtual Network
573+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24
574+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
575+
576+
# Create the publicip
577+
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -DomainNameLabel $domainNameLabel -SKU Standard
578+
579+
# Create regional loadbalancer
580+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -PublicIpAddress $publicip
581+
$backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName
582+
$lb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -SKU Standard -BackendAddressPool $backendAddressPool
583+
$lb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
584+
585+
$ip1 = New-AzLoadBalancerBackendAddressConfig -IpAddress $testIpAddress1 -Name $backendAddressConfigName1 -VirtualNetworkId $vnet.Id
586+
$ip2 = New-AzLoadBalancerBackendAddressConfig -IpAddress $testIpAddress2 -Name $backendAddressConfigName2 -VirtualNetworkId $vnet.Id
587+
$ips = @($ip1, $ip2)
588+
$lb | Set-AzLoadBalancerBackendAddressPool -LoadBalancerBackendAddress $ips -Name $backendAddressPoolName
589+
$lb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
590+
$lb | Add-AzLoadBalancerInboundNatRuleConfig -Name $inboundNatRuleV2Name -FrontendIPConfiguration $frontend -Protocol Tcp -BackendPort 3390 -IdleTimeoutInMinutes 15 -EnableFloatingIP -FrontendPortRangeStart 3390 -FrontendPortRangeEnd 4001 -BackendAddressPool $lb.BackendAddressPools[0]
591+
$lb | Set-AzLoadBalancer
592+
593+
# Query port mapping
594+
$portMapping1 = Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping -ResourceGroupName $rgname -LoadBalancerName $lbName -Name $backendAddressPoolName -IpAddress $testIpAddress1
595+
Assert-AreEqual $portMapping1.inboundNatRuleName $lb.InboundNatRules[0].Name
596+
Assert-AreEqual $portMapping1.protocol "Tcp"
597+
Assert-AreEqual $portMapping1.frontendPort 3390
598+
Assert-AreEqual $portMapping1.BackendPort 3390
599+
600+
$portMapping2 = Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping -ResourceGroupName $rgname -LoadBalancerName $lbName -Name $backendAddressPoolName -IpAddress $testIpAddress2
601+
Assert-AreEqual $portMapping2.inboundNatRuleName $lb.InboundNatRules[0].Name
602+
Assert-AreEqual $portMapping2.protocol "Tcp"
603+
Assert-AreEqual $portMapping2.frontendPort 3391
604+
Assert-AreEqual $portMapping2.BackendPort 3390
605+
}
606+
finally {
607+
# Cleanup
608+
Clean-ResourceGroup $rgname
609+
}
610+
}
611+
612+
<#
613+
.SYNOPSIS
614+
Tests
615+
#>
616+
function Test-NICBasedBackendPoolQueryInboundNatRulePortMapping
617+
{
618+
619+
# Setup
620+
$rgname = Get-ResourceGroupName
621+
$rglocation = "eastus2euap"
622+
623+
$vnetName = Get-ResourceName
624+
$subnetName = Get-ResourceName
625+
$location = "eastus2euap"
626+
627+
$publicIpName = Get-ResourceName
628+
$domainNameLabel = Get-ResourceName
629+
630+
$frontendName = Get-ResourceName
631+
$backendAddressPoolName = Get-ResourceName
632+
$inboundNatRuleV2Name = Get-ResourceName
633+
$lbName = Get-ResourceName
634+
635+
$nicname1 = Get-ResourceName
636+
$nicname2 = Get-ResourceName
637+
$ipconfigname1 = Get-ResourceName
638+
$ipconfigname2 = Get-ResourceName
639+
640+
try
641+
{
642+
# Create the regional resource group
643+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
644+
645+
# Create the Virtual Network
646+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24
647+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
648+
649+
# Create the publicip
650+
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -DomainNameLabel $domainNameLabel -SKU Standard
651+
652+
# Create regional loadbalancer
653+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -PublicIpAddress $publicip
654+
$backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName
655+
$lb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -SKU Standard -BackendAddressPool $backendAddressPool
656+
$lb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
657+
658+
# Create 2 network interfaces and accociate to loadbalancer
659+
$nic1 = New-AzNetworkInterface -Name $nicname1 -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -IpConfigurationName $ipconfigname1
660+
$nic2 = New-AzNetworkInterface -Name $nicname2 -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -IpConfigurationName $ipconfigname2
661+
$nic1.IpConfigurations[0].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools[0]);
662+
$nic2.IpConfigurations[0].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools[0]);
663+
$nic1 = $nic1 | Set-AzNetworkInterface
664+
$nic2 = $nic2 | Set-AzNetworkInterface
665+
666+
# Create InboundNatRuleV2
667+
$lb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
668+
$lb | Add-AzLoadBalancerInboundNatRuleConfig -Name $inboundNatRuleV2Name -FrontendIPConfiguration $frontend -Protocol Tcp -BackendPort 3390 -IdleTimeoutInMinutes 15 -EnableFloatingIP -FrontendPortRangeStart 3390 -FrontendPortRangeEnd 4001 -BackendAddressPool $lb.BackendAddressPools[0]
669+
$lb | Set-AzLoadBalancer
670+
671+
# Query port mapping
672+
$portMapping1 = Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping -ResourceGroupName $rgname -LoadBalancerName $lbName -Name $backendAddressPoolName -NetworkInterfaceIpConfigurationId $nic1.IpConfigurations[0].Id
673+
Assert-AreEqual $portMapping1.inboundNatRuleName $inboundNatRuleV2Name
674+
Assert-AreEqual $portMapping1.protocol "Tcp"
675+
Assert-AreEqual $portMapping1.frontendPort 3390
676+
Assert-AreEqual $portMapping1.BackendPort 3390
677+
678+
$portMapping2 = Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping -ResourceGroupName $rgname -LoadBalancerName $lbName -Name $backendAddressPoolName -NetworkInterfaceIpConfigurationId $nic2.IpConfigurations[0].Id
679+
Assert-AreEqual $portMapping2.inboundNatRuleName $inboundNatRuleV2Name
680+
Assert-AreEqual $portMapping2.protocol "Tcp"
681+
Assert-AreEqual $portMapping2.frontendPort 3391
682+
Assert-AreEqual $portMapping2.BackendPort 3390
683+
}
684+
finally {
685+
# Cleanup
686+
Clean-ResourceGroup $rgname
687+
}
536688
}

src/Network/Network.Test/ScenarioTests/LoadBalancerTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,22 @@ public void TestLoadBalancerChildResource()
9797
TestRunner.RunTestScript("Test-LoadBalancerChildResource");
9898
}
9999

100+
[Fact]
101+
[Trait(Category.AcceptanceType, Category.CheckIn)]
102+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
103+
public void TestLoadBalancerInboundNatRuleV2()
104+
{
105+
TestRunner.RunTestScript("Test-LoadBalancerInboundNatRuleV2");
106+
}
107+
108+
[Fact]
109+
[Trait(Category.AcceptanceType, Category.CheckIn)]
110+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
111+
public void TestLoadBalancerInboundNatRuleV2InternalLB()
112+
{
113+
TestRunner.RunTestScript("Test-LoadBalancerInboundNatRuleV2-InternalLB");
114+
}
115+
100116
[Fact]
101117
[Trait(Category.AcceptanceType, Category.CheckIn)]
102118
[Trait(Category.Owner, NrpTeamAlias.slbdev)]

0 commit comments

Comments
 (0)