Skip to content

Commit f6b2f51

Browse files
authored
[Network] - Add support for Managed IP based load balancer (#22902)
* [Network] - Add support for Managed IP based load balancer * Update help file and changelog * address comment
1 parent 587ed0f commit f6b2f51

File tree

6 files changed

+1843
-2
lines changed

6 files changed

+1843
-2
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,13 @@ public void TestNICBasedBackendPoolQueryInboundNatRulePortMapping()
104104
{
105105
TestRunner.RunTestScript("Test-NICBasedBackendPoolQueryInboundNatRulePortMapping");
106106
}
107+
108+
[Fact]
109+
[Trait(Category.AcceptanceType, Category.CheckIn)]
110+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
111+
public void TestManagedIpBasedLoadBalancerBackendPoolCreate()
112+
{
113+
TestRunner.RunTestScript("Test-ManagedIpBasedLoadBalancerBackendPoolCreate");
114+
}
107115
}
108116
}

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,4 +685,55 @@ function Test-NICBasedBackendPoolQueryInboundNatRulePortMapping
685685
# Cleanup
686686
Clean-ResourceGroup $rgname
687687
}
688+
}
689+
690+
<#
691+
.SYNOPSIS
692+
Tests
693+
#>
694+
function Test-ManagedIpBasedLoadBalancerBackendPoolCreate
695+
{
696+
697+
# Setup
698+
$rgname = Get-ResourceGroupName
699+
$vnetName = Get-ResourceName
700+
$subnetName = Get-ResourceName
701+
$publicIpName = Get-ResourceName
702+
$lbName = Get-ResourceName
703+
$frontendName = Get-ResourceName
704+
$backendAddressPoolName = Get-ResourceName
705+
$rglocation = Get-ProviderLocation ResourceManagement
706+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
707+
$location = Get-ProviderLocation $resourceTypeParent
708+
$backendAddressConfigName = "TestVNetRef"
709+
710+
$backendPool1 = Get-ResourceName
711+
$backendPool2 = Get-ResourceName
712+
713+
try
714+
{
715+
# Create the resource group
716+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
717+
718+
# Create the Virtual Network
719+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24
720+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
721+
722+
# Create Standard Azure load balancer
723+
$lb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -SKU Standard
724+
725+
## create by passing loadbalancer without Ips
726+
$create1 = $lb | New-AzLoadBalancerBackendAddressPool -Name $backendPool1 -SyncMode "Automatic" -VirtualNetworkId $vnet.Id
727+
728+
Assert-NotNull $create1
729+
730+
## create by Name without ip's
731+
$create2 = New-AzLoadBalancerBackendAddressPool -ResourceGroupName $rgname -LoadBalancerName $lbName -Name $backendPool2 -SyncMode "Automatic" -VirtualNetworkId $vnet.Id
732+
733+
Assert-NotNull $create2
734+
}
735+
finally {
736+
# Cleanup
737+
Clean-ResourceGroup $rgname
738+
}
688739
}

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.LoadBalancerBackendPoolTests/TestManagedIpBasedLoadBalancerBackendPoolCreate.json

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

src/Network/Network/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
--->
2020

2121
## Upcoming Release
22+
* Updated cmdlet `New-AzLoadBalancerBackendAddressPool` to support managed IP based backend
2223
* Added cmdlet `New-AzSaaSNetworkVirtualAppliance` for creating a NetworkVirtualAppliance of SaaS type.
2324

2425
## Version 6.2.0

src/Network/Network/LoadBalancer/NewAzureLoadBalancerBackendPool.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ public partial class NewAzureLoadBalancerBackendPool : NetworkBaseCmdlet
7373
[ValidateNotNullOrEmpty]
7474
public PSLoadBalancerBackendAddress[] LoadBalancerBackendAddress { get; set; }
7575

76+
[Parameter(
77+
Mandatory = false,
78+
HelpMessage = "Sync mode of the backend pool.")]
79+
[PSArgumentCompleter(
80+
"Automatic",
81+
"Manual"
82+
)]
83+
[ValidateNotNullOrEmpty]
84+
public string SyncMode { get; set; }
85+
86+
[Parameter(
87+
Mandatory = false,
88+
HelpMessage = "The virtual network associated with the backend pool.")]
89+
[ValidateNotNullOrEmpty]
90+
public string VirtualNetworkId { get; set; }
91+
7692
public override void Execute()
7793
{
7894

@@ -126,6 +142,20 @@ private void AddTunnelInterfacesToPool(BackendAddressPool backendAddressPool)
126142
}
127143
}
128144

145+
private void SetVnetIdAndSyncMode(BackendAddressPool backendAddressPool)
146+
{
147+
if (this.SyncMode != null)
148+
{
149+
if (this.VirtualNetworkId == null)
150+
{
151+
throw new ArgumentException("VirtualNetworkId must not be null when SyncMode is specified.");
152+
}
153+
154+
backendAddressPool.SyncMode = this.SyncMode;
155+
backendAddressPool.VirtualNetwork = new SubResource(this.VirtualNetworkId);
156+
}
157+
}
158+
129159
private PSBackendAddressPool CreatePsBackendPool()
130160
{
131161
var backendAddressPool = new BackendAddressPool();
@@ -142,6 +172,7 @@ private PSBackendAddressPool CreatePsBackendPool()
142172
}
143173
}
144174

175+
this.SetVnetIdAndSyncMode(backendAddressPool);
145176
this.AddTunnelInterfacesToPool(backendAddressPool);
146177
var loadBalancerBackendAddressPool = this.NetworkClient.NetworkManagementClient.LoadBalancerBackendAddressPools.CreateOrUpdate(this.ResourceGroupName, this.LoadBalancerName, this.Name, backendAddressPool);
147178
var loadBalancerBackendAddressPoolModel = NetworkResourceManagerProfile.Mapper.Map<PSBackendAddressPool>(loadBalancerBackendAddressPool);

src/Network/Network/help/New-AzLoadBalancerBackendAddressPool.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ Creates a backend address pool on a loadbalancer.
1616
```
1717
New-AzLoadBalancerBackendAddressPool -ResourceGroupName <String> -LoadBalancerName <String> -Name <String>
1818
[-TunnelInterface <PSTunnelInterface[]>] [-LoadBalancerBackendAddress <PSLoadBalancerBackendAddress[]>]
19-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
19+
[-SyncMode <String>] [-VirtualNetworkId <String>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
20+
[-Confirm] [<CommonParameters>]
2021
```
2122

2223
### CreateByParentObjectParameterSet
2324
```
2425
New-AzLoadBalancerBackendAddressPool -LoadBalancer <PSLoadBalancer> -Name <String>
2526
[-TunnelInterface <PSTunnelInterface[]>] [-LoadBalancerBackendAddress <PSLoadBalancerBackendAddress[]>]
26-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
27+
[-SyncMode <String>] [-VirtualNetworkId <String>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
28+
[-Confirm] [<CommonParameters>]
2729
```
2830

2931
## DESCRIPTION
@@ -161,6 +163,21 @@ Accept pipeline input: False
161163
Accept wildcard characters: False
162164
```
163165
166+
### -SyncMode
167+
Sync mode of the backend pool.
168+
169+
```yaml
170+
Type: System.String
171+
Parameter Sets: (All)
172+
Aliases:
173+
174+
Required: False
175+
Position: Named
176+
Default value: None
177+
Accept pipeline input: False
178+
Accept wildcard characters: False
179+
```
180+
164181
### -TunnelInterface
165182
Gateway Load Balancer provider configurations.
166183
@@ -176,6 +193,21 @@ Accept pipeline input: False
176193
Accept wildcard characters: False
177194
```
178195
196+
### -VirtualNetworkId
197+
The virtual network associated with the backend pool.
198+
199+
```yaml
200+
Type: System.String
201+
Parameter Sets: (All)
202+
Aliases:
203+
204+
Required: False
205+
Position: Named
206+
Default value: None
207+
Accept pipeline input: False
208+
Accept wildcard characters: False
209+
```
210+
179211
### -Confirm
180212
Prompts you for confirmation before running the cmdlet.
181213

0 commit comments

Comments
 (0)