2424from openstackclient .compute .v2 import server
2525from openstackclient .tests .unit .compute .v2 import fakes as compute_fakes
2626from openstackclient .tests .unit .image .v2 import fakes as image_fakes
27+ from openstackclient .tests .unit .network .v2 import fakes as network_fakes
2728from openstackclient .tests .unit import utils
2829from openstackclient .tests .unit .volume .v2 import fakes as volume_fakes
2930
@@ -414,16 +415,24 @@ def test_server_create_with_options(self):
414415 # In base command class ShowOne in cliff, abstract method take_action()
415416 # returns a two-part tuple with a tuple of column names and a tuple of
416417 # data to be shown.
418+ fake_sg = network_fakes .FakeSecurityGroup .create_security_groups ()
419+ mock_find_sg = (
420+ network_fakes .FakeSecurityGroup .get_security_groups (fake_sg )
421+ )
422+ self .app .client_manager .network .find_security_group = mock_find_sg
423+
417424 columns , data = self .cmd .take_action (parsed_args )
418425
426+ mock_find_sg .assert_called_once_with ('securitygroup' ,
427+ ignore_missing = False )
419428 # Set expected values
420429 kwargs = dict (
421430 meta = {'Beta' : 'b' },
422431 files = {},
423432 reservation_id = None ,
424433 min_count = 1 ,
425434 max_count = 1 ,
426- security_groups = ['securitygroup' ],
435+ security_groups = [fake_sg [ 0 ]. id ],
427436 userdata = None ,
428437 key_name = 'keyname' ,
429438 availability_zone = None ,
@@ -443,6 +452,92 @@ def test_server_create_with_options(self):
443452 self .assertEqual (self .columns , columns )
444453 self .assertEqual (self .datalist (), data )
445454
455+ def test_server_create_with_not_exist_security_group (self ):
456+ arglist = [
457+ '--image' , 'image1' ,
458+ '--flavor' , 'flavor1' ,
459+ '--key-name' , 'keyname' ,
460+ '--security-group' , 'securitygroup' ,
461+ '--security-group' , 'not_exist_sg' ,
462+ self .new_server .name ,
463+ ]
464+ verifylist = [
465+ ('image' , 'image1' ),
466+ ('flavor' , 'flavor1' ),
467+ ('key_name' , 'keyname' ),
468+ ('security_group' , ['securitygroup' , 'not_exist_sg' ]),
469+ ('server_name' , self .new_server .name ),
470+ ]
471+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
472+
473+ fake_sg = network_fakes .FakeSecurityGroup .create_security_groups (
474+ count = 1 )
475+ fake_sg .append (exceptions .NotFound (code = 404 ))
476+ mock_find_sg = (
477+ network_fakes .FakeSecurityGroup .get_security_groups (fake_sg )
478+ )
479+ self .app .client_manager .network .find_security_group = mock_find_sg
480+
481+ self .assertRaises (exceptions .NotFound ,
482+ self .cmd .take_action ,
483+ parsed_args )
484+ mock_find_sg .assert_called_with ('not_exist_sg' ,
485+ ignore_missing = False )
486+
487+ def test_server_create_with_security_group_in_nova_network (self ):
488+ arglist = [
489+ '--image' , 'image1' ,
490+ '--flavor' , 'flavor1' ,
491+ '--key-name' , 'keyname' ,
492+ '--security-group' , 'securitygroup' ,
493+ self .new_server .name ,
494+ ]
495+ verifylist = [
496+ ('image' , 'image1' ),
497+ ('flavor' , 'flavor1' ),
498+ ('key_name' , 'keyname' ),
499+ ('security_group' , ['securitygroup' ]),
500+ ('server_name' , self .new_server .name ),
501+ ]
502+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
503+
504+ with mock .patch .object (self .app .client_manager ,
505+ 'is_network_endpoint_enabled' ,
506+ return_value = False ):
507+ with mock .patch .object (self .app .client_manager .compute .api ,
508+ 'security_group_find' ,
509+ return_value = {'name' : 'fake_sg' }
510+ ) as mock_find :
511+ columns , data = self .cmd .take_action (parsed_args )
512+ mock_find .assert_called_once_with ('securitygroup' )
513+
514+ # Set expected values
515+ kwargs = dict (
516+ meta = None ,
517+ files = {},
518+ reservation_id = None ,
519+ min_count = 1 ,
520+ max_count = 1 ,
521+ security_groups = ['fake_sg' ],
522+ userdata = None ,
523+ key_name = 'keyname' ,
524+ availability_zone = None ,
525+ block_device_mapping_v2 = [],
526+ nics = [],
527+ scheduler_hints = {},
528+ config_drive = None ,
529+ )
530+ # ServerManager.create(name, image, flavor, **kwargs)
531+ self .servers_mock .create .assert_called_with (
532+ self .new_server .name ,
533+ self .image ,
534+ self .flavor ,
535+ ** kwargs
536+ )
537+
538+ self .assertEqual (self .columns , columns )
539+ self .assertEqual (self .datalist (), data )
540+
446541 def test_server_create_with_network (self ):
447542 arglist = [
448543 '--image' , 'image1' ,
0 commit comments