Skip to content

Commit 7c2d83a

Browse files
committed
Express Route Peering IPv6 changes #924393
Changes to Get,New, Update and Remove
1 parent fab1cf5 commit 7c2d83a

File tree

10 files changed

+157
-111
lines changed

10 files changed

+157
-111
lines changed

src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/BgpPeerings/GetAzureBGPPeering.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public class GetAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
2727
HelpMessage = "Service Key representing the Azure Circuit")]
2828
public Guid ServiceKey { get; set; }
2929

30-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Public or Private")]
30+
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Microsoft, Public or Private")]
31+
[ValidateSet("Microsoft", "Public", "Private")]
3132
[DefaultValue("Private")]
3233
public BgpPeeringAccessType AccessType { get; set; }
3334

src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/BgpPeerings/NewAzureBGPPeering.cs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ public class NewAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
2929
[ValidateNotNullOrEmpty]
3030
public string AdvertisedPublicPrefixes { get; set; }
3131

32-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Advertised Public Prefixes for Ipv6")]
33-
[ValidateNotNullOrEmpty]
34-
public string AdvertisedPublicPrefixesIpv6 { get; set; }
35-
3632
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Customer AS number")]
3733
public UInt32 CustomerAsn { get; set; }
3834

@@ -43,31 +39,17 @@ public class NewAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
4339
[DefaultValue(LegacyMode.False)]
4440
public LegacyMode LegacyMode { get; set; }
4541

46-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Customer AS number for Ipv6")]
47-
public UInt32 CustomerAsnIpv6 { get; set; }
48-
4942
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Primary Peer Subnet")]
5043
[ValidateNotNullOrEmpty]
5144
public string PrimaryPeerSubnet { get; set; }
5245

53-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Primary Peer Subnet for Ipv6")]
54-
[ValidateNotNullOrEmpty]
55-
public string PrimaryPeerSubnetIpv6 { get; set; }
56-
5746
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Routing Registry Name for Prefix Validation")]
5847
public string RoutingRegistryName { get; set; }
5948

60-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Routing Registry Name for Prefix Validation for Ipv6")]
61-
public string RoutingRegistryNameIpv6 { get; set; }
62-
6349
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Secondary Peer Subnet")]
6450
[ValidateNotNullOrEmpty]
6551
public string SecondaryPeerSubnet { get; set; }
6652

67-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Secondary Peer Subnet for Ipv6")]
68-
[ValidateNotNullOrEmpty]
69-
public string SecondaryPeerSubnetIpv6 { get; set; }
70-
7153
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Shared Key")]
7254
[ValidateNotNullOrEmpty]
7355
public string SharedKey { get; set; }
@@ -76,13 +58,21 @@ public class NewAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
7658
public UInt32 VlanId { get; set; }
7759

7860
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Microsoft, Public or Private")]
61+
[ValidateSet("Microsoft", "Public", "Private")]
7962
[DefaultValue("Private")]
8063
public BgpPeeringAccessType AccessType { get; set; }
8164

65+
[Parameter(Mandatory = false, HelpMessage = "Bgp Peer Address Type: IPv4, IPv6")]
66+
[ValidateSet("IPv4", "IPv6")]
67+
[DefaultValue("IPv4")]
68+
public PeerAddressTypeValues PeerAddressType { get; set; }
69+
8270
public override void ExecuteCmdlet()
8371
{
84-
var route = ExpressRouteClient.NewAzureBGPPeering(ServiceKey, AdvertisedPublicPrefixes, AdvertisedPublicPrefixesIpv6, CustomerAsn, CustomerAsnIpv6, PeerAsn,
85-
PrimaryPeerSubnet, PrimaryPeerSubnetIpv6, RoutingRegistryName, RoutingRegistryNameIpv6, SecondaryPeerSubnet, SecondaryPeerSubnetIpv6, VlanId, AccessType, SharedKey, Convert.ToUInt32(LegacyMode));
72+
AzureBgpPeering route = null;
73+
route = ExpressRouteClient.NewAzureBGPPeering(ServiceKey, PeerAddressType, AdvertisedPublicPrefixes, CustomerAsn, PeerAsn, PrimaryPeerSubnet, RoutingRegistryName, SecondaryPeerSubnet,
74+
VlanId, AccessType, SharedKey, Convert.ToUInt32(LegacyMode));
75+
8676
WriteObject(route);
8777
}
8878
}
@@ -92,4 +82,10 @@ public enum LegacyMode
9282
False = 0,
9383
True = 1
9484
}
85+
86+
public enum PeerAddressTypeValues
87+
{
88+
IPv4 = 0,
89+
IPv6 = 1
90+
}
9591
}

src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/BgpPeerings/RemoveAzureBGPPeering.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,22 @@
2020

2121
namespace Microsoft.WindowsAzure.Commands.ExpressRoute
2222
{
23-
[Cmdlet(VerbsCommon.Remove, "AzureBGPPeering"),OutputType(typeof(bool))]
23+
[Cmdlet(VerbsCommon.Remove, "AzureBGPPeering", SupportsShouldProcess = true), OutputType(typeof(bool))]
2424
public class RemoveAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
2525
{
2626
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true,
2727
HelpMessage = "Service Key associated with the Azure BGP Peering to be removed")]
2828
public Guid ServiceKey { get; set; }
2929

30-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Public or Private")]
30+
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Microsoft, Public or Private")]
31+
[ValidateSet("Microsoft", "Public", "Private")]
3132
[DefaultValue("Private")]
3233
public BgpPeeringAccessType AccessType { get; set; }
3334

34-
[Parameter(Mandatory = false, HelpMessage = "Bgp Peer Address Type: IPv4 or IPv6")]
35-
public BgpPeerAdddressType? PeerAddressType { get; set; }
35+
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peer Address Type: IPv4, IPv6, All")]
36+
[ValidateSet("IPv4", "IPv6", "All")]
37+
[DefaultValue("IPv4")]
38+
public BgpPeerAddressType PeerAddressType { get; set; }
3639

3740
[Parameter(HelpMessage = "Do not confirm Azure BGP Peering deletion")]
3841
public SwitchParameter Force { get; set; }
@@ -49,9 +52,9 @@ public override void ExecuteCmdlet()
4952
ServiceKey.ToString(),
5053
() =>
5154
{
52-
if (!PeerAddressType.HasValue || PeerAddressType == BgpPeerAdddressType.All || AccessType != BgpPeeringAccessType.Microsoft)
55+
if (PeerAddressType == BgpPeerAddressType.All || AccessType != BgpPeeringAccessType.Microsoft)
5356
{
54-
if (!ExpressRouteClient.RemoveAzureBGPPeering(ServiceKey, AccessType, BgpPeerAdddressType.All))
57+
if (!ExpressRouteClient.RemoveAzureBGPPeering(ServiceKey, AccessType, BgpPeerAddressType.All))
5558
{
5659
throw new Exception(Resources.RemoveAzureBGPPeeringFailed);
5760
}
@@ -66,7 +69,7 @@ public override void ExecuteCmdlet()
6669
}
6770
else
6871
{
69-
if (!ExpressRouteClient.RemoveAzureBGPPeering(ServiceKey, AccessType, (BgpPeerAdddressType)PeerAddressType))
72+
if (!ExpressRouteClient.RemoveAzureBGPPeering(ServiceKey, AccessType, (BgpPeerAddressType)PeerAddressType))
7073
{
7174
throw new Exception(Resources.RemoveAzureBGPPeeringFailed);
7275
}

src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/BgpPeerings/SetAzureBGPPeering.cs

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,8 @@ public class SetAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
3131
[ValidateNotNullOrEmpty]
3232
public string AdvertisedPublicPrefixes;
3333

34-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Advertised Public Prefixes for Ipv6")]
35-
[ValidateNotNullOrEmpty]
36-
public string AdvertisedPublicPrefixesIpv6;
37-
3834
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Customer AS number")]
39-
public UInt32 CustomerAsn { get; set; }
40-
41-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Customer AS number for Ipv6")]
42-
public UInt32 CustomerAsnIpv6 { get; set; }
35+
public UInt32? CustomerAsn { get; set; }
4336

4437
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true,
4538
HelpMessage = "Peer Asn")]
@@ -49,24 +42,13 @@ public class SetAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
4942
[ValidateNotNullOrEmpty]
5043
public string PrimaryPeerSubnet { get; set; }
5144

52-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Primary Peer Subnet for Ipv6")]
53-
[ValidateNotNullOrEmpty]
54-
public string PrimaryPeerSubnetIpv6 { get; set; }
55-
5645
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Routing Registry Name for Prefix Validation")]
5746
public string RoutingRegistryName { get; set; }
5847

59-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Routing Registry Name for Prefix Validation for Ipv6")]
60-
public string RoutingRegistryNameIpv6 { get; set; }
61-
6248
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Secondary Peer Subnet")]
6349
[ValidateNotNullOrEmpty]
6450
public string SecondaryPeerSubnet { get; set; }
6551

66-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Secondary Peer Subnet for Ipv6")]
67-
[ValidateNotNullOrEmpty]
68-
public string SecondaryPeerSubnetIpv6 { get; set; }
69-
7052
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Shared Key")]
7153
[ValidateNotNullOrEmpty]
7254
public string SharedKey { get; set; }
@@ -75,19 +57,30 @@ public class SetAzureBGPPeeringCommand : ExpressRouteBaseCmdlet
7557
public UInt32? VlanId { get; set; }
7658

7759
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Bgp Peering Access Type: Microsoft, Public or Private")]
60+
[ValidateSet("Microsoft", "Public", "Private")]
7861
[DefaultValue("Private")]
7962
public BgpPeeringAccessType AccessType { get; set; }
8063

64+
[Parameter(Mandatory = false, HelpMessage = "Bgp Peer Address Type: IPv4, IPv6")]
65+
[ValidateSet("IPv4", "IPv6")]
66+
[DefaultValue("IPv4")]
67+
public PeerAddressTypeValues PeerAddressType { get; set; }
68+
8169
public override void ExecuteCmdlet()
8270
{
8371
try
8472
{
8573
var route = ExpressRouteClient.GetAzureBGPPeering(ServiceKey, AccessType);
86-
var updatedRoute = ExpressRouteClient.UpdateAzureBGPPeering(ServiceKey, AccessType, CustomerAsn, CustomerAsnIpv6,
87-
PeerAsn.HasValue ? PeerAsn.Value : route.PeerAsn, PrimaryPeerSubnet ?? route.PrimaryPeerSubnet, PrimaryPeerSubnetIpv6 ?? route.PrimaryPeerSubnetIpv6,
88-
RoutingRegistryName, RoutingRegistryNameIpv6, SecondaryPeerSubnet ?? route.SecondaryPeerSubnet, SecondaryPeerSubnetIpv6 ?? route.SecondaryPeerSubnetIpv6,
89-
VlanId.HasValue ? VlanId.Value : route.VlanId,
90-
SharedKey.Trim());
74+
75+
var advertisedPublicPrefixes = AdvertisedPublicPrefixes ?? ((PeerAddressType == PeerAddressTypeValues.IPv4) ? route.AdvertisedPublicPrefixes : route.AdvertisedPublicPrefixesIpv6);
76+
var routingRegistryName = RoutingRegistryName ?? ((PeerAddressType == PeerAddressTypeValues.IPv4) ? route.RoutingRegistryName : route.RoutingRegistryNameIpv6);
77+
var customerAsn = (CustomerAsn.HasValue) ? CustomerAsn.Value : ((PeerAddressType == PeerAddressTypeValues.IPv4) ? route.CustomerAutonomousSystemNumber : route.CustomerAutonomousSystemNumberIpv6);
78+
79+
var updatedRoute = ExpressRouteClient.UpdateAzureBGPPeering(ServiceKey, PeerAddressType, AccessType,
80+
advertisedPublicPrefixes, customerAsn, PeerAsn.HasValue ? PeerAsn.Value : route.PeerAsn, PrimaryPeerSubnet,
81+
routingRegistryName, SecondaryPeerSubnet, VlanId.HasValue ? VlanId.Value : route.VlanId,
82+
string.IsNullOrWhiteSpace(SharedKey) ? null : SharedKey.Trim());
83+
9184
WriteObject(updatedRoute, false);
9285
}
9386
catch
@@ -102,18 +95,17 @@ public override void ExecuteCmdlet()
10295
throw new ArgumentException(Resources.VlanIdRequired);
10396
}
10497

105-
if (PrimaryPeerSubnet == null && PrimaryPeerSubnetIpv6 == null)
98+
if (PrimaryPeerSubnet == null)
10699
{
107100
throw new ArgumentException(Resources.PrimaryPeerSubnetRequired);
108101
}
109102

110-
if (SecondaryPeerSubnet == null && SecondaryPeerSubnetIpv6 == null)
103+
if (SecondaryPeerSubnet == null)
111104
{
112105
throw new ArgumentException(Resources.SecondaryPeerSubnetRequired);
113106
}
114107

115-
var newRoute = ExpressRouteClient.NewAzureBGPPeering(ServiceKey, AdvertisedPublicPrefixes, AdvertisedPublicPrefixesIpv6, CustomerAsn, CustomerAsnIpv6,
116-
PeerAsn.Value, PrimaryPeerSubnet, PrimaryPeerSubnetIpv6, RoutingRegistryName, RoutingRegistryNameIpv6, SecondaryPeerSubnet, SecondaryPeerSubnetIpv6,
108+
var newRoute = ExpressRouteClient.NewAzureBGPPeering(ServiceKey, PeerAddressType, AdvertisedPublicPrefixes, CustomerAsn.Value, PeerAsn.Value, PrimaryPeerSubnet, RoutingRegistryName, SecondaryPeerSubnet,
117109
VlanId.Value, AccessType, SharedKey);
118110
WriteObject(newRoute);
119111
}

src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/Commands.ExpressRoute.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
</Reference>
9090
<Reference Include="Microsoft.WindowsAzure.Management.ExpressRoute, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
9191
<SpecificVersion>False</SpecificVersion>
92-
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.Management.ExpressRoute.0.26.0-preview\lib\net40\Microsoft.WindowsAzure.Management.ExpressRoute.dll</HintPath>
92+
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.Management.ExpressRoute.0.23.0-preview\lib\net40\Microsoft.WindowsAzure.Management.ExpressRoute.dll</HintPath>
9393
<Private>True</Private>
9494
</Reference>
9595
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@@ -195,4 +195,4 @@
195195
</ItemGroup>
196196
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
197197
<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
198-
</Project>
198+
</Project>

0 commit comments

Comments
 (0)