Skip to content

Commit b996748

Browse files
matyang22matyang222
andauthored
Gateway Loadbalancer (#14683)
* new branch * fix * fix * fix * fix * fix * try restart json * replace file Co-authored-by: matyang222 <[email protected]>
1 parent 31029da commit b996748

File tree

36 files changed

+6329
-78
lines changed

36 files changed

+6329
-78
lines changed

src/Accounts/Accounts/AzureRmAlias/Mappings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,6 +1494,7 @@
14941494
"Set-AzLoadBalancerBackendAddressPool": "Set-AzureRmLoadBalancerBackendAddressPool",
14951495
"New-AzLoadBalancerBackendAddressPool": "New-AzureRmLoadBalancerBackendAddressPool",
14961496
"Remove-AzLoadBalancerBackendAddressPool": "Remove-AzureRmLoadBalancerBackendAddressPool",
1497+
"New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig": "New-AzureRmLoadBalancerBackendAddressPoolTunnelInterfaceConfig",
14971498
"New-AzLoadBalancerBackendAddressConfig": "New-AzureRmLoadBalancerBackendAddressConfig",
14981499
"Get-AzLoadBalancerBackendAddressPoolConfig": "Get-AzureRmLoadBalancerBackendAddressPoolConfig",
14991500
"Add-AzLoadBalancerBackendAddressPoolConfig": "Add-AzureRmLoadBalancerBackendAddressPoolConfig",

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,5 +248,29 @@ public void TestCreateSubresourcesOnEmptyLoadBalancer()
248248
{
249249
TestRunner.RunTestScript("Test-CreateSubresourcesOnEmptyLoadBalancer");
250250
}
251+
252+
[Fact]
253+
[Trait(Category.AcceptanceType, Category.CheckIn)]
254+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
255+
public void TestGatewayLoadBalancerProviderOnePool()
256+
{
257+
TestRunner.RunTestScript("Test-GatewayLoadBalancer-ProviderOnePool");
258+
}
259+
260+
[Fact]
261+
[Trait(Category.AcceptanceType, Category.CheckIn)]
262+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
263+
public void TestGatewayLoadBalancerProviderTwoPool()
264+
{
265+
TestRunner.RunTestScript("Test-GatewayLoadBalancer-ProviderTwoPool");
266+
}
267+
268+
[Fact]
269+
[Trait(Category.AcceptanceType, Category.CheckIn)]
270+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
271+
public void TestGatewayLoadBalancerConsumerLb()
272+
{
273+
TestRunner.RunTestScript("Test-GatewayLoadBalancer-ConsumerLb");
274+
}
251275
}
252276
}

src/Network/Network.Test/ScenarioTests/LoadBalancerTests.ps1

Lines changed: 206 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2199,6 +2199,211 @@ function Test-LoadBalancerCRUD-InternalBasicSku
21992199
}
22002200
}
22012201

2202+
<#
2203+
.SYNOPSIS
2204+
Tests Gateway LoadBalancer Provider with one pool.
2205+
#>
2206+
function Test-GatewayLoadBalancer-ProviderOnePool
2207+
{
2208+
# Setup
2209+
$rgname = Get-ResourceGroupName
2210+
$vnetName = Get-ResourceName
2211+
$subnetName = Get-ResourceName
2212+
$lbName = Get-ResourceName
2213+
$frontendName = Get-ResourceName
2214+
$backendAddressPoolName = Get-ResourceName
2215+
$probeName = Get-ResourceName
2216+
$lbruleName = Get-ResourceName
2217+
$rglocation = "eastus2euap"
2218+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
2219+
$location = "eastus2euap"
2220+
2221+
try
2222+
{
2223+
# Create the resource group
2224+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
2225+
2226+
# Create the Virtual Network
2227+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 172.20.0.0/24
2228+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 172.20.0.0/16 -Subnet $subnet
2229+
2230+
# Create LoadBalancer
2231+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -Subnet $vnet.Subnets[0]
2232+
$tunnelInterface1 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig -Protocol Vxlan -Type Internal -Port 2000 -Identifier 800
2233+
$tunnelInterface2 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig -Protocol Vxlan -Type External -Port 2001 -Identifier 801
2234+
$backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName -TunnelInterface $tunnelInterface1, $tunnelInterface2
2235+
$probe = New-AzLoadBalancerProbeConfig -Name $probeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
2236+
$lbrule = New-AzLoadBalancerRuleConfig -Name $lbruleName -FrontendIPConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -Protocol All -FrontendPort 0 -BackendPort 0 -LoadDistribution SourceIP -DisableOutboundSNAT
2237+
$actualLb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -LoadBalancingRule $lbrule -Sku Gateway
2238+
2239+
$expectedLb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
2240+
2241+
# Verification
2242+
Assert-AreEqual $expectedLb.ResourceGroupName $actualLb.ResourceGroupName
2243+
Assert-AreEqual $expectedLb.Name $actualLb.Name
2244+
Assert-AreEqual $expectedLb.Location $actualLb.Location
2245+
Assert-AreEqualObjectProperties $expectedLb.Sku $actualLb.Sku
2246+
Assert-AreEqual "Succeeded" $expectedLb.ProvisioningState
2247+
Assert-AreEqual 1 @($expectedLb.FrontendIPConfigurations).Count
2248+
2249+
Assert-AreEqual $frontendName $expectedLb.FrontendIPConfigurations[0].Name
2250+
Assert-AreEqual $vnet.Subnets[0].Id $expectedLb.FrontendIPConfigurations[0].Subnet.Id
2251+
Assert-NotNull $expectedLb.FrontendIPConfigurations[0].PrivateIpAddress
2252+
2253+
Assert-AreEqual $backendAddressPoolName $expectedLb.BackendAddressPools[0].Name
2254+
2255+
Assert-AreEqual 1 @($expectedLb.BackendAddressPools).Count
2256+
Assert-AreEqual 2 @($expectedLb.BackendAddressPools[0].TunnelInterfaces).Count
2257+
2258+
Assert-AreEqual $tunnelInterface1.Protocol $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Protocol
2259+
Assert-AreEqual $tunnelInterface1.Type $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Type
2260+
Assert-AreEqual $tunnelInterface1.Port $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Port
2261+
Assert-AreEqual $tunnelInterface1.Identifier $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Identifier
2262+
2263+
Assert-AreEqual $tunnelInterface2.Protocol $expectedLb.BackendAddressPools[0].TunnelInterfaces[1].Protocol
2264+
Assert-AreEqual $tunnelInterface2.Type $expectedLb.BackendAddressPools[0].TunnelInterfaces[1].Type
2265+
Assert-AreEqual $tunnelInterface2.Port $expectedLb.BackendAddressPools[0].TunnelInterfaces[1].Port
2266+
Assert-AreEqual $tunnelInterface2.Identifier $expectedLb.BackendAddressPools[0].TunnelInterfaces[1].Identifier
2267+
}
2268+
finally
2269+
{
2270+
# Cleanup
2271+
Clean-ResourceGroup $rgname
2272+
}
2273+
}
2274+
2275+
<#
2276+
.SYNOPSIS
2277+
Tests Gateway LoadBalancer Provider with two pools.
2278+
#>
2279+
function Test-GatewayLoadBalancer-ProviderTwoPool
2280+
{
2281+
# Setup
2282+
$rgname = Get-ResourceGroupName
2283+
$vnetName = Get-ResourceName
2284+
$subnetName = Get-ResourceName
2285+
$lbName = Get-ResourceName
2286+
$frontendName = Get-ResourceName
2287+
$backendAddressPoolName1 = Get-ResourceName
2288+
$backendAddressPoolName2 = Get-ResourceName
2289+
$probeName = Get-ResourceName
2290+
$lbruleName = Get-ResourceName
2291+
$rglocation = "eastus2euap"
2292+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
2293+
$location = "eastus2euap"
2294+
2295+
try
2296+
{
2297+
# Create the resource group
2298+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
2299+
2300+
# Create the Virtual Network
2301+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 172.20.0.0/24
2302+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 172.20.0.0/16 -Subnet $subnet
2303+
2304+
# Create LoadBalancer
2305+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -Subnet $vnet.Subnets[0]
2306+
$tunnelInterface1 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig -Protocol Vxlan -Type Internal -Port 2000 -Identifier 800
2307+
$tunnelInterface2 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig -Protocol Vxlan -Type External -Port 2001 -Identifier 801
2308+
$backendAddressPool1 = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName1 -TunnelInterface $tunnelInterface1
2309+
$backendAddressPool2 = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName2 -TunnelInterface $tunnelInterface2
2310+
$probe = New-AzLoadBalancerProbeConfig -Name $probeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
2311+
$lbrule = New-AzLoadBalancerRuleConfig -Name $lbruleName -FrontendIPConfiguration $frontend -BackendAddressPool $backendAddressPool1,$backendAddressPool2 -Probe $probe -Protocol All -FrontendPort 0 -BackendPort 0 -LoadDistribution SourceIP -DisableOutboundSNAT
2312+
2313+
$actualLb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -Probe $probe -LoadBalancingRule $lbrule -Sku Gateway -BackendAddressPool $backendAddressPool1,$backendAddressPool2
2314+
2315+
$expectedLb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
2316+
2317+
# Verification
2318+
Assert-AreEqual $expectedLb.ResourceGroupName $actualLb.ResourceGroupName
2319+
Assert-AreEqual $expectedLb.Name $actualLb.Name
2320+
Assert-AreEqual $expectedLb.Location $actualLb.Location
2321+
Assert-AreEqualObjectProperties $expectedLb.Sku $actualLb.Sku
2322+
Assert-AreEqual "Succeeded" $expectedLb.ProvisioningState
2323+
Assert-AreEqual 1 @($expectedLb.FrontendIPConfigurations).Count
2324+
2325+
Assert-AreEqual $frontendName $expectedLb.FrontendIPConfigurations[0].Name
2326+
Assert-AreEqual $vnet.Subnets[0].Id $expectedLb.FrontendIPConfigurations[0].Subnet.Id
2327+
Assert-NotNull $expectedLb.FrontendIPConfigurations[0].PrivateIpAddress
2328+
2329+
Assert-AreEqual 2 @($expectedLb.BackendAddressPools).Count
2330+
Assert-AreEqual 1 @($expectedLb.BackendAddressPools[0].TunnelInterfaces).Count
2331+
Assert-AreEqual $tunnelInterface1.Protocol $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Protocol
2332+
Assert-AreEqual $tunnelInterface1.Type $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Type
2333+
Assert-AreEqual $tunnelInterface1.Port $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Port
2334+
Assert-AreEqual $tunnelInterface1.Identifier $expectedLb.BackendAddressPools[0].TunnelInterfaces[0].Identifier
2335+
2336+
Assert-AreEqual 1 @($expectedLb.BackendAddressPools[1].TunnelInterfaces).Count
2337+
Assert-AreEqual $tunnelInterface2.Protocol $expectedLb.BackendAddressPools[1].TunnelInterfaces[0].Protocol
2338+
Assert-AreEqual $tunnelInterface2.Type $expectedLb.BackendAddressPools[1].TunnelInterfaces[0].Type
2339+
Assert-AreEqual $tunnelInterface2.Port $expectedLb.BackendAddressPools[1].TunnelInterfaces[0].Port
2340+
Assert-AreEqual $tunnelInterface2.Identifier $expectedLb.BackendAddressPools[1].TunnelInterfaces[0].Identifier
2341+
}
2342+
finally
2343+
{
2344+
# Cleanup
2345+
Clean-ResourceGroup $rgname
2346+
}
2347+
}
2348+
2349+
<#
2350+
.SYNOPSIS
2351+
Tests Gateway LoadBalancer Consumer ref Provider.
2352+
#>
2353+
function Test-GatewayLoadBalancer-ConsumerLb
2354+
{
2355+
# Setup Provider
2356+
$rgname = Get-ResourceGroupName
2357+
$vnetProviderName = Get-ResourceName
2358+
$subnetProviderName = Get-ResourceName
2359+
$lbProviderName = Get-ResourceName
2360+
$frontendProviderName = Get-ResourceName
2361+
2362+
# Setup Provider
2363+
$pipConusmerName = Get-ResourceName
2364+
$subnetConsumerName = Get-ResourceName
2365+
$lbConsumerName = Get-ResourceName
2366+
$frontendConsumerName = Get-ResourceName
2367+
$domainNameLabel = Get-ResourceName
2368+
2369+
$rglocation = Get-ProviderLocation ResourceManagement
2370+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
2371+
$location = Get-ProviderLocation $resourceTypeParent
2372+
2373+
try
2374+
{
2375+
# Create resource group
2376+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
2377+
2378+
# Create Provider Virtual Network
2379+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetProviderName -AddressPrefix 10.0.1.0/24
2380+
$vnet = New-AzVirtualNetwork -Name $vnetProviderName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
2381+
2382+
# Create Provider LoadBalancer
2383+
$frontendProvider = New-AzLoadBalancerFrontendIpConfig -Name $frontendProviderName -Subnet $vnet.Subnets[0]
2384+
$lbProvider = New-AzLoadBalancer -Name $lbProviderName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontendProvider -Sku Gateway
2385+
2386+
# Create Consumer publicip
2387+
$publicipConsumer = New-AzPublicIpAddress -ResourceGroupName $rgname -Name $pipConusmerName -location $location -AllocationMethod Static -DomainNameLabel $domainNameLabel -Sku Standard
2388+
2389+
# Create Consumer LoadBalancer
2390+
$lbConsumer = New-AzLoadBalancer -Name $lbConsumerName -ResourceGroupName $rgname -Location $location -Sku Standard
2391+
Add-AzLoadBalancerFrontendIpConfig -GatewayLoadBalancerId $frontendProvider.Id -LoadBalancer $lbConsumer -Name $frontendConsumerName
2392+
$lbConsumer = Set-AzLoadBalancer -LoadBalancer $lbConsumer
2393+
2394+
$expectedLbConsumer = Get-AzLoadBalancer -Name $lbConsumerName -ResourceGroupName $rgname
2395+
2396+
# Verification
2397+
Assert-NotNull $expectedLbConsumer.frontendIpConfigurations
2398+
Assert-NotNull $expectedLbConsumer.frontendIpConfigurations[0]
2399+
}
2400+
finally
2401+
{
2402+
# Cleanup
2403+
Clean-ResourceGroup $rgname
2404+
}
2405+
}
2406+
22022407
<#
22032408
.SYNOPSIS
22042409
Tests creating a public Load balancer with standard sku.
@@ -2650,7 +2855,7 @@ function Test-CreateSubresourcesOnEmptyLoadBalancer
26502855

26512856
$lb = Add-AzLoadBalancerBackendAddressPoolConfig -Name $poolName -LoadBalancer $lb
26522857
$lb = Add-AzLoadBalancerProbeConfig -Name $probeName -LoadBalancer $lb -Port 2000 -IntervalInSeconds 60 -ProbeCount 3 -Protocol Tcp
2653-
$lb = Add-AzLoadBalancerRuleConfig -Name $ruleName -LoadBalancer $lb -FrontendIpConfiguration $ipConfig -Protocol Tcp -FrontendPort 1024 -BackendPort 2048
2858+
$lb = Add-AzLoadBalancerRuleConfig -Name $ruleName -LoadBalancer $lb -FrontendIPConfigurationId $lb.FrontendIPConfigurations[0].Id -BackendAddressPoolId $lb.BackendAddressPools[0].Id -ProbeId $lb.Probes[0].Id -Protocol Tcp -FrontendPort 82 -BackendPort 83 -IdleTimeoutInMinutes 15 -LoadDistribution SourceIP
26542859
$lb = Add-AzLoadBalancerInboundNatRuleConfig -Name $natRuleName -LoadBalancer $lb -FrontendIpConfiguration $ipConfig -FrontendPort 128 -BackendPort 256
26552860

26562861
# Update load balancer

src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,69 @@ function Test-NetworkInterfaceCRUDUsingId
274274
}
275275
}
276276

277+
<#
278+
.SYNOPSIS
279+
Tests creating new simple public networkinterface.
280+
#>
281+
function Test-NetworkInterface-GatewayLoadBalancerConsumer
282+
{
283+
# Setup
284+
$rgname = Get-ResourceGroupName
285+
286+
$vnetProviderName = Get-ResourceName
287+
$subnetProviderName = Get-ResourceName
288+
$lbProviderName = Get-ResourceName
289+
$frontendProviderName = Get-ResourceName
290+
291+
$vnetConsumerName = Get-ResourceName
292+
$subnetConsumerName = Get-ResourceName
293+
$publicIpConsumerName = Get-ResourceName
294+
$nicConsumerName = Get-ResourceName
295+
$ipconfigConsumerName = Get-ResourceName
296+
$domainNameLabel = Get-ResourceName
297+
$rglocation = Get-ProviderLocation ResourceManagement
298+
$resourceTypeParent = "Microsoft.Network/networkInterfaces"
299+
$location = Get-ProviderLocation $resourceTypeParent
300+
301+
try
302+
{
303+
# Create the resource group
304+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" }
305+
306+
# Create Provider Virtual Network
307+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetProviderName -AddressPrefix 10.0.1.0/24
308+
$vnet = New-AzVirtualNetwork -Name $vnetProviderName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
309+
310+
# Create Provider LoadBalancer
311+
$frontendProvider = New-AzLoadBalancerFrontendIpConfig -Name $frontendProviderName -Subnet $vnet.Subnets[0]
312+
$lbProvider = New-AzLoadBalancer -Name $lbProviderName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontendProvider -Sku Gateway
313+
314+
# Create Consumer Virtual Network
315+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetConsumerName -AddressPrefix 10.0.1.0/24
316+
$vnet = New-AzVirtualNetwork -Name $vnetConsumerName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
317+
318+
# Create Consumer publicip
319+
$publicipConsumer = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpConsumerName -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel
320+
321+
# Create the ipconfiguration
322+
$ipconfig1 = New-AzNetworkInterfaceIpConfig -Name $ipconfigConsumerName -Subnet $vnet.Subnets[0] -PublicIpAddress $publicipConsumer -GatewayLoadBalancerId $frontendProvider.Id
323+
324+
# Create NetworkInterface
325+
$nicConsumer = New-AzNetworkInterface -Name $nicConsumerName -ResourceGroupName $rgname -Location $location -IpConfiguration $ipconfig1 -Tag @{ testtag = "testval" }
326+
327+
# Create NetworkInterface
328+
$expectedNicConsumer = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname
329+
330+
# Verification
331+
Assert-AreEqual $frontendProvider.Id $expectedNicConsumer.ipconfigurations[0].GatewayLoadBalancer
332+
}
333+
finally
334+
{
335+
# Cleanup
336+
Clean-ResourceGroup $rgname
337+
}
338+
}
339+
277340
<#
278341
.SYNOPSIS
279342
Tests creating new simple virtualNetwork with static allocation.

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.LoadBalancerTests/TestGatewayLoadBalancerConsumerLb.json

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

0 commit comments

Comments
 (0)