@@ -23,7 +23,7 @@ namespace Microsoft.Azure.Commands.RecoveryServices
23
23
/// <summary>
24
24
/// Used to initiate a commit operation.
25
25
/// </summary>
26
- [ Cmdlet ( VerbsLifecycle . Start , "AzureSiteRecoveryTestFailoverJob" , DefaultParameterSetName = ASRParameterSets . ByRPObject ) ]
26
+ [ Cmdlet ( VerbsLifecycle . Start , "AzureSiteRecoveryTestFailoverJob" , DefaultParameterSetName = ASRParameterSets . ByPEId ) ]
27
27
[ OutputType ( typeof ( ASRJob ) ) ]
28
28
public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
29
29
{
@@ -47,28 +47,46 @@ public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
47
47
/// Gets or sets ID of the Recovery Plan.
48
48
/// </summary>
49
49
[ Parameter ( ParameterSetName = ASRParameterSets . ByRPId , Mandatory = true ) ]
50
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithLogicalNetworkID , Mandatory = true ) ]
51
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithVMNetworkID , Mandatory = true ) ]
52
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithVMNetwork , Mandatory = true ) ]
50
53
[ ValidateNotNullOrEmpty ]
51
54
public string RpId { get ; set ; }
52
55
53
56
/// <summary>
54
- /// Gets or sets ID of the Recovery Plan .
57
+ /// Gets or sets Network .
55
58
/// </summary>
59
+ [ Parameter ]
60
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithVMNetwork , Mandatory = true ) ]
61
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithVMNetwork , Mandatory = true ) ]
62
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithVMNetwork , Mandatory = true ) ]
63
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetwork , Mandatory = true ) ]
56
64
public ASRNetwork Network { get ; set ; }
57
65
66
+ /// <summary>
67
+ /// Gets or sets NetworkType.
68
+ /// </summary>
69
+ [ Parameter ( Mandatory = false ) ]
70
+ [ ValidateSet (
71
+ Constants . None ,
72
+ Constants . New ,
73
+ Constants . Existing ) ]
74
+ public string NetworkType { get ; set ; }
75
+
58
76
/// <summary>
59
77
/// Gets or sets Recovery Plan object.
60
78
/// </summary>
61
79
[ Parameter ( ParameterSetName = ASRParameterSets . ByRPObject , Mandatory = true , ValueFromPipeline = true ) ]
80
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithLogicalNetworkID , Mandatory = true ) ]
81
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithVMNetworkID , Mandatory = true ) ]
82
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithVMNetwork , Mandatory = true ) ]
62
83
[ ValidateNotNullOrEmpty ]
63
84
public ASRRecoveryPlan RecoveryPlan { get ; set ; }
64
85
65
86
/// <summary>
66
87
/// Gets or sets failover direction for the recovery plan.
67
88
/// </summary>
68
- [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObject , Mandatory = true ) ]
69
- [ Parameter ( ParameterSetName = ASRParameterSets . ByRPId , Mandatory = true ) ]
70
- [ Parameter ( ParameterSetName = ASRParameterSets . ByPEObject , Mandatory = true ) ]
71
- [ Parameter ( ParameterSetName = ASRParameterSets . ByPEId , Mandatory = true ) ]
89
+ [ Parameter ( Mandatory = true ) ]
72
90
[ ValidateSet (
73
91
Constants . PrimaryToRecovery ,
74
92
Constants . RecoveryToPrimary ) ]
@@ -80,6 +98,7 @@ public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
80
98
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEId , Mandatory = true ) ]
81
99
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithLogicalNetworkID , Mandatory = true ) ]
82
100
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetworkID , Mandatory = true ) ]
101
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetwork , Mandatory = true ) ]
83
102
[ ValidateNotNullOrEmpty ]
84
103
public string ProtectionEntityId { get ; set ; }
85
104
@@ -89,6 +108,7 @@ public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
89
108
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEId , Mandatory = true ) ]
90
109
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithLogicalNetworkID , Mandatory = true ) ]
91
110
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetworkID , Mandatory = true ) ]
111
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetwork , Mandatory = true ) ]
92
112
[ ValidateNotNullOrEmpty ]
93
113
public string ProtectionContainerId { get ; set ; }
94
114
@@ -98,6 +118,7 @@ public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
98
118
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEObject , Mandatory = true , ValueFromPipeline = true ) ]
99
119
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithLogicalNetworkID , Mandatory = true ) ]
100
120
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithVMNetworkID , Mandatory = true ) ]
121
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithVMNetwork , Mandatory = true ) ]
101
122
[ ValidateNotNullOrEmpty ]
102
123
public ASRProtectionEntity ProtectionEntity { get ; set ; }
103
124
@@ -112,13 +133,17 @@ public class StartAzureSiteRecoveryTestFailoverJob : RecoveryServicesCmdletBase
112
133
/// </summary>
113
134
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithLogicalNetworkID , Mandatory = true ) ]
114
135
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithLogicalNetworkID , Mandatory = true ) ]
136
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithLogicalNetworkID , Mandatory = true ) ]
137
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithLogicalNetworkID , Mandatory = true ) ]
115
138
public string LogicalNetworkId { get ; set ; }
116
139
117
140
/// <summary>
118
141
/// Gets or sets VM network ID.
119
142
/// </summary>
120
143
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEObjectWithVMNetworkID , Mandatory = true ) ]
121
144
[ Parameter ( ParameterSetName = ASRParameterSets . ByPEIdWithVMNetworkID , Mandatory = true ) ]
145
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPObjectWithVMNetworkID , Mandatory = true ) ]
146
+ [ Parameter ( ParameterSetName = ASRParameterSets . ByRPIdWithVMNetworkID , Mandatory = true ) ]
122
147
public string VmNetworkId { get ; set ; }
123
148
#endregion Parameters
124
149
@@ -129,13 +154,60 @@ public override void ExecuteCmdlet()
129
154
{
130
155
try
131
156
{
157
+ if ( this . NetworkType == null )
158
+ {
159
+ this . WriteWarning ( "'NetworkType' will be a mandatory paramter from next release." ) ;
160
+ }
161
+
162
+ if ( this . VmNetworkId != null )
163
+ {
164
+ this . WriteWarning ( "Call using 'NetworkId' parameter will not be supported from next release. Please use 'Network' parameter instead." ) ;
165
+ }
166
+
167
+ if ( this . NetworkType == Constants . Existing && ( this . Network == null && this . VmNetworkId == null ) )
168
+ {
169
+ throw new Exception ( "Existing Network details were not supplied." ) ;
170
+ }
171
+
132
172
switch ( this . ParameterSetName )
133
173
{
134
174
case ASRParameterSets . ByRPObject :
135
175
this . RpId = this . RecoveryPlan . ID ;
176
+ this . networkType = "DisconnectedVMNetworkTypeForTestFailover" ;
136
177
this . StartRpTestFailover ( ) ;
137
178
break ;
138
179
case ASRParameterSets . ByRPId :
180
+ this . networkType = "DisconnectedVMNetworkTypeForTestFailover" ;
181
+ this . StartRpTestFailover ( ) ;
182
+ break ;
183
+ case ASRParameterSets . ByRPObjectWithVMNetwork :
184
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
185
+ this . networkId = this . Network . ID ;
186
+ this . StartRpTestFailover ( ) ;
187
+ break ;
188
+ case ASRParameterSets . ByRPObjectWithVMNetworkID :
189
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
190
+ this . networkId = this . VmNetworkId ;
191
+ this . StartRpTestFailover ( ) ;
192
+ break ;
193
+ case ASRParameterSets . ByRPIdWithVMNetwork :
194
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
195
+ this . networkId = this . Network . ID ;
196
+ this . StartRpTestFailover ( ) ;
197
+ break ;
198
+ case ASRParameterSets . ByRPIdWithVMNetworkID :
199
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
200
+ this . networkId = this . VmNetworkId ;
201
+ this . StartRpTestFailover ( ) ;
202
+ break ;
203
+ case ASRParameterSets . ByRPIdWithLogicalNetworkID :
204
+ this . networkType = "CreateVMNetworkTypeForTestFailover" ;
205
+ this . networkId = this . LogicalNetworkId ;
206
+ this . StartRpTestFailover ( ) ;
207
+ break ;
208
+ case ASRParameterSets . ByRPObjectWithLogicalNetworkID :
209
+ this . networkType = "CreateVMNetworkTypeForTestFailover" ;
210
+ this . networkId = this . LogicalNetworkId ;
139
211
this . StartRpTestFailover ( ) ;
140
212
break ;
141
213
case ASRParameterSets . ByPEObject :
@@ -152,7 +224,13 @@ public override void ExecuteCmdlet()
152
224
this . networkId = this . VmNetworkId ;
153
225
this . UpdateRequiredParametersAndStartFailover ( ) ;
154
226
break ;
227
+ case ASRParameterSets . ByPEObjectWithVMNetwork :
228
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
229
+ this . networkId = this . Network . ID ;
230
+ this . UpdateRequiredParametersAndStartFailover ( ) ;
231
+ break ;
155
232
case ASRParameterSets . ByPEId :
233
+ this . networkType = "DisconnectedVMNetworkTypeForTestFailover" ;
156
234
this . StartPETestFailover ( ) ;
157
235
break ;
158
236
case ASRParameterSets . ByPEIdWithLogicalNetworkID :
@@ -165,6 +243,11 @@ public override void ExecuteCmdlet()
165
243
this . networkId = this . VmNetworkId ;
166
244
this . StartPETestFailover ( ) ;
167
245
break ;
246
+ case ASRParameterSets . ByPEIdWithVMNetwork :
247
+ this . networkType = "UseVMNetworkTypeForTestFailover" ;
248
+ this . networkId = this . Network . ID ;
249
+ this . StartPETestFailover ( ) ;
250
+ break ;
168
251
}
169
252
}
170
253
catch ( Exception exception )
@@ -180,20 +263,6 @@ private void StartRpTestFailover()
180
263
{
181
264
RpTestFailoverRequest request = new RpTestFailoverRequest ( ) ;
182
265
183
- if ( this . Network != null )
184
- {
185
- request . NetworkID = this . Network . ID ;
186
- request . NetworkType = "UseVMNetworkTypeForTestFailover" ;
187
- }
188
- else
189
- {
190
- request . NetworkID = this . networkId ;
191
- if ( string . IsNullOrEmpty ( this . networkType ) )
192
- {
193
- request . NetworkType = "DisconnectedVMNetworkTypeForTestFailover" ;
194
- }
195
- }
196
-
197
266
if ( this . RecoveryPlan == null )
198
267
{
199
268
var rp = RecoveryServicesClient . GetAzureSiteRecoveryRecoveryPlan (
@@ -215,6 +284,9 @@ private void StartRpTestFailover()
215
284
}
216
285
}
217
286
287
+ request . NetworkID = this . networkId ;
288
+ request . NetworkType = this . networkType ;
289
+
218
290
request . ReplicationProvider = this . RecoveryPlan . ReplicationProvider ;
219
291
request . FailoverDirection = this . Direction ;
220
292
@@ -262,17 +334,7 @@ private void StartPETestFailover()
262
334
request . ReplicationProvider = this . ProtectionEntity . ReplicationProvider ;
263
335
request . FailoverDirection = this . Direction ;
264
336
265
- if ( this . Network != null )
266
- {
267
- request . NetworkID = this . Network . ID ;
268
- this . networkType = "UseVMNetworkTypeForTestFailover" ;
269
- }
270
- else
271
- {
272
- request . NetworkID = this . networkId ;
273
- }
274
-
275
- request . FailoverDirection = this . Direction ;
337
+ request . NetworkID = this . networkId ;
276
338
request . NetworkType = this . networkType ;
277
339
278
340
this . jobResponse =
0 commit comments