Skip to content

Commit 3ffc41e

Browse files
phrazfiphoMikhailTryakhov
authored andcommitted
Set Standard SKU as defaults for LB and IP creates (#21709)
Co-authored-by: Mikhail <[email protected]>
1 parent 9790495 commit 3ffc41e

File tree

9 files changed

+5005
-12
lines changed

9 files changed

+5005
-12
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,14 @@ public void TestSetLoadBalancerCRUDPublicStandardSku()
217217
TestRunner.RunTestScript("Test-LoadBalancerCRUD-PublicStandardSku");
218218
}
219219

220+
[Fact]
221+
[Trait(Category.AcceptanceType, Category.CheckIn)]
222+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
223+
public void TestSetLoadBalancerCRUDPublicStandardSkuAsDefault()
224+
{
225+
TestRunner.RunTestScript("Test-LoadBalancerCRUD-PublicStandardSkuDefault");
226+
}
227+
220228
[Fact]
221229
[Trait(Category.AcceptanceType, Category.CheckIn)]
222230
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
@@ -241,6 +249,14 @@ public void TestSetLoadBalancerCRUDInternalStandardSku()
241249
TestRunner.RunTestScript("Test-LoadBalancerCRUD-InternalStandardSku");
242250
}
243251

252+
[Fact]
253+
[Trait(Category.AcceptanceType, Category.CheckIn)]
254+
[Trait(Category.Owner, NrpTeamAlias.slbdev)]
255+
public void TestSetLoadBalancerCRUDInternalStandardSkuAsDefault()
256+
{
257+
TestRunner.RunTestScript("Test-LoadBalancerCRUD-InternalStandardSkuDefault");
258+
}
259+
244260
[Fact]
245261
[Trait(Category.AcceptanceType, Category.CheckIn)]
246262
[Trait(Category.Owner, NrpTeamAlias.slbdev)]

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

Lines changed: 187 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2759,6 +2759,101 @@ function Test-LoadBalancerCRUD-PublicStandardSku
27592759
}
27602760
}
27612761

2762+
<#
2763+
.SYNOPSIS
2764+
Tests creating a public Load balancer with standard sku as default.
2765+
#>
2766+
function Test-LoadBalancerCRUD-PublicStandardSkuDefault
2767+
{
2768+
# Setup
2769+
$rgname = Get-ResourceGroupName
2770+
$vnetName = Get-ResourceName
2771+
$subnetName = Get-ResourceName
2772+
$publicIpName = Get-ResourceName
2773+
$domainNameLabel = Get-ResourceName
2774+
$lbName = Get-ResourceName
2775+
$frontendName = Get-ResourceName
2776+
$backendAddressPoolName = Get-ResourceName
2777+
$probeName = Get-ResourceName
2778+
$inboundNatRuleName = Get-ResourceName
2779+
$lbruleName = Get-ResourceName
2780+
$rglocation = Get-ProviderLocation ResourceManagement
2781+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
2782+
$location = Get-ProviderLocation $resourceTypeParent
2783+
2784+
try
2785+
{
2786+
# Create the resource group
2787+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
2788+
2789+
# Create the Virtual Network
2790+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24
2791+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
2792+
2793+
# Create the publicip
2794+
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -DomainNameLabel $domainNameLabel -Sku Standard
2795+
2796+
# Create LoadBalancer
2797+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -PublicIpAddress $publicip
2798+
$backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName
2799+
$probe = New-AzLoadBalancerProbeConfig -Name $probeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2 -ProbeThreshold 2
2800+
$inboundNatRule = New-AzLoadBalancerInboundNatRuleConfig -Name $inboundNatRuleName -FrontendIPConfiguration $frontend -Protocol Tcp -FrontendPort 3389 -BackendPort 3389 -IdleTimeoutInMinutes 15 -EnableFloatingIP
2801+
$lbrule = New-AzLoadBalancerRuleConfig -Name $lbruleName -FrontendIPConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -Protocol Tcp -FrontendPort 80 -BackendPort 80 -IdleTimeoutInMinutes 15 -EnableFloatingIP -LoadDistribution SourceIP -DisableOutboundSNAT
2802+
$actualLb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -InboundNatRule $inboundNatRule -LoadBalancingRule $lbrule
2803+
2804+
$expectedLb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
2805+
2806+
# Verification
2807+
Assert-AreEqual $expectedLb.ResourceGroupName $actualLb.ResourceGroupName
2808+
Assert-AreEqual $expectedLb.Name $actualLb.Name
2809+
Assert-AreEqual $expectedLb.Location $actualLb.Location
2810+
Assert-AreEqualObjectProperties $expectedLb.Sku $actualLb.Sku
2811+
Assert-AreEqual "Succeeded" $expectedLb.ProvisioningState
2812+
Assert-NotNull $expectedLb.ResourceGuid
2813+
Assert-AreEqual 1 @($expectedLb.FrontendIPConfigurations).Count
2814+
2815+
Assert-AreEqual $frontendName $expectedLb.FrontendIPConfigurations[0].Name
2816+
Assert-AreEqual $publicip.Id $expectedLb.FrontendIPConfigurations[0].PublicIpAddress.Id
2817+
Assert-Null $expectedLb.FrontendIPConfigurations[0].PrivateIpAddress
2818+
2819+
Assert-AreEqual $backendAddressPoolName $expectedLb.BackendAddressPools[0].Name
2820+
2821+
Assert-AreEqual $probeName $expectedLb.Probes[0].Name
2822+
Assert-AreEqual $probe.RequestPath $expectedLb.Probes[0].RequestPath
2823+
Assert-AreEqual $probe.ProbeThreshold $expectedLb.Probes[0].ProbeThreshold
2824+
2825+
Assert-AreEqual $inboundNatRuleName $expectedLb.InboundNatRules[0].Name
2826+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Id $expectedLb.InboundNatRules[0].FrontendIPConfiguration.Id
2827+
2828+
Assert-AreEqual $lbruleName $expectedLb.LoadBalancingRules[0].Name
2829+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Id $expectedLb.LoadBalancingRules[0].FrontendIPConfiguration.Id
2830+
Assert-AreEqual $expectedLb.BackendAddressPools[0].Id $expectedLb.LoadBalancingRules[0].BackendAddressPool.Id
2831+
2832+
# List
2833+
$list = Get-AzLoadBalancer -ResourceGroupName $rgname
2834+
Assert-AreEqual 1 @($list).Count
2835+
Assert-AreEqual $expectedLb.Etag $list[0].Etag
2836+
Assert-AreEqualObjectProperties $expectedLb.Sku $list[0].Sku
2837+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Etag $list[0].FrontendIPConfigurations[0].Etag
2838+
Assert-AreEqual $expectedLb.BackendAddressPools[0].Etag $list[0].BackendAddressPools[0].Etag
2839+
Assert-AreEqual $expectedLb.InboundNatRules[0].Etag $list[0].InboundNatRules[0].Etag
2840+
Assert-AreEqual $expectedLb.Probes[0].Etag $list[0].Probes[0].Etag
2841+
Assert-AreEqual $expectedLb.LoadBalancingRules[0].Etag $list[0].LoadBalancingRules[0].Etag
2842+
2843+
# Delete
2844+
$deleteLb = Remove-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -PassThru -Force
2845+
Assert-AreEqual true $deleteLb
2846+
2847+
$list = Get-AzLoadBalancer -ResourceGroupName $rgname
2848+
Assert-AreEqual 0 @($list).Count
2849+
}
2850+
finally
2851+
{
2852+
# Cleanup
2853+
Clean-ResourceGroup $rgname
2854+
}
2855+
}
2856+
27622857
<#
27632858
.SYNOPSIS
27642859
Tests creating a public Load balancer with standard sku with ip prefix.
@@ -2969,7 +3064,7 @@ function Test-LoadBalancerCRUD-PublicStandardSkuGlobalTier
29693064

29703065
<#
29713066
.SYNOPSIS
2972-
Tests creating an internal Load balancer with basic sku.
3067+
Tests creating an internal Load balancer with standard sku.
29733068
#>
29743069
function Test-LoadBalancerCRUD-InternalStandardSku
29753070
{
@@ -3058,6 +3153,97 @@ function Test-LoadBalancerCRUD-InternalStandardSku
30583153
}
30593154
}
30603155

3156+
<#
3157+
.SYNOPSIS
3158+
Tests creating an internal Load balancer with standard sku as default.
3159+
#>
3160+
function Test-LoadBalancerCRUD-InternalStandardSkuDefault
3161+
{
3162+
# Setup
3163+
$rgname = Get-ResourceGroupName
3164+
$vnetName = Get-ResourceName
3165+
$subnetName = Get-ResourceName
3166+
$lbName = Get-ResourceName
3167+
$frontendName = Get-ResourceName
3168+
$backendAddressPoolName = Get-ResourceName
3169+
$probeName = Get-ResourceName
3170+
$inboundNatRuleName = Get-ResourceName
3171+
$lbruleName = Get-ResourceName
3172+
$rglocation = Get-ProviderLocation ResourceManagement
3173+
$resourceTypeParent = "Microsoft.Network/loadBalancers"
3174+
$location = Get-ProviderLocation $resourceTypeParent
3175+
3176+
try
3177+
{
3178+
# Create the resource group
3179+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval"}
3180+
3181+
# Create the Virtual Network
3182+
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24
3183+
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
3184+
3185+
# Create LoadBalancer
3186+
$frontend = New-AzLoadBalancerFrontendIpConfig -Name $frontendName -Subnet $vnet.Subnets[0]
3187+
$backendAddressPool = New-AzLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName
3188+
$probe = New-AzLoadBalancerProbeConfig -Name $probeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
3189+
$inboundNatRule = New-AzLoadBalancerInboundNatRuleConfig -Name $inboundNatRuleName -FrontendIPConfiguration $frontend -Protocol Tcp -FrontendPort 3389 -BackendPort 3389 -IdleTimeoutInMinutes 15 -EnableFloatingIP
3190+
$lbrule = New-AzLoadBalancerRuleConfig -Name $lbruleName -FrontendIPConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -Protocol Tcp -FrontendPort 80 -BackendPort 80 -IdleTimeoutInMinutes 15 -EnableFloatingIP -LoadDistribution SourceIP -DisableOutboundSNAT
3191+
$actualLb = New-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -BackendAddressPool $backendAddressPool -Probe $probe -InboundNatRule $inboundNatRule -LoadBalancingRule $lbrule
3192+
3193+
$expectedLb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname
3194+
3195+
# Verification
3196+
Assert-AreEqual $expectedLb.ResourceGroupName $actualLb.ResourceGroupName
3197+
Assert-AreEqual $expectedLb.Name $actualLb.Name
3198+
Assert-AreEqual $expectedLb.Location $actualLb.Location
3199+
Assert-AreEqualObjectProperties $expectedLb.Sku $actualLb.Sku
3200+
Assert-AreEqual "Succeeded" $expectedLb.ProvisioningState
3201+
Assert-AreEqual 1 @($expectedLb.FrontendIPConfigurations).Count
3202+
3203+
Assert-AreEqual $frontendName $expectedLb.FrontendIPConfigurations[0].Name
3204+
Assert-AreEqual $vnet.Subnets[0].Id $expectedLb.FrontendIPConfigurations[0].Subnet.Id
3205+
Assert-NotNull $expectedLb.FrontendIPConfigurations[0].PrivateIpAddress
3206+
3207+
Assert-AreEqual $backendAddressPoolName $expectedLb.BackendAddressPools[0].Name
3208+
3209+
Assert-AreEqual $probeName $expectedLb.Probes[0].Name
3210+
Assert-AreEqual $probe.RequestPath $expectedLb.Probes[0].RequestPath
3211+
3212+
Assert-AreEqual $inboundNatRuleName $expectedLb.InboundNatRules[0].Name
3213+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Id $expectedLb.InboundNatRules[0].FrontendIPConfiguration.Id
3214+
3215+
Assert-AreEqual $lbruleName $expectedLb.LoadBalancingRules[0].Name
3216+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Id $expectedLb.LoadBalancingRules[0].FrontendIPConfiguration.Id
3217+
Assert-AreEqual $expectedLb.BackendAddressPools[0].Id $expectedLb.LoadBalancingRules[0].BackendAddressPool.Id
3218+
Assert-AreEqual true $expectedlb.LoadBalancingRules[0].DisableOutboundSNAT
3219+
Assert-AreEqual true $actualLb.LoadBalancingRules[0].DisableOutboundSNAT
3220+
3221+
# List
3222+
$list = Get-AzLoadBalancer -ResourceGroupName $rgname
3223+
Assert-AreEqual 1 @($list).Count
3224+
Assert-AreEqual $expectedLb.Etag $list[0].Etag
3225+
Assert-AreEqualObjectProperties $expectedLb.Sku $list[0].Sku
3226+
Assert-AreEqual $expectedLb.FrontendIPConfigurations[0].Etag $list[0].FrontendIPConfigurations[0].Etag
3227+
Assert-AreEqual $expectedLb.BackendAddressPools[0].Etag $list[0].BackendAddressPools[0].Etag
3228+
Assert-AreEqual $expectedLb.InboundNatRules[0].Etag $list[0].InboundNatRules[0].Etag
3229+
Assert-AreEqual $expectedLb.Probes[0].Etag $list[0].Probes[0].Etag
3230+
Assert-AreEqual $expectedLb.LoadBalancingRules[0].Etag $list[0].LoadBalancingRules[0].Etag
3231+
Assert-AreEqual $expectedlb.LoadBalancingRules[0].DisableOutboundSNAT $actualLb.LoadBalancingRules[0].DisableOutboundSNAT
3232+
3233+
# Delete
3234+
$deleteLb = Remove-AzLoadBalancer -Name $lbName -ResourceGroupName $rgname -PassThru -Force
3235+
Assert-AreEqual true $deleteLb
3236+
3237+
$list = Get-AzLoadBalancer -ResourceGroupName $rgname
3238+
Assert-AreEqual 0 @($list).Count
3239+
}
3240+
finally
3241+
{
3242+
# Cleanup
3243+
Clean-ResourceGroup $rgname
3244+
}
3245+
}
3246+
30613247
<#
30623248
.SYNOPSIS
30633249
Tests creating new simple loadBalancer.

src/Network/Network.Test/ScenarioTests/PublicIpAddressTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ public void TestPublicIpStandardSku()
113113
TestRunner.RunTestScript("Test-PublicIpAddressCRUD-StandardSku");
114114
}
115115

116+
[Fact]
117+
[Trait(Category.AcceptanceType, Category.CheckIn)]
118+
[Trait(Category.Owner, NrpTeamAlias.wanrpdev)]
119+
public void TestPublicIpStandardSkuAsDefault()
120+
{
121+
TestRunner.RunTestScript("Test-PublicIpAddressCRUD-StandardSkuDefault");
122+
}
123+
116124
[Fact]
117125
[Trait(Category.AcceptanceType, Category.CheckIn)]
118126
[Trait(Category.Owner, NrpTeamAlias.ddos)]

src/Network/Network.Test/ScenarioTests/PublicIpAddressTests.ps1

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ function Test-PublicIpAddressCRUD-BasicSku
553553

554554
<#
555555
.SYNOPSIS
556-
Tests creating new simple publicIpAddress with Static allocation.
556+
Tests creating new simple publicIpAddress with Standard Sku.
557557
#>
558558
function Test-PublicIpAddressCRUD-StandardSku
559559
{
@@ -606,6 +606,61 @@ function Test-PublicIpAddressCRUD-StandardSku
606606
}
607607
}
608608

609+
<#
610+
.SYNOPSIS
611+
Tests creating new simple publicIpAddress with Standard Sku as default.
612+
#>
613+
function Test-PublicIpAddressCRUD-StandardSkuDefault
614+
{
615+
# Setup
616+
$rgname = Get-ResourceGroupName
617+
$rname = Get-ResourceName
618+
$domainNameLabel = Get-ResourceName
619+
$rglocation = Get-ProviderLocation ResourceManagement
620+
$resourceTypeParent = "Microsoft.Network/publicIpAddresses"
621+
$location = Get-ProviderLocation $resourceTypeParent
622+
623+
try
624+
{
625+
# Create the resource group
626+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" }
627+
628+
# Create publicIpAddres
629+
$actual = New-AzPublicIpAddress -ResourceGroupName $rgname -name $rname -location $location -AllocationMethod Static -DomainNameLabel $domainNameLabel
630+
$expected = Get-AzPublicIpAddress -ResourceGroupName $rgname -name $rname
631+
Assert-AreEqual $expected.ResourceGroupName $actual.ResourceGroupName
632+
Assert-AreEqual $expected.Name $actual.Name
633+
Assert-AreEqual $expected.Location $actual.Location
634+
Assert-AreEqualObjectProperties $expected.Sku $actual.Sku
635+
Assert-AreEqual "Static" $expected.PublicIpAllocationMethod
636+
Assert-NotNull $expected.IpAddress
637+
Assert-AreEqual "Succeeded" $expected.ProvisioningState
638+
639+
# list
640+
$list = Get-AzPublicIpAddress -ResourceGroupName $rgname
641+
Assert-AreEqual 1 @($list).Count
642+
Assert-AreEqual $list[0].ResourceGroupName $actual.ResourceGroupName
643+
Assert-AreEqual $list[0].Name $actual.Name
644+
Assert-AreEqual $list[0].Location $actual.Location
645+
Assert-AreEqualObjectProperties $list[0].Sku $actual.Sku
646+
Assert-AreEqual "Static" $list[0].PublicIpAllocationMethod
647+
Assert-NotNull $list[0].IpAddress
648+
Assert-AreEqual "Succeeded" $list[0].ProvisioningState
649+
650+
# delete
651+
$delete = Remove-AzPublicIpAddress -ResourceGroupName $actual.ResourceGroupName -name $rname -PassThru -Force
652+
Assert-AreEqual true $delete
653+
654+
$list = Get-AzPublicIpAddress -ResourceGroupName $actual.ResourceGroupName
655+
Assert-AreEqual 0 @($list).Count
656+
}
657+
finally
658+
{
659+
# Cleanup
660+
Clean-ResourceGroup $rgname
661+
}
662+
}
663+
609664
<#
610665
.SYNOPSIS
611666
Tests creating new simple publicIpAddress with Ddos Protection

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

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

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

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

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.PublicIpAddressTests/TestPublicIpStandardSkuAsDefault.json

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

src/Network/Network/LoadBalancer/NewAzureRMLoadBalancerCommand.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -189,28 +189,21 @@ public override void Execute()
189189
base.Execute();
190190

191191
// Sku
192-
PSLoadBalancerSku vSku = null;
192+
PSLoadBalancerSku vSku = new PSLoadBalancerSku();
193+
vSku.Name = "Standard";
193194

194195
if (this.Sku != null)
195196
{
196-
if (vSku == null)
197-
{
198-
vSku = new PSLoadBalancerSku();
199-
}
200197
vSku.Name = this.Sku;
201198
}
202199

203200
// Tier
204201
if (this.Tier != null)
205202
{
206-
if (vSku == null)
207-
{
208-
vSku = new PSLoadBalancerSku();
209-
}
210203
vSku.Tier = this.Tier;
211204
}
212205

213-
if ((vSku?.Tier ?? string.Empty) == "Global")
206+
if ((vSku.Tier ?? string.Empty) == "Global")
214207
{
215208
if ((this.InboundNatRule?.Count() ?? 0) > 0 || (this.OutboundRule?.Count() ?? 0) > 0)
216209
{

src/Network/Network/PublicIpAddress/NewAzurePublicIpAddressCommand.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
2020
using Microsoft.Azure.Commands.ResourceManager.Common.Tags;
2121
using Microsoft.Azure.Management.Network;
22+
using Microsoft.Azure.Management.Network.Models;
2223
using Microsoft.WindowsAzure.Commands.Common.CustomAttributes;
2324
using System.Collections;
2425
using System.Collections.Generic;
@@ -211,6 +212,9 @@ private PSPublicIpAddress CreatePublicIpAddress()
211212
publicIp.PublicIpPrefix = this.PublicIpPrefix;
212213
publicIp.IpAddress = this.IpAddress;
213214

215+
publicIp.Sku = new PSPublicIpAddressSku();
216+
publicIp.Sku.Name = MNM.PublicIPAddressSkuName.Standard;
217+
214218
if (!string.IsNullOrEmpty(this.EdgeZone))
215219
{
216220
publicIp.ExtendedLocation = new PSExtendedLocation(this.EdgeZone);

0 commit comments

Comments
 (0)