Merge "Default --nic to 'auto' if creating a server with >= 2.37"
This commit is contained in:
commit
0fa3c84b4f
@ -809,9 +809,14 @@ class CreateServer(command.ShowOne):
|
|||||||
raise exceptions.CommandError(msg)
|
raise exceptions.CommandError(msg)
|
||||||
nics = nics[0]
|
nics = nics[0]
|
||||||
else:
|
else:
|
||||||
# Default to empty list if nothing was specified, let nova side to
|
# Compute API version >= 2.37 requires a value, so default to
|
||||||
# decide the default behavior.
|
# 'auto' to maintain legacy behavior if a nic wasn't specified.
|
||||||
nics = []
|
if compute_client.api_version >= api_versions.APIVersion('2.37'):
|
||||||
|
nics = 'auto'
|
||||||
|
else:
|
||||||
|
# Default to empty list if nothing was specified, let nova
|
||||||
|
# side to decide the default behavior.
|
||||||
|
nics = []
|
||||||
|
|
||||||
# Check security group exist and convert ID to name
|
# Check security group exist and convert ID to name
|
||||||
security_group_names = []
|
security_group_names = []
|
||||||
|
@ -618,7 +618,9 @@ class ServerTests(common.ComputeTestCase):
|
|||||||
server_name
|
server_name
|
||||||
)
|
)
|
||||||
except exceptions.CommandFailed as e:
|
except exceptions.CommandFailed as e:
|
||||||
self.assertIn('nics are required after microversion 2.36',
|
# If we got here, it shouldn't be because a nics value wasn't
|
||||||
e.stderr)
|
# provided to the server; it is likely due to something else in
|
||||||
else:
|
# the functional tests like there being multiple available
|
||||||
self.fail('CommandFailed should be raised.')
|
# networks and the test didn't specify a specific network.
|
||||||
|
self.assertNotIn('nics are required after microversion 2.36',
|
||||||
|
e.stderr)
|
||||||
|
@ -17,6 +17,7 @@ import copy
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
from novaclient import api_versions
|
||||||
|
|
||||||
from openstackclient.api import compute_v2
|
from openstackclient.api import compute_v2
|
||||||
from openstackclient.tests.unit import fakes
|
from openstackclient.tests.unit import fakes
|
||||||
@ -201,6 +202,8 @@ class FakeComputev2Client(object):
|
|||||||
|
|
||||||
self.management_url = kwargs['endpoint']
|
self.management_url = kwargs['endpoint']
|
||||||
|
|
||||||
|
self.api_version = api_versions.APIVersion('2.1')
|
||||||
|
|
||||||
|
|
||||||
class TestComputev2(utils.TestCommand):
|
class TestComputev2(utils.TestCommand):
|
||||||
|
|
||||||
|
@ -845,6 +845,55 @@ class TestServerCreate(TestServer):
|
|||||||
self.assertEqual(self.columns, columns)
|
self.assertEqual(self.columns, columns)
|
||||||
self.assertEqual(self.datalist(), data)
|
self.assertEqual(self.datalist(), data)
|
||||||
|
|
||||||
|
def test_server_create_with_auto_network_default_v2_37(self):
|
||||||
|
"""Tests creating a server without specifying --nic using 2.37."""
|
||||||
|
arglist = [
|
||||||
|
'--image', 'image1',
|
||||||
|
'--flavor', 'flavor1',
|
||||||
|
self.new_server.name,
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('image', 'image1'),
|
||||||
|
('flavor', 'flavor1'),
|
||||||
|
('config_drive', False),
|
||||||
|
('server_name', self.new_server.name),
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
# Since check_parser doesn't handle compute global options like
|
||||||
|
# --os-compute-api-version, we have to mock the construction of
|
||||||
|
# the novaclient client object with our own APIVersion.
|
||||||
|
with mock.patch.object(self.app.client_manager.compute, 'api_version',
|
||||||
|
api_versions.APIVersion('2.37')):
|
||||||
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
# Set expected values
|
||||||
|
kwargs = dict(
|
||||||
|
meta=None,
|
||||||
|
files={},
|
||||||
|
reservation_id=None,
|
||||||
|
min_count=1,
|
||||||
|
max_count=1,
|
||||||
|
security_groups=[],
|
||||||
|
userdata=None,
|
||||||
|
key_name=None,
|
||||||
|
availability_zone=None,
|
||||||
|
block_device_mapping_v2=[],
|
||||||
|
nics='auto',
|
||||||
|
scheduler_hints={},
|
||||||
|
config_drive=None,
|
||||||
|
)
|
||||||
|
# ServerManager.create(name, image, flavor, **kwargs)
|
||||||
|
self.servers_mock.create.assert_called_with(
|
||||||
|
self.new_server.name,
|
||||||
|
self.image,
|
||||||
|
self.flavor,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(self.columns, columns)
|
||||||
|
self.assertEqual(self.datalist(), data)
|
||||||
|
|
||||||
def test_server_create_with_none_network(self):
|
def test_server_create_with_none_network(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--image', 'image1',
|
'--image', 'image1',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user