summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-18 06:41:14 +0000
committerGerrit Code Review <review@openstack.org>2017-02-18 06:41:14 +0000
commit83a0db0a54827f8d65459b5e954a79f68a29931e (patch)
tree444618d9d64d71d4f0dda4bd0769f8a271ff1da6 /openstackclient/tests
parentbf10900c13312b91b710859d41f253f65a51cc18 (diff)
parentc051c5f090fa6729a005c9d462afd8a75fc1b40f (diff)
downloadpython-openstackclient-83a0db0a54827f8d65459b5e954a79f68a29931e.tar.gz
Merge "Fix "server create" command failed when --nic auto or none"
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server.py53
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py146
2 files changed, 194 insertions, 5 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_server.py b/openstackclient/tests/functional/compute/v2/test_server.py
index 140404de..2ef63728 100644
--- a/openstackclient/tests/functional/compute/v2/test_server.py
+++ b/openstackclient/tests/functional/compute/v2/test_server.py
@@ -14,10 +14,10 @@ import json
import time
from tempest.lib.common.utils import data_utils
+from tempest.lib import exceptions
from openstackclient.tests.functional import base
from openstackclient.tests.functional.volume.v2 import test_volume
-from tempest.lib import exceptions
class ServerTests(base.TestCase):
@@ -324,7 +324,7 @@ class ServerTests(base.TestCase):
self.assertEqual("", raw_output)
self.wait_for_status("ACTIVE")
- def test_server_boot_from_volume(self):
+ def test_server_create_from_volume(self):
"""Test server create from volume, server delete
Test steps:
@@ -442,14 +442,57 @@ class ServerTests(base.TestCase):
cmd_output['status'],
)
- def wait_for_status(self, expected_status='ACTIVE', wait=900, interval=30):
+ def test_server_create_with_none_network(self):
+ """Test server create with none network option."""
+ server_name = data_utils.rand_name('TestServer')
+ server = json.loads(self.openstack(
+ # auto/none enable in nova micro version (v2.37+)
+ '--os-compute-api-version 2.latest ' +
+ 'server create -f json ' +
+ '--flavor ' + self.flavor_name + ' ' +
+ '--image ' + self.image_name + ' ' +
+ '--nic none ' +
+ server_name
+ ))
+ self.assertIsNotNone(server["id"])
+ self.addCleanup(self.openstack, 'server delete --wait ' + server_name)
+ self.assertEqual(server_name, server['name'])
+ self.wait_for_status(server_name=server_name)
+ server = json.loads(self.openstack(
+ 'server show -f json ' + server_name
+ ))
+ self.assertIsNotNone(server['addresses'])
+ self.assertEqual('', server['addresses'])
+
+ def test_server_create_with_empty_network_option_latest(self):
+ """Test server create with empty network option in nova 2.latest."""
+ server_name = data_utils.rand_name('TestServer')
+ try:
+ self.openstack(
+ # auto/none enable in nova micro version (v2.37+)
+ '--os-compute-api-version 2.latest ' +
+ 'server create -f json ' +
+ '--flavor ' + self.flavor_name + ' ' +
+ '--image ' + self.image_name + ' ' +
+ server_name
+ )
+ except exceptions.CommandFailed as e:
+ self.assertIn('nics are required after microversion 2.36',
+ e.stderr)
+ else:
+ self.fail('CommandFailed should be raised.')
+
+ def wait_for_status(self, expected_status='ACTIVE',
+ wait=900, interval=30, server_name=None):
"""Wait until server reaches expected status."""
# TODO(thowe): Add a server wait command to osc
failures = ['ERROR']
total_sleep = 0
opts = self.get_opts(['status'])
+ if not server_name:
+ server_name = self.NAME
while total_sleep < wait:
- status = self.openstack('server show ' + self.NAME + opts)
+ status = self.openstack('server show ' + server_name + opts)
status = status.rstrip()
print('Waiting for {} current status: {}'.format(expected_status,
status))
@@ -459,7 +502,7 @@ class ServerTests(base.TestCase):
time.sleep(interval)
total_sleep += interval
- status = self.openstack('server show ' + self.NAME + opts)
+ status = self.openstack('server show ' + server_name + opts)
status = status.rstrip()
self.assertEqual(status, expected_status)
# give it a little bit more time
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 4cac990e..249902bc 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -467,6 +467,152 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data)
+ def test_server_create_with_auto_network(self):
+ arglist = [
+ '--image', 'image1',
+ '--flavor', 'flavor1',
+ '--nic', 'auto',
+ self.new_server.name,
+ ]
+ verifylist = [
+ ('image', 'image1'),
+ ('flavor', 'flavor1'),
+ ('nic', ['auto']),
+ ('config_drive', False),
+ ('server_name', self.new_server.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ 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):
+ arglist = [
+ '--image', 'image1',
+ '--flavor', 'flavor1',
+ '--nic', 'none',
+ self.new_server.name,
+ ]
+ verifylist = [
+ ('image', 'image1'),
+ ('flavor', 'flavor1'),
+ ('nic', ['none']),
+ ('config_drive', False),
+ ('server_name', self.new_server.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ 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='none',
+ 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_conflict_network_options(self):
+ arglist = [
+ '--image', 'image1',
+ '--flavor', 'flavor1',
+ '--nic', 'none',
+ '--nic', 'auto',
+ '--nic', 'port-id=port1',
+ self.new_server.name,
+ ]
+ verifylist = [
+ ('image', 'image1'),
+ ('flavor', 'flavor1'),
+ ('nic', ['none', 'auto', 'port-id=port1']),
+ ('config_drive', False),
+ ('server_name', self.new_server.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ get_endpoints = mock.Mock()
+ get_endpoints.return_value = {'network': []}
+ self.app.client_manager.auth_ref = mock.Mock()
+ self.app.client_manager.auth_ref.service_catalog = mock.Mock()
+ self.app.client_manager.auth_ref.service_catalog.get_endpoints = (
+ get_endpoints)
+
+ find_port = mock.Mock()
+ network_client = self.app.client_manager.network
+ network_client.find_port = find_port
+ port_resource = mock.Mock()
+ port_resource.id = 'port1_uuid'
+ find_port.return_value = port_resource
+
+ self.assertRaises(exceptions.CommandError,
+ self.cmd.take_action, parsed_args)
+ self.assertNotCalled(self.servers_mock.create)
+
+ def test_server_create_with_invalid_network_options(self):
+ arglist = [
+ '--image', 'image1',
+ '--flavor', 'flavor1',
+ '--nic', 'abcdefgh',
+ self.new_server.name,
+ ]
+ verifylist = [
+ ('image', 'image1'),
+ ('flavor', 'flavor1'),
+ ('nic', ['abcdefgh']),
+ ('config_drive', False),
+ ('server_name', self.new_server.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(exceptions.CommandError,
+ self.cmd.take_action, parsed_args)
+ self.assertNotCalled(self.servers_mock.create)
+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
def test_server_create_with_wait_ok(self, mock_wait_for_status):
arglist = [