Merge "Update tests for server calls that aren't list"
This commit is contained in:
commit
cd99ea60af
@ -19,168 +19,250 @@ test_rebuild_server
|
||||
Tests for the `rebuild_server` command.
|
||||
"""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from shade import exc
|
||||
from shade import meta
|
||||
from shade import OpenStackCloud
|
||||
from shade.tests import fakes
|
||||
from shade.tests.unit import base
|
||||
|
||||
|
||||
class TestRebuildServer(base.RequestsMockTestCase):
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_rebuild_exception(self, mock_nova):
|
||||
def setUp(self):
|
||||
super(TestRebuildServer, self).setUp()
|
||||
self.server_id = str(uuid.uuid4())
|
||||
self.server_name = self.getUniqueString('name')
|
||||
self.fake_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name)
|
||||
self.rebuild_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name, 'REBUILD')
|
||||
self.error_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name, 'ERROR')
|
||||
|
||||
def test_rebuild_server_rebuild_exception(self):
|
||||
"""
|
||||
Test that an exception in the novaclient rebuild raises an exception in
|
||||
rebuild_server.
|
||||
"""
|
||||
mock_nova.servers.rebuild.side_effect = Exception("exception")
|
||||
self.assertRaises(
|
||||
exc.OpenStackCloudException, self.cloud.rebuild_server, "a", "b")
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
status_code=400,
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a',
|
||||
'adminPass': 'b'}})),
|
||||
])
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_server_error(self, mock_nova):
|
||||
self.assertRaises(
|
||||
exc.OpenStackCloudException,
|
||||
self.cloud.rebuild_server,
|
||||
self.fake_server['id'], "a", "b")
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_rebuild_server_server_error(self):
|
||||
"""
|
||||
Test that a server error while waiting for the server to rebuild
|
||||
raises an exception in rebuild_server.
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
|
||||
error_server = fakes.FakeServer('1234', '', 'ERROR')
|
||||
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
|
||||
'1.1.1.1', '2.2.2.2',
|
||||
'5678')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
mock_nova.servers.list.return_value = [error_server]
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': self.rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a'}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'ports.json'],
|
||||
qs_elements=['device_id=1234']),
|
||||
json={'ports': []}),
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'floatingips.json']),
|
||||
json={'floatingips': [fake_floating_ip]})
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.error_server]}),
|
||||
])
|
||||
self.assertRaises(
|
||||
exc.OpenStackCloudException,
|
||||
self.cloud.rebuild_server, "1234", "b", wait=True)
|
||||
# TODO(slaweq): change do_count to True when all nova mocks will be
|
||||
# replaced with request_mocks also
|
||||
self.assert_calls(do_count=False)
|
||||
self.cloud.rebuild_server, self.fake_server['id'], "a", wait=True)
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_timeout(self, mock_nova):
|
||||
self.assert_calls()
|
||||
|
||||
def test_rebuild_server_timeout(self):
|
||||
"""
|
||||
Test that a timeout while waiting for the server to rebuild raises an
|
||||
exception in rebuild_server.
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
mock_nova.servers.list.return_value = [rebuild_server]
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': self.rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a'}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.rebuild_server]}),
|
||||
])
|
||||
self.assertRaises(
|
||||
exc.OpenStackCloudTimeout,
|
||||
self.cloud.rebuild_server, "a", "b", wait=True, timeout=0.001)
|
||||
self.cloud.rebuild_server,
|
||||
self.fake_server['id'], "a", wait=True, timeout=0.001)
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_no_wait(self, mock_nova):
|
||||
self.assert_calls(do_count=False)
|
||||
|
||||
def test_rebuild_server_no_wait(self):
|
||||
"""
|
||||
Test that rebuild_server with no wait and no exception in the
|
||||
novaclient rebuild call returns the server instance.
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
self.assertEqual(meta.obj_to_munch(rebuild_server),
|
||||
self.cloud.rebuild_server("a", "b"))
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_with_admin_pass_no_wait(self, mock_nova):
|
||||
"""
|
||||
Test that a server with an admin_pass passed returns the password
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
|
||||
adminPass='ooBootheiX0edoh')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
self.assertEqual(
|
||||
meta.obj_to_munch(rebuild_server),
|
||||
self.cloud.rebuild_server(
|
||||
'a', 'b', admin_pass='ooBootheiX0edoh'))
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_with_admin_pass_wait(self, mock_nova):
|
||||
"""
|
||||
Test that a server with an admin_pass passed returns the password
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD',
|
||||
adminPass='ooBootheiX0edoh')
|
||||
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
|
||||
ret_active_server = fakes.FakeServer('1234', '', 'ACTIVE',
|
||||
adminPass='ooBootheiX0edoh')
|
||||
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
|
||||
'1.1.1.1', '2.2.2.2',
|
||||
'5678')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
mock_nova.servers.list.return_value = [active_server]
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': self.rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a'}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'ports.json'],
|
||||
qs_elements=['device_id=1234']),
|
||||
json={'ports': []}),
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
])
|
||||
self.assertEqual(
|
||||
self.rebuild_server['status'],
|
||||
self.cloud.rebuild_server(self.fake_server['id'], "a")['status'])
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_rebuild_server_with_admin_pass_no_wait(self):
|
||||
"""
|
||||
Test that a server with an admin_pass passed returns the password
|
||||
"""
|
||||
password = self.getUniqueString('password')
|
||||
rebuild_server = self.rebuild_server.copy()
|
||||
rebuild_server['adminPass'] = password
|
||||
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a',
|
||||
'adminPass': password}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
])
|
||||
self.assertEqual(
|
||||
password,
|
||||
self.cloud.rebuild_server(
|
||||
self.fake_server['id'], 'a',
|
||||
admin_pass=password)['adminPass'])
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_rebuild_server_with_admin_pass_wait(self):
|
||||
"""
|
||||
Test that a server with an admin_pass passed returns the password
|
||||
"""
|
||||
password = self.getUniqueString('password')
|
||||
rebuild_server = self.rebuild_server.copy()
|
||||
rebuild_server['adminPass'] = password
|
||||
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a',
|
||||
'adminPass': password}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.rebuild_server]}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'networks.json']),
|
||||
json={'networks': []}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'floatingips.json']),
|
||||
json={'floatingips': [fake_floating_ip]})
|
||||
])
|
||||
self.cloud.name = 'cloud-name'
|
||||
self.assertEqual(
|
||||
self.cloud._normalize_server(
|
||||
meta.obj_to_munch(ret_active_server)),
|
||||
self.cloud.rebuild_server(
|
||||
"1234", "b", wait=True, admin_pass='ooBootheiX0edoh'))
|
||||
# TODO(slaweq): change do_count to True when all nova mocks will be
|
||||
# replaced with request_mocks also
|
||||
self.assert_calls(do_count=False)
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_rebuild_server_wait(self, mock_nova):
|
||||
self.assertEqual(
|
||||
password,
|
||||
self.cloud.rebuild_server(
|
||||
self.fake_server['id'], 'a',
|
||||
admin_pass=password, wait=True)['adminPass'])
|
||||
|
||||
self.assert_calls()
|
||||
|
||||
def test_rebuild_server_wait(self):
|
||||
"""
|
||||
Test that rebuild_server with a wait returns the server instance when
|
||||
its status changes to "ACTIVE".
|
||||
"""
|
||||
rebuild_server = fakes.FakeServer('1234', '', 'REBUILD')
|
||||
active_server = fakes.FakeServer('1234', '', 'ACTIVE')
|
||||
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
|
||||
'1.1.1.1', '2.2.2.2',
|
||||
'5678')
|
||||
mock_nova.servers.rebuild.return_value = rebuild_server
|
||||
mock_nova.servers.list.return_value = [active_server]
|
||||
self.register_uris([
|
||||
dict(method='POST',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public',
|
||||
append=['servers', self.server_id, 'action']),
|
||||
json={'server': self.rebuild_server},
|
||||
validate=dict(
|
||||
json={
|
||||
'rebuild': {
|
||||
'imageRef': 'a'}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'ports.json'],
|
||||
qs_elements=['device_id=1234']),
|
||||
json={'ports': []}),
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': self.rebuild_server}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.rebuild_server]}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'networks.json']),
|
||||
json={'networks': []}),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'network', 'public', append=['v2.0', 'floatingips.json']),
|
||||
json={'floatingips': [fake_floating_ip]})
|
||||
])
|
||||
self.cloud.name = 'cloud-name'
|
||||
self.assertEqual(
|
||||
self.cloud._normalize_server(
|
||||
meta.obj_to_munch(active_server)),
|
||||
self.cloud.rebuild_server("1234", "b", wait=True))
|
||||
# TODO(slaweq): change do_count to True when all nova mocks will be
|
||||
# replaced with request_mocks also
|
||||
self.assert_calls(do_count=False)
|
||||
'ACTIVE',
|
||||
self.cloud.rebuild_server(
|
||||
self.fake_server['id'], 'a', wait=True)['status'])
|
||||
|
||||
self.assert_calls()
|
||||
|
@ -17,42 +17,72 @@ test_update_server
|
||||
Tests for the `update_server` command.
|
||||
"""
|
||||
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from shade import OpenStackCloud
|
||||
from shade.exc import OpenStackCloudException
|
||||
from shade.tests import fakes
|
||||
from shade.tests.unit import base
|
||||
|
||||
|
||||
class TestUpdateServer(base.TestCase):
|
||||
class TestUpdateServer(base.RequestsMockTestCase):
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_update_server_with_update_exception(self, mock_nova):
|
||||
def setUp(self):
|
||||
super(TestUpdateServer, self).setUp()
|
||||
self.server_id = str(uuid.uuid4())
|
||||
self.server_name = self.getUniqueString('name')
|
||||
self.updated_server_name = self.getUniqueString('name2')
|
||||
self.fake_server = fakes.make_fake_server(
|
||||
self.server_id, self.server_name)
|
||||
|
||||
def test_update_server_with_update_exception(self):
|
||||
"""
|
||||
Test that an exception in the novaclient update raises an exception in
|
||||
update_server.
|
||||
"""
|
||||
mock_nova.servers.update.side_effect = Exception("exception")
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='PUT',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
status_code=400,
|
||||
validate=dict(
|
||||
json={'server': {'name': self.updated_server_name}})),
|
||||
])
|
||||
self.assertRaises(
|
||||
OpenStackCloudException, self.cloud.update_server,
|
||||
'server-name')
|
||||
self.server_name, name=self.updated_server_name)
|
||||
|
||||
@mock.patch.object(OpenStackCloud, 'nova_client')
|
||||
def test_update_server_name(self, mock_nova):
|
||||
self.assert_calls()
|
||||
|
||||
def test_update_server_name(self):
|
||||
"""
|
||||
Test that update_server updates the name without raising any exception
|
||||
"""
|
||||
fake_server = fakes.FakeServer('1234', 'server-name', 'ACTIVE')
|
||||
fake_update_server = fakes.FakeServer('1234', 'server-name2',
|
||||
'ACTIVE')
|
||||
fake_floating_ip = fakes.FakeFloatingIP('1234', 'ippool',
|
||||
'1.1.1.1', '2.2.2.2',
|
||||
'5678')
|
||||
mock_nova.servers.list.return_value = [fake_server]
|
||||
mock_nova.servers.update.return_value = fake_update_server
|
||||
mock_nova.floating_ips.list.return_value = [fake_floating_ip]
|
||||
fake_update_server = fakes.make_fake_server(
|
||||
self.server_id, self.updated_server_name)
|
||||
|
||||
self.register_uris([
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', 'detail']),
|
||||
json={'servers': [self.fake_server]}),
|
||||
dict(method='PUT',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': fake_update_server},
|
||||
validate=dict(
|
||||
json={'server': {'name': self.updated_server_name}})),
|
||||
dict(method='GET',
|
||||
uri=self.get_mock_url(
|
||||
'compute', 'public', append=['servers', self.server_id]),
|
||||
json={'server': fake_update_server}),
|
||||
])
|
||||
self.assertEqual(
|
||||
'server-name2',
|
||||
self.updated_server_name,
|
||||
self.cloud.update_server(
|
||||
'server-name', name='server-name2')['name'])
|
||||
self.server_name, name=self.updated_server_name)['name'])
|
||||
|
||||
self.assert_calls()
|
||||
|
Loading…
Reference in New Issue
Block a user