Skip to content

Commit 22f14b9

Browse files
bveerannamsftBharath VeerannaYanaXu
authored
New cmdlets for Microsoft peering prefix validation (#26969)
* New cmdlets for Microsoft peering prefix validation * Addressing review comments * Update src/Network/Network/help/Add-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig.md * Update src/Network/Network/help/Remove-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig.md * Update src/Network/Network/help/Get-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig.md * Update src/Network/Network/help/Set-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig.md * Setting SupportsShouldProcess to false * Adding exception for SA ShouldProcess --------- Co-authored-by: Bharath Veeranna <[email protected]> Co-authored-by: Yan Xu <[email protected]>
1 parent 493d3df commit 22f14b9

17 files changed

+6329
-3
lines changed

src/Network/Network.Test/ScenarioTests/ExpressRouteCircuitTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ public void TestExpressRouteCircuitMicrosoftPeeringCRUD()
5858
TestRunner.RunTestScript("Test-ExpressRouteCircuitMicrosoftPeeringCRUD");
5959
}
6060

61+
[Fact]
62+
[Trait(Category.AcceptanceType, Category.CheckIn)]
63+
[Trait(Category.Owner, NrpTeamAlias.exrdev)]
64+
public void TestExpressRouteCircuitMicrosoftPeeringPrefixValidationCRUD()
65+
{
66+
TestRunner.RunTestScript("Test-ExpressRouteCircuitMicrosoftPeeringPrefixValidationCRUD");
67+
}
68+
6169
[Fact]
6270
[Trait(Category.AcceptanceType, Category.CheckIn)]
6371
[Trait(Category.Owner, NrpTeamAlias.exrdev)]

src/Network/Network.Test/ScenarioTests/ExpressRouteCircuitTests.ps1

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,153 @@ function Test-ExpressRouteCircuitMicrosoftPeeringCRUD
456456
}
457457
}
458458

459+
<#
460+
.SYNOPSIS
461+
Tests express route microsoft peering prefix validation
462+
#>
463+
function Test-ExpressRouteCircuitMicrosoftPeeringPrefixValidationCRUD
464+
{
465+
# Setup
466+
$rgname = Get-ResourceGroupName
467+
$circuitName = Get-ResourceName
468+
$rglocation = Get-ProviderLocation ResourceManagement
469+
$location = "centraluseuap"
470+
471+
try
472+
{
473+
# Create the resource group
474+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation
475+
# Create the ExpressRouteCircuit with peering
476+
$advertisedPublicPrefixesV4 = "11.2.3.4/30";
477+
$peering = New-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering -PeeringType MicrosoftPeering -PeerASN 33 -PrimaryPeerAddressPrefix "192.171.1.0/30" -SecondaryPeerAddressPrefix "192.171.2.0/30" -VlanId 224 -MicrosoftConfigAdvertisedPublicPrefixes @($advertisedPublicPrefixesV4) -MicrosoftConfigCustomerAsn 1000 -MicrosoftConfigRoutingRegistryName AFRINIC -LegacyMode $true
478+
$circuit = New-AzExpressRouteCircuit -Name $circuitName -Location $location -ResourceGroupName $rgname -SkuTier Premium -SkuFamily MeteredData -ServiceProviderName "bvtcustomerixp01" -PeeringLocation "boydton 1 dc" -BandwidthInMbps 200 -Peering $peering
479+
480+
# Verify the peering
481+
Assert-AreEqual "MicrosoftPeering" $circuit.Peerings[0].Name
482+
Assert-AreEqual "MicrosoftPeering" $circuit.Peerings[0].PeeringType
483+
Assert-AreEqual "192.171.1.0/30" $circuit.Peerings[0].PrimaryPeerAddressPrefix
484+
Assert-AreEqual "192.171.2.0/30" $circuit.Peerings[0].SecondaryPeerAddressPrefix
485+
Assert-AreEqual "224" $circuit.Peerings[0].VlanId
486+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig
487+
Assert-AreEqual "1000" $circuit.Peerings[0].MicrosoftPeeringConfig.CustomerASN
488+
Assert-AreEqual "AFRINIC" $circuit.Peerings[0].MicrosoftPeeringConfig.RoutingRegistryName
489+
Assert-AreEqual 1 @($circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixes).Count
490+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixesState
491+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
492+
Assert-AreEqual $advertisedPublicPrefixesV4 $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
493+
494+
# Get prefix info from circuit
495+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
496+
$prefixInfo = Get-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv4 -Prefix $advertisedPublicPrefixesV4
497+
498+
# Verify prefix Info
499+
Assert-NotNull $prefixInfo
500+
Assert-AreEqual $advertisedPublicPrefixesV4 $prefixInfo.Prefix
501+
502+
# Update prefix validation Info
503+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
504+
Set-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv4 -Prefix $advertisedPublicPrefixesV4 -Signature "Signature1"
505+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
506+
507+
# Verify prefix Info
508+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
509+
Assert-AreEqual $advertisedPublicPrefixesV4 $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
510+
Assert-AreEqual "Signature1" $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Signature
511+
512+
# Remove prefix validation Info
513+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
514+
Remove-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv4 -Prefix $advertisedPublicPrefixesV4
515+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
516+
517+
# Verify prefix Info
518+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
519+
520+
# Add new prefix validation Info
521+
Add-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv4 -Prefix $advertisedPublicPrefixesV4 -Signature "Signature2"
522+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
523+
524+
# Verify prefix Info
525+
Assert-NotNull $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
526+
Assert-AreEqual $advertisedPublicPrefixesV4 $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
527+
Assert-AreEqual "Signature2" $circuit.Peerings[0].MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Signature
528+
529+
# Set a new IPv6 peering
530+
$primaryPeerAddressPrefixV6 = "fc00::/126";
531+
$secondaryPeerAddressPrefixV6 = "fc00::/126";
532+
$customerAsnV6 = 2000;
533+
$routingRegistryNameV6 = "RADB";
534+
$advertisedPublicPrefixesV6 = "fc02::1/128";
535+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname | Set-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering -PeeringType MicrosoftPeering -PeerASN 44 -PrimaryPeerAddressPrefix $primaryPeerAddressPrefixV6 -SecondaryPeerAddressPrefix $secondaryPeerAddressPrefixV6 -VlanId 555 -MicrosoftConfigAdvertisedPublicPrefixes @($advertisedPublicPrefixesV6) -MicrosoftConfigCustomerAsn $customerAsnV6 -MicrosoftConfigRoutingRegistryName $routingRegistryNameV6 -PeerAddressType IPv6 | Set-AzExpressRouteCircuit
536+
$p = $circuit | Get-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering
537+
538+
Assert-AreEqual "MicrosoftPeering" $p.Name
539+
Assert-AreEqual "MicrosoftPeering" $p.PeeringType
540+
Assert-AreEqual "44" $p.PeerASN
541+
Assert-AreEqual $primaryPeerAddressPrefixV6 $p.Ipv6PeeringConfig.PrimaryPeerAddressPrefix
542+
Assert-AreEqual $secondaryPeerAddressPrefixV6 $p.Ipv6PeeringConfig.SecondaryPeerAddressPrefix
543+
Assert-AreEqual "555" $p.VlanId
544+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig
545+
Assert-AreEqual $customerAsnV6 $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.CustomerASN
546+
Assert-AreEqual $routingRegistryNameV6 $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.RoutingRegistryName
547+
Assert-AreEqual 1 @($p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixes).Count
548+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixesState
549+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
550+
Assert-AreEqual $advertisedPublicPrefixesV6 $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
551+
552+
# Get prefix info from circuit
553+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
554+
$prefixInfo = Get-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv6 -Prefix $advertisedPublicPrefixesV6
555+
556+
# Verify prefix Info
557+
Assert-NotNull $prefixInfo
558+
Assert-AreEqual $advertisedPublicPrefixesV6 $prefixInfo.Prefix
559+
560+
# Update prefix validation Info
561+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
562+
Set-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv6 -Prefix $advertisedPublicPrefixesV6 -Signature "Signature1"
563+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
564+
$p = $circuit | Get-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering
565+
566+
# Verify prefix Info
567+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
568+
Assert-AreEqual $advertisedPublicPrefixesV6 $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
569+
Assert-AreEqual "Signature1" $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Signature
570+
571+
# Remove prefix validation Info
572+
$circuit = Get-AzExpressRouteCircuit -Name $circuitName -ResourceGroupName $rgname
573+
Remove-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv6 -Prefix $advertisedPublicPrefixesV6
574+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
575+
$p = $circuit | Get-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering
576+
577+
# Verify prefix Info
578+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
579+
580+
# Add new prefix validation Info
581+
Add-AzExpressRouteCircuitMicrosoftPeeringPrefixConfig -ExpressRouteCircuit $circuit -PeerAddressType IPv6 -Prefix $advertisedPublicPrefixesV6 -Signature "Signature2"
582+
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit
583+
$p = $circuit | Get-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering
584+
585+
# Verify prefix Info
586+
Assert-NotNull $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo
587+
Assert-AreEqual $advertisedPublicPrefixesV6 $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Prefix
588+
Assert-AreEqual "Signature2" $p.Ipv6PeeringConfig.MicrosoftPeeringConfig.AdvertisedPublicPrefixInfo[0].Signature
589+
590+
# Delete Peering and Circuit
591+
Remove-AzExpressRouteCircuitPeeringConfig -Name MicrosoftPeering -ExpressRouteCircuit $circuit -PeerAddressType All | Set-AzExpressRouteCircuit
592+
$delete = Remove-AzExpressRouteCircuit -ResourceGroupName $rgname -name $circuitName -PassThru -Force
593+
Assert-AreEqual true $delete
594+
595+
$list = Get-AzExpressRouteCircuit -ResourceGroupName $rgname
596+
Assert-AreEqual 0 @($list).Count
597+
598+
}
599+
finally
600+
{
601+
# Cleanup
602+
Clean-ResourceGroup $rgname
603+
}
604+
}
605+
459606
<#
460607
.SYNOPSIS
461608
Tests ExpressRouteCircuitAuthorizationCRUD.

0 commit comments

Comments
 (0)