Update compute API.get() stubs in test_server_actions

These old unit tests were stubbing out the DB API to
get an instance which is too low level for what is being
tested. This changes the test stubs to stub out the
compute API.get() method instead. While in here, some
old unused stubs are removed.

This is part of a larger series to drop some pre-cellsv2
compatibility code from the API.get() method.

Change-Id: I46a42c8edd7eff457cd5753370fd5c6b42aea997
This commit is contained in:
Matt Riedemann 2018-11-02 15:33:12 -04:00
parent 033249da51
commit d8f2ee392e
1 changed files with 71 additions and 89 deletions

View File

@ -36,24 +36,6 @@ from nova.tests.unit.image import fake
CONF = nova.conf.CONF
FAKE_UUID = fakes.FAKE_UUID
INSTANCE_IDS = {FAKE_UUID: 1}
def return_server_not_found(*arg, **kwarg):
raise exception.InstanceNotFound(instance_id=FAKE_UUID)
def instance_update_and_get_original(context, instance_uuid, values,
columns_to_join=None,
):
inst = fakes.stub_instance(INSTANCE_IDS[instance_uuid], host='fake_host')
inst = dict(inst, **values)
return (inst, inst)
def instance_update(context, instance_uuid, kwargs):
inst = fakes.stub_instance(INSTANCE_IDS[instance_uuid], host='fake_host')
return inst
class MockSetAdminPassword(object):
@ -78,13 +60,11 @@ class ServerActionsControllerTestV21(test.TestCase):
def setUp(self):
super(ServerActionsControllerTestV21, self).setUp()
self.flags(group='glance', api_servers=['http://localhost:9292'])
self.stub_out('nova.db.api.instance_get_by_uuid',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
host='fake_host'))
self.stub_out('nova.db.api.instance_update_and_get_original',
instance_update_and_get_original)
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(vm_state=vm_states.ACTIVE,
host='fake_host'))
self.stub_out('nova.objects.Instance.save', lambda *a, **kw: None)
fakes.stub_out_nw_api(self)
fakes.stub_out_compute_api_snapshot(self)
fake.stub_out_image_service(self)
self.flags(enable_instance_password=True, group='api')
@ -92,7 +72,14 @@ class ServerActionsControllerTestV21(test.TestCase):
self.controller = self._get_controller()
self.compute_api = self.controller.compute_api
self.req = fakes.HTTPRequest.blank('')
# We don't care about anything getting as far as hitting the compute
# RPC API so we just mock it out here.
mock_rpcapi = mock.patch.object(self.compute_api, 'compute_rpcapi')
mock_rpcapi.start()
self.addCleanup(mock_rpcapi.stop)
# The project_id here matches what is used by default in
# fake_compute_get which need to match for policy checks.
self.req = fakes.HTTPRequest.blank('', project_id='fake_project')
self.context = self.req.environ['nova.context']
self.image_api = image.API()
@ -100,9 +87,6 @@ class ServerActionsControllerTestV21(test.TestCase):
def _get_controller(self):
return self.servers.ServersController()
def _set_fake_extension(self):
pass
def _test_locked_instance(self, action, method=None, body_map=None,
compute_api_args_map=None):
if body_map is None:
@ -197,13 +181,13 @@ class ServerActionsControllerTestV21(test.TestCase):
self.req, FAKE_UUID, body=body)
def test_reboot_not_found(self):
self.stub_out('nova.db.api.instance_get_by_uuid',
return_server_not_found)
body = dict(reboot=dict(type="HARD"))
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_reboot,
self.req, uuids.fake, body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=uuids.fake)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_reboot,
self.req, uuids.fake, body=body)
def test_reboot_raises_conflict_on_invalid_state(self):
body = dict(reboot=dict(type="HARD"))
@ -221,42 +205,43 @@ class ServerActionsControllerTestV21(test.TestCase):
def test_reboot_soft_with_soft_in_progress_raises_conflict(self):
body = dict(reboot=dict(type="SOFT"))
self.stub_out('nova.db.api.instance_get_by_uuid',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING))
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING))
self.assertRaises(webob.exc.HTTPConflict,
self.controller._action_reboot,
self.req, FAKE_UUID, body=body)
def test_reboot_hard_with_soft_in_progress_does_not_raise(self):
body = dict(reboot=dict(type="HARD"))
self.stub_out('nova.db.api.instance_get_by_uuid',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING))
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING))
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
def test_reboot_hard_with_hard_in_progress(self):
body = dict(reboot=dict(type="HARD"))
self.stub_out('nova.db.api.instance_get_by_uuid',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING_HARD))
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(
vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING_HARD))
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
def test_reboot_soft_with_hard_in_progress_raises_conflict(self):
body = dict(reboot=dict(type="SOFT"))
self.stub_out('nova.db.api.instance_get_by_uuid',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING_HARD))
self.stub_out('nova.compute.api.API.get',
fakes.fake_compute_get(
vm_state=vm_states.ACTIVE,
task_state=task_states.REBOOTING_HARD))
self.assertRaises(webob.exc.HTTPConflict,
self.controller._action_reboot,
self.req, FAKE_UUID, body=body)
def _test_rebuild_preserve_ephemeral(self, value=None):
self._set_fake_extension()
return_server = fakes.fake_instance_get(image_ref='2',
vm_state=vm_states.ACTIVE,
host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
return_server = fakes.fake_compute_get(image_ref='2',
vm_state=vm_states.ACTIVE,
host='fake_host')
self.stub_out('nova.compute.api.API.get', return_server)
body = {
"rebuild": {
@ -286,9 +271,9 @@ class ServerActionsControllerTestV21(test.TestCase):
self._test_rebuild_preserve_ephemeral()
def test_rebuild_accepted_minimum(self):
return_server = fakes.fake_instance_get(image_ref='2',
return_server = fakes.fake_compute_get(image_ref='2',
vm_state=vm_states.ACTIVE, host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
self.stub_out('nova.compute.api.API.get', return_server)
self_href = 'http://localhost/v2/servers/%s' % FAKE_UUID
body = {
@ -312,8 +297,6 @@ class ServerActionsControllerTestV21(test.TestCase):
def rebuild(self2, context, instance, image_href, *args, **kwargs):
info['image_href_in_call'] = image_href
self.stub_out('nova.db.api.instance_get',
fakes.fake_instance_get(vm_state=vm_states.ACTIVE))
self.stub_out('nova.compute.api.API.rebuild', rebuild)
# proper local hrefs must start with 'http://localhost/v2/'
@ -343,9 +326,9 @@ class ServerActionsControllerTestV21(test.TestCase):
# is missing from response. See lp bug 921814
self.flags(enable_instance_password=False, group='api')
return_server = fakes.fake_instance_get(image_ref='2',
return_server = fakes.fake_compute_get(image_ref='2',
vm_state=vm_states.ACTIVE, host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
self.stub_out('nova.compute.api.API.get', return_server)
self_href = 'http://localhost/v2/servers/%s' % FAKE_UUID
body = {
@ -383,9 +366,9 @@ class ServerActionsControllerTestV21(test.TestCase):
def test_rebuild_accepted_with_metadata(self):
metadata = {'new': 'metadata'}
return_server = fakes.fake_instance_get(metadata=metadata,
return_server = fakes.fake_compute_get(metadata=metadata,
vm_state=vm_states.ACTIVE, host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
self.stub_out('nova.compute.api.API.get', return_server)
body = {
"rebuild": {
@ -437,9 +420,9 @@ class ServerActionsControllerTestV21(test.TestCase):
self.req, FAKE_UUID, body=body)
def test_rebuild_admin_pass(self):
return_server = fakes.fake_instance_get(image_ref='2',
return_server = fakes.fake_compute_get(image_ref='2',
vm_state=vm_states.ACTIVE, host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
self.stub_out('nova.compute.api.API.get', return_server)
body = {
"rebuild": {
@ -459,9 +442,9 @@ class ServerActionsControllerTestV21(test.TestCase):
# is missing from response. See lp bug 921814
self.flags(enable_instance_password=False, group='api')
return_server = fakes.fake_instance_get(image_ref='2',
return_server = fakes.fake_compute_get(image_ref='2',
vm_state=vm_states.ACTIVE, host='fake_host')
self.stub_out('nova.db.api.instance_get_by_uuid', return_server)
self.stub_out('nova.compute.api.API.get', return_server)
body = {
"rebuild": {
@ -477,20 +460,17 @@ class ServerActionsControllerTestV21(test.TestCase):
self.assertNotIn('adminPass', body['server'])
def test_rebuild_server_not_found(self):
def server_not_found(self, instance_id,
columns_to_join=None, use_slave=False):
raise exception.InstanceNotFound(instance_id=instance_id)
self.stub_out('nova.db.api.instance_get_by_uuid', server_not_found)
body = {
"rebuild": {
"imageRef": self._image_href,
},
}
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_rebuild,
self.req, FAKE_UUID, body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=FAKE_UUID)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_rebuild,
self.req, FAKE_UUID, body=body)
def test_rebuild_with_bad_image(self):
body = {
@ -672,12 +652,12 @@ class ServerActionsControllerTestV21(test.TestCase):
def test_resize_with_server_not_found(self):
body = dict(resize=dict(flavorRef="http://localhost/3"))
self.stub_out('nova.compute.api.API.get', return_server_not_found)
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_resize,
self.req, FAKE_UUID, body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id=FAKE_UUID)):
self.assertRaises(webob.exc.HTTPNotFound,
self.controller._action_resize,
self.req, FAKE_UUID, body=body)
def test_resize_with_image_exceptions(self):
body = dict(resize=dict(flavorRef="http://localhost/3"))
@ -852,10 +832,12 @@ class ServerActionsControllerTestV21(test.TestCase):
def test_revert_resize_server_not_found(self):
body = dict(revertResize=None)
self.assertRaises(webob. exc.HTTPNotFound,
self.controller._action_revert_resize,
self.req, "bad_server_id", body=body)
with mock.patch('nova.compute.api.API.get',
side_effect=exception.InstanceNotFound(
instance_id='bad_server_id')):
self.assertRaises(webob. exc.HTTPNotFound,
self.controller._action_revert_resize,
self.req, "bad_server_id", body=body)
def test_revert_resize_server(self):
body = dict(revertResize=None)
@ -968,11 +950,11 @@ class ServerActionsControllerTestV21(test.TestCase):
image_root_device_name='/dev/vda',
image_block_device_mapping=str(bdm),
image_container_format='ami')
instance = fakes.fake_instance_get(image_ref=uuids.fake,
vm_state=vm_states.ACTIVE,
root_device_name='/dev/vda',
system_metadata=system_metadata)
self.stub_out('nova.db.api.instance_get_by_uuid', instance)
instance = fakes.fake_compute_get(image_ref=uuids.fake,
vm_state=vm_states.ACTIVE,
root_device_name='/dev/vda',
system_metadata=system_metadata)
self.stub_out('nova.compute.api.API.get', instance)
volume = dict(id=_fake_id('a'),
size=1,
@ -1074,13 +1056,13 @@ class ServerActionsControllerTestV21(test.TestCase):
self.stub_out('nova.db.api.block_device_mapping_get_all_by_instance',
fake_block_device_mapping_get_all_by_instance)
instance = fakes.fake_instance_get(
instance = fakes.fake_compute_get(
image_ref='',
vm_state=vm_states.ACTIVE,
root_device_name='/dev/vda',
system_metadata={'image_test_key1': 'test_value1',
'image_test_key2': 'test_value2'})
self.stub_out('nova.db.api.instance_get_by_uuid', instance)
self.stub_out('nova.compute.api.API.get', instance)
volume = dict(id=_fake_id('a'),
size=1,