@@ -1926,6 +1926,10 @@ def test_server_create_with_network_tag_pre_v243(self):
19261926 exceptions .CommandError , self .cmd .take_action , parsed_args )
19271927
19281928 def _test_server_create_with_auto_network (self , arglist ):
1929+ # requires API microversion 2.37 or later
1930+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
1931+ '2.37' )
1932+
19291933 verifylist = [
19301934 ('image' , 'image1' ),
19311935 ('flavor' , 'flavor1' ),
@@ -1986,8 +1990,45 @@ def test_server_create_with_auto_network(self):
19861990 ]
19871991 self ._test_server_create_with_auto_network (arglist )
19881992
1993+ def test_server_create_with_auto_network_pre_v237 (self ):
1994+ # use an API microversion that's too old
1995+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
1996+ '2.36' )
1997+
1998+ arglist = [
1999+ '--image' , 'image1' ,
2000+ '--flavor' , 'flavor1' ,
2001+ '--nic' , 'auto' ,
2002+ self .new_server .name ,
2003+ ]
2004+ verifylist = [
2005+ ('image' , 'image1' ),
2006+ ('flavor' , 'flavor1' ),
2007+ ('nics' , ['auto' ]),
2008+ ('config_drive' , False ),
2009+ ('server_name' , self .new_server .name ),
2010+ ]
2011+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2012+
2013+ exc = self .assertRaises (
2014+ exceptions .CommandError ,
2015+ self .cmd .take_action ,
2016+ parsed_args ,
2017+ )
2018+ self .assertIn (
2019+ '--os-compute-api-version 2.37 or greater is required to support '
2020+ 'explicit auto-allocation of a network or to disable network '
2021+ 'allocation' ,
2022+ str (exc ),
2023+ )
2024+ self .assertNotCalled (self .servers_mock .create )
2025+
19892026 def test_server_create_with_auto_network_default_v2_37 (self ):
19902027 """Tests creating a server without specifying --nic using 2.37."""
2028+ # requires API microversion 2.37 or later
2029+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
2030+ '2.37' )
2031+
19912032 arglist = [
19922033 '--image' , 'image1' ,
19932034 '--flavor' , 'flavor1' ,
@@ -2001,12 +2042,7 @@ def test_server_create_with_auto_network_default_v2_37(self):
20012042 ]
20022043 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
20032044
2004- # Since check_parser doesn't handle compute global options like
2005- # --os-compute-api-version, we have to mock the construction of
2006- # the novaclient client object with our own APIVersion.
2007- with mock .patch .object (self .app .client_manager .compute , 'api_version' ,
2008- api_versions .APIVersion ('2.37' )):
2009- columns , data = self .cmd .take_action (parsed_args )
2045+ columns , data = self .cmd .take_action (parsed_args )
20102046
20112047 # Set expected values
20122048 kwargs = dict (
@@ -2037,6 +2073,10 @@ def test_server_create_with_auto_network_default_v2_37(self):
20372073 self .assertEqual (self .datalist (), data )
20382074
20392075 def _test_server_create_with_none_network (self , arglist ):
2076+ # requires API microversion 2.37 or later
2077+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
2078+ '2.37' )
2079+
20402080 verifylist = [
20412081 ('image' , 'image1' ),
20422082 ('flavor' , 'flavor1' ),
@@ -2097,6 +2137,40 @@ def test_server_create_with_none_network(self):
20972137 ]
20982138 self ._test_server_create_with_none_network (arglist )
20992139
2140+ def test_server_create_with_none_network_pre_v237 (self ):
2141+ # use an API microversion that's too old
2142+ self .app .client_manager .compute .api_version = api_versions .APIVersion (
2143+ '2.36' )
2144+
2145+ arglist = [
2146+ '--image' , 'image1' ,
2147+ '--flavor' , 'flavor1' ,
2148+ '--nic' , 'none' ,
2149+ self .new_server .name ,
2150+ ]
2151+
2152+ verifylist = [
2153+ ('image' , 'image1' ),
2154+ ('flavor' , 'flavor1' ),
2155+ ('nics' , ['none' ]),
2156+ ('config_drive' , False ),
2157+ ('server_name' , self .new_server .name ),
2158+ ]
2159+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2160+
2161+ exc = self .assertRaises (
2162+ exceptions .CommandError ,
2163+ self .cmd .take_action ,
2164+ parsed_args ,
2165+ )
2166+ self .assertIn (
2167+ '--os-compute-api-version 2.37 or greater is required to support '
2168+ 'explicit auto-allocation of a network or to disable network '
2169+ 'allocation' ,
2170+ str (exc ),
2171+ )
2172+ self .assertNotCalled (self .servers_mock .create )
2173+
21002174 def test_server_create_with_conflict_network_options (self ):
21012175 arglist = [
21022176 '--image' , 'image1' ,
@@ -3227,13 +3301,11 @@ def test_server_create_image_property(self):
32273301 arglist = [
32283302 '--image-property' , 'hypervisor_type=qemu' ,
32293303 '--flavor' , 'flavor1' ,
3230- '--nic' , 'none' ,
32313304 self .new_server .name ,
32323305 ]
32333306 verifylist = [
32343307 ('image_properties' , {'hypervisor_type' : 'qemu' }),
32353308 ('flavor' , 'flavor1' ),
3236- ('nics' , ['none' ]),
32373309 ('config_drive' , False ),
32383310 ('server_name' , self .new_server .name ),
32393311 ]
@@ -3261,7 +3333,7 @@ def test_server_create_image_property(self):
32613333 availability_zone = None ,
32623334 admin_pass = None ,
32633335 block_device_mapping_v2 = [],
3264- nics = 'none' ,
3336+ nics = [] ,
32653337 meta = None ,
32663338 scheduler_hints = {},
32673339 config_drive = None ,
@@ -3282,14 +3354,12 @@ def test_server_create_image_property_multi(self):
32823354 '--image-property' , 'hypervisor_type=qemu' ,
32833355 '--image-property' , 'hw_disk_bus=ide' ,
32843356 '--flavor' , 'flavor1' ,
3285- '--nic' , 'none' ,
32863357 self .new_server .name ,
32873358 ]
32883359 verifylist = [
32893360 ('image_properties' , {'hypervisor_type' : 'qemu' ,
32903361 'hw_disk_bus' : 'ide' }),
32913362 ('flavor' , 'flavor1' ),
3292- ('nics' , ['none' ]),
32933363 ('config_drive' , False ),
32943364 ('server_name' , self .new_server .name ),
32953365 ]
@@ -3317,7 +3387,7 @@ def test_server_create_image_property_multi(self):
33173387 availability_zone = None ,
33183388 admin_pass = None ,
33193389 block_device_mapping_v2 = [],
3320- nics = 'none' ,
3390+ nics = [] ,
33213391 meta = None ,
33223392 scheduler_hints = {},
33233393 config_drive = None ,
@@ -3338,14 +3408,12 @@ def test_server_create_image_property_missed(self):
33383408 '--image-property' , 'hypervisor_type=qemu' ,
33393409 '--image-property' , 'hw_disk_bus=virtio' ,
33403410 '--flavor' , 'flavor1' ,
3341- '--nic' , 'none' ,
33423411 self .new_server .name ,
33433412 ]
33443413 verifylist = [
33453414 ('image_properties' , {'hypervisor_type' : 'qemu' ,
33463415 'hw_disk_bus' : 'virtio' }),
33473416 ('flavor' , 'flavor1' ),
3348- ('nics' , ['none' ]),
33493417 ('config_drive' , False ),
33503418 ('server_name' , self .new_server .name ),
33513419 ]
@@ -3369,15 +3437,13 @@ def test_server_create_image_property_with_image_list(self):
33693437 '--image-property' ,
33703438 'owner_specified.openstack.object=image/cirros' ,
33713439 '--flavor' , 'flavor1' ,
3372- '--nic' , 'none' ,
33733440 self .new_server .name ,
33743441 ]
33753442
33763443 verifylist = [
33773444 ('image_properties' ,
33783445 {'owner_specified.openstack.object' : 'image/cirros' }),
33793446 ('flavor' , 'flavor1' ),
3380- ('nics' , ['none' ]),
33813447 ('server_name' , self .new_server .name ),
33823448 ]
33833449 # create a image_info as the side_effect of the fake image_list()
@@ -3407,7 +3473,7 @@ def test_server_create_image_property_with_image_list(self):
34073473 availability_zone = None ,
34083474 admin_pass = None ,
34093475 block_device_mapping_v2 = [],
3410- nics = 'none' ,
3476+ nics = [] ,
34113477 meta = None ,
34123478 scheduler_hints = {},
34133479 config_drive = None ,
0 commit comments