Skip to content

Commit d7173ff

Browse files
Adding VirtualRouterAutoScaleConfiguration for Route Server (#26908)
* starting changes for ars autoscale * update, get, and create work * saving test progress * updating help docs * UT is recorded * addressing PR comments * updating the session record --------- Co-authored-by: Yan Xu <[email protected]>
1 parent 91fe3f0 commit d7173ff

File tree

11 files changed

+1771
-1495
lines changed

11 files changed

+1771
-1495
lines changed

src/Network/Network.Test/ScenarioTests/RouteServerTests.ps1

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ function Test-RouteServerCRUD
2626
$skuType = "Standard"
2727
$tier = "Regional"
2828
$hubRoutingPreference = "VpnGateway"
29+
$minCapacity = 6
30+
$defaultCapacity = 2
2931

3032
try
3133
{
@@ -42,6 +44,9 @@ function Test-RouteServerCRUD
4244
$publicIp = New-AzPublicIpAddress -Name $publicIpAddressName -ResourceGroupName $rgName -AllocationMethod Static -Location $rglocation -Sku Standard -Tier Regional
4345
$publicIp = Get-AzPublicIpAddress -Name $publicIpAddressName -ResourceGroupName $rgName
4446

47+
# Create the autoscale configuration
48+
$autoscaleConfiguration = New-AzVirtualRouterAutoScaleConfiguration -MinCapacity $minCapacity
49+
4550
# Create route server
4651
$actualvr = New-AzRouteServer -ResourceGroupName $rgname -location $rglocation -RouteServerName $routeServerName -HostedSubnet $hostedsubnet.Id -PublicIpAddress $publicIp -HubRoutingPreference $hubRoutingPreference -AllowBranchToBranchTraffic
4752
$expectedvr = Get-AzRouteServer -ResourceGroupName $rgname -RouteServerName $routeServerName
@@ -50,9 +55,10 @@ function Test-RouteServerCRUD
5055
Assert-AreEqual $expectedvr.Location $actualvr.Location
5156
Assert-AreEqual $expectedvr.HubRoutingPreference $actualvr.HubRoutingPreference
5257
Assert-AreEqual $expectedvr.AllowBranchToBranchTraffic $actualvr.AllowBranchToBranchTraffic
58+
Assert-AreEqual $defaultCapacity $actualvr.VirtualRouterAutoScaleConfiguration.MinCapacity
5359

5460
# Update route server
55-
$actualvr = Update-AzRouteServer -ResourceGroupName $rgname -RouteServerName $routeServerName -HubRoutingPreference "ASPath"
61+
$actualvr = Update-AzRouteServer -ResourceGroupName $rgname -RouteServerName $routeServerName -HubRoutingPreference "ASPath" -VirtualRouterAutoScaleConfiguration $autoscaleConfiguration
5662

5763
# List route servers
5864
$list = Get-AzRouteServer -ResourceGroupName $rgname
@@ -62,6 +68,8 @@ function Test-RouteServerCRUD
6268
Assert-AreEqual $list[0].Location $actualvr.Location
6369
Assert-AreEqual $list[0].HubRoutingPreference $actualvr.HubRoutingPreference
6470
Assert-AreEqual $list[0].AllowBranchToBranchTraffic $actualvr.AllowBranchToBranchTraffic
71+
Assert-AreEqual $list[0].VirtualRouterAutoScaleConfiguration.MinCapacity $actualvr.VirtualRouterAutoScaleConfiguration.MinCapacity
72+
Assert-AreEqual $list[0].VirtualRouterAutoScaleConfiguration.MinCapacity $minCapacity
6573

6674
# Delete VR
6775
$deletevr = Remove-AzRouteServer -ResourceGroupName $rgname -RouteServerName $routeServerName -PassThru -Force

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.RouteServerTests/TestRouteServerCRUD.json

Lines changed: 1637 additions & 1476 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 `New-AzRouteServer`, `Get-AzRouteServer`, and `Update-AzRouteServer` to include VirtualRouterAutoScaleConfiguration.
2223
* Onboarded `Microsoft.HeathDataAIServices/deidServices` to private link cmdlets
2324
* Upgraded nuget package to signed package.
2425
* Updated `Remove-AzNetworkWatcherFlowLog` command to return boolean value

src/Network/Network/Generated/Models/PSRouteServer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public PSRouteServer(PSVirtualHub virtualHub)
5454
this.AllowBranchToBranchTraffic = virtualHub.AllowBranchToBranchTraffic;
5555
this.PublicIpAddress = ipconfig.PublicIPAddress.Id;
5656
this.HubRoutingPreference = virtualHub.HubRoutingPreference;
57+
this.VirtualRouterAutoScaleConfiguration = virtualHub.VirtualRouterAutoScaleConfiguration;
5758
}
5859

5960
[Ps1Xml(Target = ViewControl.Table)]
@@ -68,6 +69,7 @@ public PSRouteServer(PSVirtualHub virtualHub)
6869
public string PublicIpAddress { get; set; }
6970
[Ps1Xml(Target = ViewControl.Table)]
7071
public string HubRoutingPreference { get; set; }
72+
public PSVirtualRouterAutoScaleConfiguration VirtualRouterAutoScaleConfiguration { get; set; }
7173

7274
[JsonIgnore]
7375
public string PeeringsText

src/Network/Network/Properties/Resources.Designer.cs

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Network/Network/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,9 @@
384384
<data name="InvalidName" xml:space="preserve">
385385
<value>Field Name {0} contains invalid character.</value>
386386
</data>
387+
<data name="RouteServerToUpdateNotFound" xml:space="preserve">
388+
<value>The Route Server to update could not be found.</value>
389+
</data>
387390
<data name="VirtualHubToUpdateNotFound" xml:space="preserve">
388391
<value>The VirtualHub to update could not be found.</value>
389392
</data>

src/Network/Network/RouteServer/NewAzureRMRouteServerCommand.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ public partial class NewAzureRmRouteServer : RouteServerBaseCmdlet
9393
[PSDefaultValue(Value=false)]
9494
public SwitchParameter AllowBranchToBranchTraffic { get; set; }
9595

96+
[Parameter(
97+
Mandatory = false,
98+
HelpMessage = "Autoscale configuration for route server.")]
99+
public PSVirtualRouterAutoScaleConfiguration VirtualRouterAutoScaleConfiguration { get; set; }
100+
96101
public override void Execute()
97102
{
98103
base.Execute();
@@ -133,7 +138,8 @@ public override void Execute()
133138
{
134139
ResourceGroupName = this.ResourceGroupName,
135140
Name = this.RouteServerName,
136-
Location = this.Location
141+
Location = this.Location,
142+
VirtualRouterAutoScaleConfiguration = this.VirtualRouterAutoScaleConfiguration
137143
};
138144

139145
if (string.IsNullOrWhiteSpace(this.HubRoutingPreference))

src/Network/Network/RouteServer/UpdateAzureRMRouteServerCommand.cs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ public partial class UpdateAzureRmRouteServer : RouteServerBaseCmdlet
8383
IgnoreCase = true)]
8484
public string HubRoutingPreference { get; set; }
8585

86+
[Parameter(
87+
Mandatory = false,
88+
HelpMessage = "Autoscale configuration for route server.")]
89+
public PSVirtualRouterAutoScaleConfiguration VirtualRouterAutoScaleConfiguration { get; set; }
90+
8691
public override void Execute()
8792
{
8893
base.Execute();
@@ -94,29 +99,35 @@ public override void Execute()
9499
this.RouteServerName = resourceInfo.ResourceName;
95100
}
96101

97-
var virtualHub = this.NetworkClient.NetworkManagementClient.VirtualHubs.Get(ResourceGroupName, RouteServerName);
102+
var routeServer = this.NetworkClient.NetworkManagementClient.VirtualHubs.Get(ResourceGroupName, RouteServerName);
103+
PSVirtualHub routeServerToUpdate = this.ToPsVirtualHub(routeServer) ?? throw new PSArgumentException(Properties.Resources.RouteServerToUpdateNotFound);
98104

99105
if (this.AllowBranchToBranchTraffic.HasValue)
100106
{
101-
virtualHub.AllowBranchToBranchTraffic = this.AllowBranchToBranchTraffic.Value;
107+
routeServerToUpdate.AllowBranchToBranchTraffic = this.AllowBranchToBranchTraffic.Value;
102108
}
103109

104110
if (!string.IsNullOrWhiteSpace(this.HubRoutingPreference))
105111
{
106-
virtualHub.HubRoutingPreference = this.HubRoutingPreference;
112+
routeServerToUpdate.HubRoutingPreference = this.HubRoutingPreference;
113+
}
114+
115+
if (this.VirtualRouterAutoScaleConfiguration != null)
116+
{
117+
routeServerToUpdate.VirtualRouterAutoScaleConfiguration = this.VirtualRouterAutoScaleConfiguration;
107118
}
108119

109-
this.NetworkClient.NetworkManagementClient.VirtualHubs.CreateOrUpdate(this.ResourceGroupName, this.RouteServerName, virtualHub);
120+
var routeServerModel = NetworkResourceManagerProfile.Mapper.Map<MNM.VirtualHub>(routeServerToUpdate);
121+
this.NetworkClient.NetworkManagementClient.VirtualHubs.CreateOrUpdate(this.ResourceGroupName, this.RouteServerName, routeServerModel);
110122

111-
var psVirtualHub = NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualHub>(virtualHub);
112-
psVirtualHub.ResourceGroupName = this.ResourceGroupName;
113-
psVirtualHub.Tag = TagsConversionHelper.CreateTagHashtable(virtualHub.Tags);
114-
AddBgpConnectionsToPSVirtualHub(psVirtualHub, ResourceGroupName, RouteServerName);
115-
AddIpConfigurtaionToPSVirtualHub(psVirtualHub, this.ResourceGroupName, RouteServerName);
123+
routeServerToUpdate.ResourceGroupName = this.ResourceGroupName;
124+
routeServerToUpdate.Tag = TagsConversionHelper.CreateTagHashtable(routeServer.Tags);
125+
AddBgpConnectionsToPSVirtualHub(routeServerToUpdate, ResourceGroupName, RouteServerName);
126+
AddIpConfigurtaionToPSVirtualHub(routeServerToUpdate, this.ResourceGroupName, RouteServerName);
116127

117-
var routeServerModel = new PSRouteServer(psVirtualHub);
118-
routeServerModel.Tag = TagsConversionHelper.CreateTagHashtable(virtualHub.Tags);
119-
WriteObject(routeServerModel, true);
128+
var routeServerPSModel = new PSRouteServer(routeServerToUpdate);
129+
routeServerPSModel.Tag = TagsConversionHelper.CreateTagHashtable(routeServer.Tags);
130+
WriteObject(routeServerPSModel, true);
120131
}
121132
}
122133
}

src/Network/Network/VirtualRouter/RouteServerBaseCmdlet.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
using Microsoft.Azure.Management.Network.Models;
33
using CNM = Microsoft.Azure.Commands.Network.Models;
44
using System.Collections.Generic;
5+
using Microsoft.Azure.Commands.Network.Models;
6+
using System;
7+
using Microsoft.Azure.Commands.ResourceManager.Common.Tags;
58

69
namespace Microsoft.Azure.Commands.Network
710
{
@@ -37,5 +40,14 @@ public void AddIpConfigurtaionToPSVirtualHub(CNM.PSVirtualHub virtualHubModel,
3740
virtualHubModel.IpConfigurations = new List<CNM.PSHubIpConfiguration>();
3841
virtualHubModel.IpConfigurations.Add(ipconfig);
3942
}
43+
44+
public PSVirtualHub ToPsVirtualHub(Management.Network.Models.VirtualHub virtualHub)
45+
{
46+
var psVirtualHub = NetworkResourceManagerProfile.Mapper.Map<PSVirtualHub>(virtualHub);
47+
48+
psVirtualHub.Tag = TagsConversionHelper.CreateTagHashtable(virtualHub.Tags);
49+
50+
return psVirtualHub;
51+
}
4052
}
4153
}

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

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@ Creates an Azure RouteServer.
1515
```
1616
New-AzRouteServer -ResourceGroupName <String> -RouteServerName <String> -HostedSubnet <String>
1717
[-PublicIpAddress <PSPublicIpAddress>] -Location <String> [-Tag <Hashtable>] [-Force] [-AsJob]
18-
[-HubRoutingPreference <String>] [-AllowBranchToBranchTraffic] [-DefaultProfile <IAzureContextContainer>]
19-
[-WhatIf] [-Confirm] [<CommonParameters>]
18+
[-HubRoutingPreference <String>] [-AllowBranchToBranchTraffic]
19+
[-VirtualRouterAutoScaleConfiguration <PSVirtualRouterAutoScaleConfiguration>]
20+
[-DefaultProfile <IAzureContextContainer>] [-ProgressAction <ActionPreference>] [-WhatIf] [-Confirm]
21+
[<CommonParameters>]
2022
```
2123

2224
## DESCRIPTION
2325
The **New-AzRouteServer** cmdlet creates an Azure RouteServer
2426

2527
## EXAMPLES
2628

27-
### Example 1: Create a new router server
29+
### Example 1
2830
```powershell
2931
New-AzResourceGroup -Name myResourceGroup -Location eastus
3032
@@ -35,6 +37,23 @@ $publicIpAddress = New-AzPublicIpAddress -Name myRouteServerIP -ResourceGroupNam
3537
3638
New-AzRouteServer -RouteServerName myRouteServer -ResourceGroupName myResourceGroup -Location eastus -HostedSubnet $subnetId -PublicIpAddress $publicIpAddress
3739
```
40+
The above will create a resource group "myResourceGroup", a Virtual Network with a RouteServerSubnet, a Public IP Address, and a Route Server in East US in that resource group in Azure. The Route Server will be created with the default settings.
41+
42+
### Example 2
43+
```powershell
44+
New-AzResourceGroup -Name myResourceGroup -Location eastus
45+
46+
$subnet = New-AzVirtualNetworkSubnetConfig -Name RouteServerSubnet -AddressPrefix 10.0.0.0/24
47+
$vnet = New-AzVirtualNetwork -Name myVNet -ResourceGroupName myResourceGroup -Location eastus -AddressPrefix 10.0.0.0/16 -Subnet $subnet
48+
$subnetId = (Get-AzVirtualNetworkSubnetConfig -Name RouteServerSubnet -VirtualNetwork $vnet).Id
49+
$publicIpAddress = New-AzPublicIpAddress -Name myRouteServerIP -ResourceGroupName myResourceGroup -AllocationMethod Static -Location eastus -Sku Standard -Tier Regional
50+
51+
$autoscale = New-AzVirtualRouterAutoScaleConfiguration -MinCapacity 3
52+
New-AzRouteServer -RouteServerName myRouteServer -ResourceGroupName myResourceGroup -Location eastus -HostedSubnet $subnetId -PublicIpAddress $publicIpAddress -VirtualRouterAutoScaleConfiguration $autoscale
53+
```
54+
The above will create a resource group "myResourceGroup", a Virtual Network with a RouteServerSubnet, a Public IP Address, and a Route Server in East US in that resource group in Azure.
55+
56+
This example is similar to Example 2, but the Route Server will be created with a minCapacity of 3 meaning that it will have 3 Routing Infrastructure Units.
3857

3958
## PARAMETERS
4059

@@ -204,6 +223,21 @@ Accept pipeline input: True (ByPropertyName)
204223
Accept wildcard characters: False
205224
```
206225
226+
### -VirtualRouterAutoScaleConfiguration
227+
Autoscale configuration for route server.
228+
229+
```yaml
230+
Type: Microsoft.Azure.Commands.Network.Models.PSVirtualRouterAutoScaleConfiguration
231+
Parameter Sets: (All)
232+
Aliases:
233+
234+
Required: False
235+
Position: Named
236+
Default value: None
237+
Accept pipeline input: False
238+
Accept wildcard characters: False
239+
```
240+
207241
### -Confirm
208242
Prompts you for confirmation before running the cmdlet.
209243

0 commit comments

Comments
 (0)