@@ -217,104 +217,104 @@ def setUp(self):
217217 # Get the command object to test
218218 self .cmd = server .AddFixedIP (self .app , None )
219219
220+ # Mock network methods
221+ self .find_network = mock .Mock ()
222+ self .app .client_manager .network .find_network = self .find_network
223+
220224 # Set add_fixed_ip method to be tested.
221225 self .methods = {
222226 'interface_attach' : None ,
223227 }
224228
225- def _test_server_add_fixed_ip (self , extralist , fixed_ip_address ):
226- servers = self .setup_servers_mock (count = 1 )
229+ @mock .patch .object (sdk_utils , 'supports_microversion' )
230+ def test_server_add_fixed_ip_pre_2_44 (self , sm_mock ):
231+ sm_mock .return_value = False
232+
233+ servers = self .setup_sdk_servers_mock (count = 1 )
227234 network = compute_fakes .FakeNetwork .create_one_network ()
228- with mock .patch (
229- 'openstackclient.api.compute_v2.APIv2.network_find'
230- ) as net_mock :
231- net_mock .return_value = network
232235
236+ with mock .patch .object (
237+ self .app .client_manager ,
238+ 'is_network_endpoint_enabled' ,
239+ return_value = False
240+ ):
233241 arglist = [
234242 servers [0 ].id ,
235243 network ['id' ],
236- ] + extralist
244+ ]
237245 verifylist = [
238246 ('server' , servers [0 ].id ),
239247 ('network' , network ['id' ]),
240- ('fixed_ip_address' , fixed_ip_address ),
248+ ('fixed_ip_address' , None ),
241249 ]
242250 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
243251
244252 result = self .cmd .take_action (parsed_args )
245253
246- servers [0 ].interface_attach .assert_called_once_with (
247- port_id = None ,
248- net_id = network ['id' ],
249- fixed_ip = fixed_ip_address ,
254+ self .sdk_client .add_fixed_ip_to_server .assert_called_once_with (
255+ servers [0 ].id ,
256+ network ['id' ]
250257 )
251258 self .assertIsNone (result )
252259
253- def test_server_add_fixed_ip (self ):
254- self ._test_server_add_fixed_ip ([], None )
255-
256- def test_server_add_specific_fixed_ip (self ):
257- extralist = ['--fixed-ip-address' , '5.6.7.8' ]
258- self ._test_server_add_fixed_ip (extralist , '5.6.7.8' )
259-
260- def test_server_add_fixed_ip_with_tag (self ):
261- self .app .client_manager .compute .api_version = api_versions .APIVersion (
262- '2.49' )
260+ @mock .patch .object (sdk_utils , 'supports_microversion' )
261+ def test_server_add_fixed_ip_pre_2_44_with_fixed_ip (self , sm_mock ):
262+ sm_mock .return_value = False
263263
264- servers = self .setup_servers_mock (count = 1 )
264+ servers = self .setup_sdk_servers_mock (count = 1 )
265265 network = compute_fakes .FakeNetwork .create_one_network ()
266- with mock .patch (
267- 'openstackclient.api.compute_v2.APIv2.network_find'
268- ) as net_mock :
269- net_mock .return_value = network
270266
267+ with mock .patch .object (
268+ self .app .client_manager ,
269+ 'is_network_endpoint_enabled' ,
270+ return_value = False
271+ ):
271272 arglist = [
272273 servers [0 ].id ,
273274 network ['id' ],
274- '--fixed-ip-address' , '5.6.7.8' ,
275- '--tag' , 'tag1' ,
275+ '--fixed-ip-address' , '5.6.7.8'
276276 ]
277277 verifylist = [
278278 ('server' , servers [0 ].id ),
279279 ('network' , network ['id' ]),
280280 ('fixed_ip_address' , '5.6.7.8' ),
281- ('tag' , 'tag1' ),
282281 ]
283282 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
283+
284284 result = self .cmd .take_action (parsed_args )
285285
286- servers [0 ].interface_attach .assert_called_once_with (
287- port_id = None ,
288- net_id = network ['id' ],
289- fixed_ip = '5.6.7.8' ,
290- tag = 'tag1'
286+ self .sdk_client .add_fixed_ip_to_server .assert_called_once_with (
287+ servers [0 ].id ,
288+ network ['id' ]
291289 )
292290 self .assertIsNone (result )
293291
294- def test_server_add_fixed_ip_with_tag_pre_v249 ( self ):
295- self . app . client_manager . compute . api_version = api_versions . APIVersion (
296- '2.48' )
292+ @ mock . patch . object ( sdk_utils , 'supports_microversion' )
293+ def test_server_add_fixed_ip_pre_2_44_with_tag ( self , sm_mock ):
294+ sm_mock . return_value = False
297295
298- servers = self .setup_servers_mock (count = 1 )
296+ servers = self .setup_sdk_servers_mock (count = 1 )
299297 network = compute_fakes .FakeNetwork .create_one_network ()
300- with mock .patch (
301- 'openstackclient.api.compute_v2.APIv2.network_find'
302- ) as net_mock :
303- net_mock .return_value = network
304298
299+ with mock .patch .object (
300+ self .app .client_manager ,
301+ 'is_network_endpoint_enabled' ,
302+ return_value = False
303+ ):
305304 arglist = [
306305 servers [0 ].id ,
307306 network ['id' ],
308307 '--fixed-ip-address' , '5.6.7.8' ,
309- '--tag' , 'tag1' ,
308+ '--tag' , 'tag1'
310309 ]
311310 verifylist = [
312311 ('server' , servers [0 ].id ),
313312 ('network' , network ['id' ]),
314313 ('fixed_ip_address' , '5.6.7.8' ),
315- ('tag' , 'tag1' ),
314+ ('tag' , 'tag1' )
316315 ]
317316 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
317+
318318 ex = self .assertRaises (
319319 exceptions .CommandError ,
320320 self .cmd .take_action ,
@@ -323,6 +323,140 @@ def test_server_add_fixed_ip_with_tag_pre_v249(self):
323323 '--os-compute-api-version 2.49 or greater is required' ,
324324 str (ex ))
325325
326+ @mock .patch .object (sdk_utils , 'supports_microversion' )
327+ def test_server_add_fixed_ip_pre_2_49_with_tag (self , sm_mock ):
328+ sm_mock .side_effect = [False , True ]
329+
330+ servers = self .setup_sdk_servers_mock (count = 1 )
331+ network = compute_fakes .FakeNetwork .create_one_network ()
332+
333+ with mock .patch .object (
334+ self .app .client_manager ,
335+ 'is_network_endpoint_enabled' ,
336+ return_value = False
337+ ):
338+ arglist = [
339+ servers [0 ].id ,
340+ network ['id' ],
341+ '--fixed-ip-address' , '5.6.7.8' ,
342+ '--tag' , 'tag1'
343+ ]
344+ verifylist = [
345+ ('server' , servers [0 ].id ),
346+ ('network' , network ['id' ]),
347+ ('fixed_ip_address' , '5.6.7.8' ),
348+ ('tag' , 'tag1' )
349+ ]
350+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
351+
352+ ex = self .assertRaises (
353+ exceptions .CommandError ,
354+ self .cmd .take_action ,
355+ parsed_args )
356+ self .assertIn (
357+ '--os-compute-api-version 2.49 or greater is required' ,
358+ str (ex ))
359+
360+ @mock .patch .object (sdk_utils , 'supports_microversion' )
361+ def test_server_add_fixed_ip_post_2_49 (self , sm_mock ):
362+ sm_mock .side_effect = [True , True ]
363+
364+ servers = self .setup_sdk_servers_mock (count = 1 )
365+ network = compute_fakes .FakeNetwork .create_one_network ()
366+
367+ with mock .patch .object (
368+ self .app .client_manager ,
369+ 'is_network_endpoint_enabled' ,
370+ return_value = False
371+ ):
372+ arglist = [
373+ servers [0 ].id ,
374+ network ['id' ]
375+ ]
376+ verifylist = [
377+ ('server' , servers [0 ].id ),
378+ ('network' , network ['id' ])
379+ ]
380+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
381+
382+ result = self .cmd .take_action (parsed_args )
383+
384+ self .sdk_client .create_server_interface .assert_called_once_with (
385+ servers [0 ].id ,
386+ net_id = network ['id' ],
387+ fixed_ip = None
388+ )
389+ self .assertIsNone (result )
390+
391+ @mock .patch .object (sdk_utils , 'supports_microversion' )
392+ def test_server_add_fixed_ip_post_2_49_with_fixedip (self , sm_mock ):
393+ sm_mock .side_effect = [True , True ]
394+
395+ servers = self .setup_sdk_servers_mock (count = 1 )
396+ network = compute_fakes .FakeNetwork .create_one_network ()
397+
398+ with mock .patch .object (
399+ self .app .client_manager ,
400+ 'is_network_endpoint_enabled' ,
401+ return_value = False
402+ ):
403+ arglist = [
404+ servers [0 ].id ,
405+ network ['id' ],
406+ '--fixed-ip-address' , '5.6.7.8'
407+ ]
408+ verifylist = [
409+ ('server' , servers [0 ].id ),
410+ ('network' , network ['id' ]),
411+ ('fixed_ip_address' , '5.6.7.8' )
412+ ]
413+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
414+
415+ result = self .cmd .take_action (parsed_args )
416+
417+ self .sdk_client .create_server_interface .assert_called_once_with (
418+ servers [0 ].id ,
419+ net_id = network ['id' ],
420+ fixed_ip = '5.6.7.8'
421+ )
422+ self .assertIsNone (result )
423+
424+ @mock .patch .object (sdk_utils , 'supports_microversion' )
425+ def test_server_add_fixed_ip_post_2_49_with_tag (self , sm_mock ):
426+ sm_mock .side_effect = [True , True ]
427+
428+ servers = self .setup_sdk_servers_mock (count = 1 )
429+ network = compute_fakes .FakeNetwork .create_one_network ()
430+
431+ with mock .patch .object (
432+ self .app .client_manager ,
433+ 'is_network_endpoint_enabled' ,
434+ return_value = False
435+ ):
436+ arglist = [
437+ servers [0 ].id ,
438+ network ['id' ],
439+ '--fixed-ip-address' , '5.6.7.8' ,
440+ '--tag' , 'tag1'
441+ ]
442+ verifylist = [
443+ ('server' , servers [0 ].id ),
444+ ('network' , network ['id' ]),
445+ ('fixed_ip_address' , '5.6.7.8' ),
446+ ('tag' , 'tag1' )
447+ ]
448+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
449+
450+ result = self .cmd .take_action (parsed_args )
451+
452+ self .sdk_client .create_server_interface .assert_called_once_with (
453+ servers [0 ].id ,
454+ net_id = network ['id' ],
455+ fixed_ip = '5.6.7.8' ,
456+ tag = 'tag1'
457+ )
458+ self .assertIsNone (result )
459+
326460
327461@mock .patch (
328462 'openstackclient.api.compute_v2.APIv2.floating_ip_add'
0 commit comments