28
28
29
29
namespace Microsoft . Azure . Commands . Network
30
30
{
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 ) ) ]
32
32
public partial class NewAzureRmVirtualRouter : VirtualRouterBaseCmdlet
33
33
{
34
34
[ Parameter (
@@ -49,18 +49,30 @@ public partial class NewAzureRmVirtualRouter : VirtualRouterBaseCmdlet
49
49
50
50
[ Parameter (
51
51
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 ; }
56
56
57
57
[ Parameter (
58
58
Mandatory = true ,
59
59
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 ; }
64
76
65
77
[ Parameter (
66
78
Mandatory = true ,
@@ -90,7 +102,7 @@ public override void Execute()
90
102
var present = true ;
91
103
try
92
104
{
93
- this . NetworkClient . NetworkManagementClient . VirtualRouters . Get ( this . ResourceGroupName , this . Name ) ;
105
+ this . NetworkClient . NetworkManagementClient . VirtualHubs . Get ( this . ResourceGroupName , this . Name ) ;
94
106
}
95
107
catch ( Exception ex )
96
108
{
@@ -110,47 +122,55 @@ public override void Execute()
110
122
throw new PSArgumentException ( string . Format ( Properties . Resources . ResourceAlreadyPresentInResourceGroup , this . Name , this . ResourceGroupName ) ) ;
111
123
}
112
124
113
- string hostedGatewayId = null ;
125
+ string virtualWanRGName = null ;
126
+ string virtualWanName = null ;
114
127
115
128
//// Resolve the virtual wan
116
- if ( ParameterSetName . Equals ( VirtualRouterParameterSetNames . ByHostedGateway , StringComparison . OrdinalIgnoreCase ) )
129
+ if ( ParameterSetName . Equals ( CortexParameterSetNames . ByVirtualWanObject , StringComparison . OrdinalIgnoreCase ) )
117
130
{
118
- hostedGatewayId = this . HostedGateway . Id ;
131
+ virtualWanRGName = this . VirtualWan . ResourceGroupName ;
132
+ virtualWanName = this . VirtualWan . Name ;
119
133
}
120
- else if ( ParameterSetName . Equals ( VirtualRouterParameterSetNames . ByHostedGatewayId , StringComparison . OrdinalIgnoreCase ) )
134
+ else if ( ParameterSetName . Equals ( CortexParameterSetNames . ByVirtualWanResourceId , StringComparison . OrdinalIgnoreCase ) )
121
135
{
122
- hostedGatewayId = this . HostedGatewayId ;
136
+ var parsedWanResourceId = new ResourceIdentifier ( this . VirtualWanId ) ;
137
+ virtualWanName = parsedWanResourceId . ResourceName ;
138
+ virtualWanRGName = parsedWanResourceId . ResourceGroupName ;
123
139
}
124
140
125
- if ( string . IsNullOrWhiteSpace ( hostedGatewayId ) )
141
+ if ( string . IsNullOrWhiteSpace ( virtualWanRGName ) || string . IsNullOrWhiteSpace ( virtualWanName ) )
126
142
{
127
- throw new PSArgumentException ( Properties . Resources . VirtualGatewayRequiredForVirtualRouter ) ;
143
+ throw new PSArgumentException ( Properties . Resources . VirtualWanReferenceNeededForVirtualHub ) ;
128
144
}
129
145
146
+ PSVirtualWan resolvedVirtualWan = new VirtualWanBaseCmdlet ( ) . GetVirtualWan ( virtualWanRGName , virtualWanName ) ;
147
+
130
148
131
149
ConfirmAction (
132
150
Properties . Resources . CreatingResourceMessage ,
133
151
Name ,
134
152
( ) =>
135
153
{
136
154
WriteVerbose ( String . Format ( Properties . Resources . CreatingLongRunningOperationMessage , this . ResourceGroupName , this . Name ) ) ;
137
- PSVirtualRouter virtualRouter = new PSVirtualRouter
155
+ PSVirtualHub virtualHub = new PSVirtualHub
138
156
{
139
157
ResourceGroupName = this . ResourceGroupName ,
140
158
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
144
162
} ;
145
163
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 ) ;
148
168
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 ) ;
152
172
psVirtualRouter . ResourceGroupName = this . ResourceGroupName ;
153
- psVirtualRouter . Tag = TagsConversionHelper . CreateTagHashtable ( getVirtualRouter . Tags ) ;
173
+ psVirtualRouter . Tag = TagsConversionHelper . CreateTagHashtable ( getVirtualHub . Tags ) ;
154
174
WriteObject ( psVirtualRouter , true ) ;
155
175
} ) ;
156
176
0 commit comments