Skip to content

Commit e33a387

Browse files
Add VirtualHubBgpConnections and VirtualHubIpConfigurations.
1 parent 3aa7d78 commit e33a387

13 files changed

+134
-106
lines changed

src/Network/Network/Generated/Models/PSVirtualRouterPeer.cs renamed to src/Network/Network/Generated/Models/PSBgpConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
namespace Microsoft.Azure.Commands.Network.Models
2121
{
22-
public partial class PSVirtualRouterPeer : PSChildResource
22+
public partial class PSBgpConnection : PSChildResource
2323
{
2424
[Ps1Xml(Target = ViewControl.Table)]
2525
public uint PeerAsn { get; set; }

src/Network/Network/Generated/Models/PSVirtualRouter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ namespace Microsoft.Azure.Commands.Network.Models
2222
public partial class PSVirtualRouter : PSTopLevelResource
2323
{
2424
[Ps1Xml(Target = ViewControl.Table)]
25-
public PSResourceId HostedGateway { get; set; }
25+
public List<PSSubnet> IpConfiguration { get; set; }
2626
[Ps1Xml(Target = ViewControl.Table)]
2727
public uint VirtualRouterAsn { get; set; }
2828
[Ps1Xml(Target = ViewControl.Table)]
2929
public List<string> VirtualRouterIps { get; set; }
3030
[Ps1Xml(Target = ViewControl.Table)]
3131
public string ProvisioningState { get; set; }
32-
public List<PSVirtualRouterPeer> Peerings { get; set; }
32+
public List<PSBgpConnection> Peerings { get; set; }
3333

3434
[JsonIgnore]
3535
public string PeeringsText
@@ -38,9 +38,9 @@ public string PeeringsText
3838
}
3939

4040
[JsonIgnore]
41-
public string HostedGatewayText
41+
public string HostedSubnetText
4242
{
43-
get { return JsonConvert.SerializeObject(HostedGateway, Formatting.Indented, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); }
43+
get { return JsonConvert.SerializeObject(IPConfiguration, Formatting.Indented, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); }
4444
}
4545
}
4646
}

src/Network/Network/Models/Cortex/PSVirtualHub.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ public class PSVirtualHub : PSTopLevelResource
3838

3939
public PSVirtualHubRouteTable RouteTable { get; set; }
4040

41+
public List<PSSubnet> IpConfigurations { get; set; }
42+
43+
public List<PSBgpConnection> BgpConnections { get; set; }
44+
4145
[Ps1Xml(Label = "Address Prefix", Target = ViewControl.Table)]
4246
public string AddressPrefix { get; set; }
4347

src/Network/Network/Network.format.ps1xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5347,8 +5347,8 @@
53475347
<PropertyName>ProvisioningState</PropertyName>
53485348
</ListItem>
53495349
<ListItem>
5350-
<Label>HostedGateway</Label>
5351-
<PropertyName>HostedGatewayText</PropertyName>
5350+
<Label>HostedSubnet</Label>
5351+
<PropertyName>HostedSubnetText</PropertyName>
53525352
</ListItem>
53535353
<ListItem>
53545354
<Label>VirtualRouterAsn</Label>
@@ -5368,9 +5368,9 @@
53685368
</ListControl>
53695369
</View>
53705370
<View>
5371-
<Name>Microsoft.Azure.Commands.Network.Models.PSVirtualRouterPeer</Name>
5371+
<Name>Microsoft.Azure.Commands.Network.Models.PSBgpConnection</Name>
53725372
<ViewSelectedBy>
5373-
<TypeName>Microsoft.Azure.Commands.Network.Models.PSVirtualRouterPeer</TypeName>
5373+
<TypeName>Microsoft.Azure.Commands.Network.Models.PSBgpConnection</TypeName>
53745374
</ViewSelectedBy>
53755375
<ListControl>
53765376
<ListEntries>

src/Network/Network/VirtualRouter/GetAzureRMVirtualRouterCommand.cs

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public partial class GetAzureRmVirtualRouter : VirtualRouterBaseCmdlet
3131
{
3232
[Parameter(
3333
ParameterSetName = VirtualRouterParameterSetNames.ByVirtualRouterName,
34-
Mandatory = true,
34+
Mandatory = false,
3535
HelpMessage = "The resource group name of the virtual router.",
3636
ValueFromPipelineByPropertyName = true)]
3737
[ResourceGroupCompleter]
@@ -55,7 +55,7 @@ public partial class GetAzureRmVirtualRouter : VirtualRouterBaseCmdlet
5555
HelpMessage = "ResourceId of the virtual router.",
5656
ValueFromPipelineByPropertyName = true)]
5757
[ValidateNotNullOrEmpty]
58-
[ResourceIdCompleter("Microsoft.Network/virtualRouters")]
58+
[ResourceIdCompleter("Microsoft.Network/virtualHubs")]
5959
public string ResourceId { get; set; }
6060

6161
public override void Execute()
@@ -71,40 +71,42 @@ public override void Execute()
7171

7272
if (ShouldGetByName(ResourceGroupName, RouterName))
7373
{
74-
var vVirtualRouter = this.NetworkClient.NetworkManagementClient.VirtualRouters.Get(ResourceGroupName, RouterName);
75-
var vVirtualRouterModel = NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualRouter>(vVirtualRouter);
76-
vVirtualRouterModel.ResourceGroupName = this.ResourceGroupName;
77-
vVirtualRouterModel.Tag = TagsConversionHelper.CreateTagHashtable(vVirtualRouter.Tags);
78-
AddPeeringsToPSVirtualRouter(vVirtualRouter, vVirtualRouterModel, ResourceGroupName, RouterName);
74+
var vVirtualHub = this.NetworkClient.NetworkManagementClient.VirtualHubs.Get(ResourceGroupName, RouterName);
75+
var vVirtualHubModel = NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualHub>(vVirtualHub);
76+
vVirtualHubModel.ResourceGroupName = this.ResourceGroupName;
77+
vVirtualHubModel.Tag = TagsConversionHelper.CreateTagHashtable(vVirtualHub.Tags);
78+
AddBgpConnectionsToPSVirtualHub(vVirtualHub, vVirtualHubModel, ResourceGroupName, RouterName);
79+
var vVirtualRouterModel = NetworkResourceManagerProfile.Mapper.Map<PSVirtualRouter>(vVirtualHubModel);
80+
7981
WriteObject(vVirtualRouterModel, true);
8082
}
8183
else
8284
{
83-
IPage<VirtualRouter> vVirtualRouterPage;
85+
IPage<VirtualHub> vVirtualHubPage;
8486
if(ShouldListByResourceGroup(ResourceGroupName, RouterName))
8587
{
86-
vVirtualRouterPage = this.NetworkClient.NetworkManagementClient.VirtualRouters.ListByResourceGroup(this.ResourceGroupName);
88+
vVirtualHubPage = this.NetworkClient.NetworkManagementClient.VirtualHubs.ListByResourceGroup(this.ResourceGroupName);
8789
}
8890
else
8991
{
90-
vVirtualRouterPage = this.NetworkClient.NetworkManagementClient.VirtualRouters.List();
92+
vVirtualHubPage = this.NetworkClient.NetworkManagementClient.VirtualHubs.List();
9193
}
9294

93-
var vVirtualRouterList = ListNextLink<VirtualRouter>.GetAllResourcesByPollingNextLink(vVirtualRouterPage,
94-
this.NetworkClient.NetworkManagementClient.VirtualRouters.ListNext);
95+
var vVirtualHubList = ListNextLink<VirtualHub>.GetAllResourcesByPollingNextLink(vVirtualHubPage,
96+
this.NetworkClient.NetworkManagementClient.VirtualHubs.ListNext);
9597
List<PSVirtualRouter> psVirtualRouterList = new List<PSVirtualRouter>();
96-
foreach (var vVirtualRouter in vVirtualRouterList)
98+
foreach (var vVirtualHub in vVirtualHubList)
9799
{
98-
RouterName = vVirtualRouter.Name;
99-
var vVirtualRouterModel = NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualRouter>(vVirtualRouter);
100-
vVirtualRouterModel.ResourceGroupName = NetworkBaseCmdlet.GetResourceGroup(vVirtualRouter.Id);
101-
vVirtualRouterModel.Tag = TagsConversionHelper.CreateTagHashtable(vVirtualRouter.Tags);
102-
AddPeeringsToPSVirtualRouter(vVirtualRouter, vVirtualRouterModel, ResourceGroupName, RouterName);
103-
100+
RouterName = vVirtualHub.Name;
101+
var vVirtualHubModel = NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualHub>(vVirtualHub);
102+
vVirtualHubModel.ResourceGroupName = NetworkBaseCmdlet.GetResourceGroup(vVirtualHub.Id);
103+
vVirtualHubModel.Tag = TagsConversionHelper.CreateTagHashtable(vVirtualHub.Tags);
104+
AddBgpConnectionsToPSVirtualHub(vVirtualHub, vVirtualHubModel, ResourceGroupName, RouterName);
105+
var vVirtuaRouterModel = NetworkResourceManagerProfile.Mapper.Map<PSVirtualRouter>(vVirtualHubModel);
104106
psVirtualRouterList.Add(vVirtualRouterModel);
105107
}
106108
WriteObject(psVirtualRouterList, true);
107109
}
108110
}
109111
}
110-
}
112+
}

src/Network/Network/VirtualRouter/NewAzureRMVirtualRouterCommand.cs

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
namespace Microsoft.Azure.Commands.Network
3030
{
31-
[Cmdlet(VerbsCommon.New, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "VirtualRouter", SupportsShouldProcess = true, DefaultParameterSetName = VirtualRouterParameterSetNames.ByHostedGateway), OutputType(typeof(PSVirtualRouter))]
31+
[Cmdlet(VerbsCommon.New, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "VirtualRouter", SupportsShouldProcess = true, DefaultParameterSetName = VirtualRouterParameterSetNames.ByVirtualWanObject), OutputType(typeof(PSVirtualRouter))]
3232
public partial class NewAzureRmVirtualRouter : VirtualRouterBaseCmdlet
3333
{
3434
[Parameter(
@@ -49,18 +49,30 @@ public partial class NewAzureRmVirtualRouter : VirtualRouterBaseCmdlet
4949

5050
[Parameter(
5151
Mandatory = true,
52-
ValueFromPipelineByPropertyName = true,
53-
ParameterSetName = VirtualRouterParameterSetNames.ByHostedGateway,
54-
HelpMessage = "The gateway where Virtual Router needs to be hosted.")]
55-
public PSVirtualNetworkGateway HostedGateway { get; set; }
52+
ValueFromPipeline = true,
53+
ParameterSetName = CortexParameterSetNames.ByVirtualWanObject,
54+
HelpMessage = "The virtual wan object this hub is linked to.")]
55+
public PSVirtualWan VirtualWan { get; set; }
5656

5757
[Parameter(
5858
Mandatory = true,
5959
ValueFromPipelineByPropertyName = true,
60-
ParameterSetName = VirtualRouterParameterSetNames.ByHostedGatewayId,
61-
HelpMessage = "The id of gateway where Virtual Router needs to be hosted.")]
62-
[ResourceIdCompleter("Microsoft.Network/virtualNetworkGateways")]
63-
public string HostedGatewayId { get; set; }
60+
ParameterSetName = CortexParameterSetNames.ByVirtualWanResourceId,
61+
HelpMessage = "The id of virtual wan object this hub is linked to.")]
62+
[ResourceIdCompleter("Microsoft.Network/virtualWans")]
63+
public string VirtualWanId { get; set; }
64+
65+
[Parameter(
66+
Mandatory = true,
67+
HelpMessage = "The subnet where the virtual hub is hosted.")]
68+
[ValidateNotNullOrEmpty]
69+
public string HostedSubnet { get; set; }
70+
71+
[Parameter(
72+
Mandatory = true,
73+
HelpMessage = "The address space string.")]
74+
[ValidateNotNullOrEmpty]
75+
public string AddressPrefix { get; set; }
6476

6577
[Parameter(
6678
Mandatory = true,
@@ -90,7 +102,7 @@ public override void Execute()
90102
var present = true;
91103
try
92104
{
93-
this.NetworkClient.NetworkManagementClient.VirtualRouters.Get(this.ResourceGroupName, this.Name);
105+
this.NetworkClient.NetworkManagementClient.VirtualHubs.Get(this.ResourceGroupName, this.Name);
94106
}
95107
catch (Exception ex)
96108
{
@@ -110,47 +122,55 @@ public override void Execute()
110122
throw new PSArgumentException(string.Format(Properties.Resources.ResourceAlreadyPresentInResourceGroup, this.Name, this.ResourceGroupName));
111123
}
112124

113-
string hostedGatewayId = null;
125+
string virtualWanRGName = null;
126+
string virtualWanName = null;
114127

115128
//// Resolve the virtual wan
116-
if (ParameterSetName.Equals(VirtualRouterParameterSetNames.ByHostedGateway, StringComparison.OrdinalIgnoreCase))
129+
if (ParameterSetName.Equals(CortexParameterSetNames.ByVirtualWanObject, StringComparison.OrdinalIgnoreCase))
117130
{
118-
hostedGatewayId = this.HostedGateway.Id;
131+
virtualWanRGName = this.VirtualWan.ResourceGroupName;
132+
virtualWanName = this.VirtualWan.Name;
119133
}
120-
else if (ParameterSetName.Equals(VirtualRouterParameterSetNames.ByHostedGatewayId, StringComparison.OrdinalIgnoreCase))
134+
else if (ParameterSetName.Equals(CortexParameterSetNames.ByVirtualWanResourceId, StringComparison.OrdinalIgnoreCase))
121135
{
122-
hostedGatewayId = this.HostedGatewayId;
136+
var parsedWanResourceId = new ResourceIdentifier(this.VirtualWanId);
137+
virtualWanName = parsedWanResourceId.ResourceName;
138+
virtualWanRGName = parsedWanResourceId.ResourceGroupName;
123139
}
124140

125-
if (string.IsNullOrWhiteSpace(hostedGatewayId))
141+
if (string.IsNullOrWhiteSpace(virtualWanRGName) || string.IsNullOrWhiteSpace(virtualWanName))
126142
{
127-
throw new PSArgumentException(Properties.Resources.VirtualGatewayRequiredForVirtualRouter);
143+
throw new PSArgumentException(Properties.Resources.VirtualWanReferenceNeededForVirtualHub);
128144
}
129145

146+
PSVirtualWan resolvedVirtualWan = new VirtualWanBaseCmdlet().GetVirtualWan(virtualWanRGName, virtualWanName);
147+
130148

131149
ConfirmAction(
132150
Properties.Resources.CreatingResourceMessage,
133151
Name,
134152
() =>
135153
{
136154
WriteVerbose(String.Format(Properties.Resources.CreatingLongRunningOperationMessage, this.ResourceGroupName, this.Name));
137-
PSVirtualRouter virtualRouter = new PSVirtualRouter
155+
PSVirtualHub virtualHub = new PSVirtualHub
138156
{
139157
ResourceGroupName = this.ResourceGroupName,
140158
Name = this.Name,
141-
HostedGateway = new PSResourceId() { Id = hostedGatewayId },
142-
Location = this.Location,
143-
VirtualRouterAsn = GatewayAsn
159+
VirtualWan = new PSResourceId() { Id = resolvedVirtualWan.Id },
160+
AddressPrefix = this.AddressPrefix,
161+
Location = this.Location
144162
};
145163

146-
var vVirtualRouterModel = NetworkResourceManagerProfile.Mapper.Map<MNM.VirtualRouter>(virtualRouter);
147-
vVirtualRouterModel.Tags = TagsConversionHelper.CreateTagDictionary(this.Tag, validate: true);
164+
virtualHub.IpConfigurations.Add((PSSubnet)new PSResourceId() { Id = this.HostedSubnet });
165+
166+
var vVirtualHubModel = NetworkResourceManagerProfile.Mapper.Map<MNM.VirtualHub>(virtualHub);
167+
vVirtualHubModel.Tags = TagsConversionHelper.CreateTagDictionary(this.Tag, validate: true);
148168

149-
this.NetworkClient.NetworkManagementClient.VirtualRouters.CreateOrUpdate(this.ResourceGroupName, this.Name, vVirtualRouterModel);
150-
var getVirtualRouter = this.NetworkClient.NetworkManagementClient.VirtualRouters.Get(this.ResourceGroupName, this.Name);
151-
var psVirtualRouter = NetworkResourceManagerProfile.Mapper.Map<PSVirtualRouter>(getVirtualRouter);
169+
this.NetworkClient.NetworkManagementClient.VirtualHubs.CreateOrUpdate(this.ResourceGroupName, this.Name, vVirtualHubModel);
170+
var getVirtualHub = this.NetworkClient.NetworkManagementClient.VirtualHubs.Get(this.ResourceGroupName, this.Name);
171+
var psVirtualRouter = NetworkResourceManagerProfile.Mapper.Map<PSVirtualRouter>(getVirtualHub);
152172
psVirtualRouter.ResourceGroupName = this.ResourceGroupName;
153-
psVirtualRouter.Tag = TagsConversionHelper.CreateTagHashtable(getVirtualRouter.Tags);
173+
psVirtualRouter.Tag = TagsConversionHelper.CreateTagHashtable(getVirtualHub.Tags);
154174
WriteObject(psVirtualRouter, true);
155175
});
156176

src/Network/Network/VirtualRouter/RemoveAzureRMVirtualRouterCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public override void Execute()
9898
this.RouterName,
9999
() =>
100100
{
101-
this.NetworkClient.NetworkManagementClient.VirtualRouters.Delete(ResourceGroupName, RouterName);
101+
this.NetworkClient.NetworkManagementClient.VirtualHubs.Delete(ResourceGroupName, RouterName);
102102
if (PassThru)
103103
{
104104
WriteObject(true);

src/Network/Network/VirtualRouter/VirtualRouterBaseCmdlet.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,23 @@ namespace Microsoft.Azure.Commands.Network
2020
{
2121
public class VirtualRouterBaseCmdlet : NetworkBaseCmdlet
2222
{
23-
// Gateway ASN which gets populated for VirtualRouter as VR resides inside GW
23+
// Gateway ASN which gets populated for VirtualHub as VR resides inside GW
2424
public const int GatewayAsn = 65515;
2525

26-
public void AddPeeringsToPSVirtualRouter (VirtualRouter vVirtualRouter,
27-
CNM.PSVirtualRouter vVirtualRouterModel,
26+
public void AddBgpConnectionsToPSVirtualHub (VirtualHub vVirtualHub,
27+
CNM.PSVirtualHub vVirtualHubModel,
2828
string resourceGroupName,
2929
string routerName)
3030
{
31-
if (vVirtualRouter.Peerings != null && vVirtualRouter.Peerings.Count > 0)
31+
if (vVirtualHubModel.BgpConnections != null && vVirtualHubModel.BgpConnections.Count > 0)
3232
{
33-
var vVirtualRouterPeering = this.NetworkClient.NetworkManagementClient.VirtualRouterPeerings.List(resourceGroupName, routerName);
34-
var vVirtualRouterPeeringList = ListNextLink<VirtualRouterPeering>.GetAllResourcesByPollingNextLink(vVirtualRouterPeering, this.NetworkClient.NetworkManagementClient.VirtualRouterPeerings.ListNext);
35-
foreach (var peering in vVirtualRouterPeeringList)
36-
{
37-
vVirtualRouterModel.Peerings.Add(NetworkResourceManagerProfile.Mapper.Map<CNM.PSVirtualRouterPeer>(peering));
33+
var bgpConnections = this.NetworkClient.NetworkManagementClient.VirtualHubBgpConnections.List(this.ResourceGroupName, this.VirtualRouterName);
34+
var bgpConnectionList = ListNextLink<BgpConnection>.GetAllResourcesByPollingNextLink(bgpConnections, this.NetworkClient.NetworkManagementClient.VirtualHubBgpConnections.ListNext);
35+
foreach (var connection in bgpConnectionList)
36+
{
37+
vVirtualHubModel.BgpConnections.Add(NetworkResourceManagerProfile.Mapper.Map<PSBgpConnection>(connection));
38+
}
3839
}
39-
}
4040
}
4141
}
4242
}

src/Network/Network/VirtualRouter/VirtualRouterParameterSetNames.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ namespace Microsoft.Azure.Commands.Network
1616
{
1717
internal static class VirtualRouterParameterSetNames
1818
{
19-
internal const string ByHostedGateway = "HostedGatewayParameterSet";
20-
internal const string ByHostedGatewayId = "HostedGatewayIdParameterSet";
2119
internal const string ByVirtualRouterResourceId = "VirtualRouterResourceIdParameterSet";
2220
internal const string ByVirtualRouterInputObject = "VirtualRouterInputObjectParameterSet";
2321
internal const string ByVirtualRouterName = "VirtualRouterNameParameterSet";
22+
internal const string ByVirtualWanObject = "ByVirtualWanObject";
2423
}
2524
}

0 commit comments

Comments
 (0)