@@ -1423,6 +1423,113 @@ def test_server_create_with_network(self):
14231423 self .assertEqual (self .columns , columns )
14241424 self .assertEqual (self .datalist (), data )
14251425
1426+ def test_server_create_with_network_tag (self ):
1427+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
1428+ '2.43' )
1429+
1430+ arglist = [
1431+ '--image' , 'image1' ,
1432+ '--flavor' , 'flavor1' ,
1433+ '--nic' , 'net-id=net1,tag=foo' ,
1434+ self .new_server .name ,
1435+ ]
1436+ verifylist = [
1437+ ('image' , 'image1' ),
1438+ ('flavor' , 'flavor1' ),
1439+ ('nics' , [
1440+ {
1441+ 'net-id' : 'net1' , 'port-id' : '' ,
1442+ 'v4-fixed-ip' : '' , 'v6-fixed-ip' : '' ,
1443+ 'tag' : 'foo' ,
1444+ },
1445+ ]),
1446+ ('server_name' , self .new_server .name ),
1447+ ]
1448+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1449+
1450+ find_network = mock .Mock ()
1451+ network_client = self .app .client_manager .network
1452+ network_client .find_network = find_network
1453+ network_resource = mock .Mock (id = 'net1_uuid' )
1454+ find_network .return_value = network_resource
1455+
1456+ # Mock sdk APIs.
1457+ _network = mock .Mock (id = 'net1_uuid' )
1458+ find_network = mock .Mock ()
1459+ find_network .return_value = _network
1460+ self .app .client_manager .network .find_network = find_network
1461+
1462+ # In base command class ShowOne in cliff, abstract method take_action()
1463+ # returns a two-part tuple with a tuple of column names and a tuple of
1464+ # data to be shown.
1465+ columns , data = self .cmd .take_action (parsed_args )
1466+
1467+ # Set expected values
1468+ kwargs = dict (
1469+ meta = None ,
1470+ files = {},
1471+ reservation_id = None ,
1472+ min_count = 1 ,
1473+ max_count = 1 ,
1474+ security_groups = [],
1475+ userdata = None ,
1476+ key_name = None ,
1477+ availability_zone = None ,
1478+ admin_pass = None ,
1479+ block_device_mapping_v2 = [],
1480+ nics = [
1481+ {
1482+ 'net-id' : 'net1_uuid' ,
1483+ 'v4-fixed-ip' : '' ,
1484+ 'v6-fixed-ip' : '' ,
1485+ 'port-id' : '' ,
1486+ 'tag' : 'foo' ,
1487+ },
1488+ ],
1489+ scheduler_hints = {},
1490+ config_drive = None ,
1491+ )
1492+ # ServerManager.create(name, image, flavor, **kwargs)
1493+ self .servers_mock .create .assert_called_with (
1494+ self .new_server .name ,
1495+ self .image ,
1496+ self .flavor ,
1497+ ** kwargs
1498+ )
1499+
1500+ self .assertEqual (self .columns , columns )
1501+ self .assertEqual (self .datalist (), data )
1502+
1503+ network_client .find_network .assert_called_once ()
1504+ self .app .client_manager .network .find_network .assert_called_once ()
1505+
1506+ def test_server_create_with_network_tag_pre_v243 (self ):
1507+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
1508+ '2.42' )
1509+
1510+ arglist = [
1511+ '--image' , 'image1' ,
1512+ '--flavor' , 'flavor1' ,
1513+ '--nic' , 'net-id=net1,tag=foo' ,
1514+ self .new_server .name ,
1515+ ]
1516+ verifylist = [
1517+ ('image' , 'image1' ),
1518+ ('flavor' , 'flavor1' ),
1519+ ('nics' , [
1520+ {
1521+ 'net-id' : 'net1' , 'port-id' : '' ,
1522+ 'v4-fixed-ip' : '' , 'v6-fixed-ip' : '' ,
1523+ 'tag' : 'foo' ,
1524+ },
1525+ ]),
1526+ ('server_name' , self .new_server .name ),
1527+ ]
1528+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1529+
1530+ self .assertRaises (
1531+ exceptions .CommandError , self .cmd .take_action , parsed_args )
1532+
14261533 def test_server_create_with_auto_network (self ):
14271534 arglist = [
14281535 '--image' , 'image1' ,
0 commit comments