@@ -467,6 +467,152 @@ def test_server_create_with_network(self):
467467 self .assertEqual (self .columns , columns )
468468 self .assertEqual (self .datalist (), data )
469469
470+ def test_server_create_with_auto_network (self ):
471+ arglist = [
472+ '--image' , 'image1' ,
473+ '--flavor' , 'flavor1' ,
474+ '--nic' , 'auto' ,
475+ self .new_server .name ,
476+ ]
477+ verifylist = [
478+ ('image' , 'image1' ),
479+ ('flavor' , 'flavor1' ),
480+ ('nic' , ['auto' ]),
481+ ('config_drive' , False ),
482+ ('server_name' , self .new_server .name ),
483+ ]
484+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
485+
486+ columns , data = self .cmd .take_action (parsed_args )
487+
488+ # Set expected values
489+ kwargs = dict (
490+ meta = None ,
491+ files = {},
492+ reservation_id = None ,
493+ min_count = 1 ,
494+ max_count = 1 ,
495+ security_groups = [],
496+ userdata = None ,
497+ key_name = None ,
498+ availability_zone = None ,
499+ block_device_mapping_v2 = [],
500+ nics = 'auto' ,
501+ scheduler_hints = {},
502+ config_drive = None ,
503+ )
504+ # ServerManager.create(name, image, flavor, **kwargs)
505+ self .servers_mock .create .assert_called_with (
506+ self .new_server .name ,
507+ self .image ,
508+ self .flavor ,
509+ ** kwargs
510+ )
511+
512+ self .assertEqual (self .columns , columns )
513+ self .assertEqual (self .datalist (), data )
514+
515+ def test_server_create_with_none_network (self ):
516+ arglist = [
517+ '--image' , 'image1' ,
518+ '--flavor' , 'flavor1' ,
519+ '--nic' , 'none' ,
520+ self .new_server .name ,
521+ ]
522+ verifylist = [
523+ ('image' , 'image1' ),
524+ ('flavor' , 'flavor1' ),
525+ ('nic' , ['none' ]),
526+ ('config_drive' , False ),
527+ ('server_name' , self .new_server .name ),
528+ ]
529+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
530+
531+ columns , data = self .cmd .take_action (parsed_args )
532+
533+ # Set expected values
534+ kwargs = dict (
535+ meta = None ,
536+ files = {},
537+ reservation_id = None ,
538+ min_count = 1 ,
539+ max_count = 1 ,
540+ security_groups = [],
541+ userdata = None ,
542+ key_name = None ,
543+ availability_zone = None ,
544+ block_device_mapping_v2 = [],
545+ nics = 'none' ,
546+ scheduler_hints = {},
547+ config_drive = None ,
548+ )
549+ # ServerManager.create(name, image, flavor, **kwargs)
550+ self .servers_mock .create .assert_called_with (
551+ self .new_server .name ,
552+ self .image ,
553+ self .flavor ,
554+ ** kwargs
555+ )
556+
557+ self .assertEqual (self .columns , columns )
558+ self .assertEqual (self .datalist (), data )
559+
560+ def test_server_create_with_conflict_network_options (self ):
561+ arglist = [
562+ '--image' , 'image1' ,
563+ '--flavor' , 'flavor1' ,
564+ '--nic' , 'none' ,
565+ '--nic' , 'auto' ,
566+ '--nic' , 'port-id=port1' ,
567+ self .new_server .name ,
568+ ]
569+ verifylist = [
570+ ('image' , 'image1' ),
571+ ('flavor' , 'flavor1' ),
572+ ('nic' , ['none' , 'auto' , 'port-id=port1' ]),
573+ ('config_drive' , False ),
574+ ('server_name' , self .new_server .name ),
575+ ]
576+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
577+
578+ get_endpoints = mock .Mock ()
579+ get_endpoints .return_value = {'network' : []}
580+ self .app .client_manager .auth_ref = mock .Mock ()
581+ self .app .client_manager .auth_ref .service_catalog = mock .Mock ()
582+ self .app .client_manager .auth_ref .service_catalog .get_endpoints = (
583+ get_endpoints )
584+
585+ find_port = mock .Mock ()
586+ network_client = self .app .client_manager .network
587+ network_client .find_port = find_port
588+ port_resource = mock .Mock ()
589+ port_resource .id = 'port1_uuid'
590+ find_port .return_value = port_resource
591+
592+ self .assertRaises (exceptions .CommandError ,
593+ self .cmd .take_action , parsed_args )
594+ self .assertNotCalled (self .servers_mock .create )
595+
596+ def test_server_create_with_invalid_network_options (self ):
597+ arglist = [
598+ '--image' , 'image1' ,
599+ '--flavor' , 'flavor1' ,
600+ '--nic' , 'abcdefgh' ,
601+ self .new_server .name ,
602+ ]
603+ verifylist = [
604+ ('image' , 'image1' ),
605+ ('flavor' , 'flavor1' ),
606+ ('nic' , ['abcdefgh' ]),
607+ ('config_drive' , False ),
608+ ('server_name' , self .new_server .name ),
609+ ]
610+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
611+
612+ self .assertRaises (exceptions .CommandError ,
613+ self .cmd .take_action , parsed_args )
614+ self .assertNotCalled (self .servers_mock .create )
615+
470616 @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
471617 def test_server_create_with_wait_ok (self , mock_wait_for_status ):
472618 arglist = [
0 commit comments