api: Remove unnecessary action method prefix
None of the other controllers do this. Don't do it here either. This is mostly a bulk rename, with the exception of the combination of the '_action_resize' and '_resize' methods, which were unnecessarily separated, and the move of the 'delete' method to be next to the '_delete' inner method. Change-Id: I87381c6721e7a040c82f8124523116a1d4e2c684 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
@@ -918,6 +918,24 @@ class ServersController(wsgi.Controller):
|
||||
|
||||
return self._add_location(robj)
|
||||
|
||||
@wsgi.response(204)
|
||||
@wsgi.expected_errors((404, 409))
|
||||
@validation.response_body_schema(schema.delete_response)
|
||||
def delete(self, req, id):
|
||||
"""Destroys a server."""
|
||||
try:
|
||||
self._delete(req.environ['nova.context'], req, id)
|
||||
except exception.InstanceNotFound:
|
||||
msg = _("Instance could not be found")
|
||||
raise exc.HTTPNotFound(explanation=msg)
|
||||
except (
|
||||
exception.InstanceIsLocked, exception.AllocationDeleteFailed
|
||||
) as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
common.raise_http_conflict_for_instance_invalid_state(
|
||||
state_error, 'delete', id)
|
||||
|
||||
def _delete(self, context, req, instance_uuid):
|
||||
instance = self._get_server(context, req, instance_uuid)
|
||||
context.can(server_policies.SERVERS % 'delete',
|
||||
@@ -1024,7 +1042,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('confirmResize')
|
||||
@validation.schema(schema.confirm_resize)
|
||||
@validation.response_body_schema(schema.confirm_resize_response)
|
||||
def _action_confirm_resize(self, req, id, body):
|
||||
def _confirm_resize(self, req, id, body):
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_server(context, req, id)
|
||||
context.can(server_policies.SERVERS % 'confirm_resize',
|
||||
@@ -1048,7 +1066,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('revertResize')
|
||||
@validation.schema(schema.revert_resize)
|
||||
@validation.response_body_schema(schema.revert_resize_response)
|
||||
def _action_revert_resize(self, req, id, body):
|
||||
def _revert_resize(self, req, id, body):
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_server(context, req, id)
|
||||
context.can(server_policies.SERVERS % 'revert_resize',
|
||||
@@ -1072,8 +1090,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('reboot')
|
||||
@validation.schema(schema.reboot)
|
||||
@validation.response_body_schema(schema.reboot_response)
|
||||
def _action_reboot(self, req, id, body):
|
||||
|
||||
def _reboot(self, req, id, body):
|
||||
reboot_type = body['reboot']['type'].upper()
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_server(context, req, id)
|
||||
@@ -1088,10 +1105,24 @@ class ServersController(wsgi.Controller):
|
||||
common.raise_http_conflict_for_instance_invalid_state(state_error,
|
||||
'reboot', id)
|
||||
|
||||
def _resize(self, req, instance_id, flavor_id, auto_disk_config=None):
|
||||
"""Begin the resize process with given instance/flavor."""
|
||||
@wsgi.response(202)
|
||||
@wsgi.expected_errors((400, 401, 403, 404, 409))
|
||||
@wsgi.action('resize')
|
||||
@validation.schema(schema.resize)
|
||||
@validation.response_body_schema(schema.resize_response)
|
||||
def _resize(self, req, id, body):
|
||||
"""Resizes a given instance to the flavor size requested."""
|
||||
resize_dict = body['resize']
|
||||
flavor_id = str(resize_dict["flavorRef"])
|
||||
|
||||
auto_disk_config = None
|
||||
auto_disk_config_raw = resize_dict.get(helpers.API_DISK_CONFIG)
|
||||
if auto_disk_config_raw is not None:
|
||||
auto_disk_config = helpers.disk_config_from_api(
|
||||
auto_disk_config_raw)
|
||||
|
||||
context = req.environ["nova.context"]
|
||||
instance = self._get_server(context, req, instance_id,
|
||||
instance = self._get_server(context, req, id,
|
||||
columns_to_join=['services', 'resources',
|
||||
'pci_requests',
|
||||
'pci_devices',
|
||||
@@ -1115,8 +1146,8 @@ class ServersController(wsgi.Controller):
|
||||
) as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
common.raise_http_conflict_for_instance_invalid_state(state_error,
|
||||
'resize', instance_id)
|
||||
common.raise_http_conflict_for_instance_invalid_state(
|
||||
state_error, 'resize', id)
|
||||
except exception.ImageNotAuthorized:
|
||||
msg = _("You are not authorized to access the image "
|
||||
"the instance was started with.")
|
||||
@@ -1143,23 +1174,6 @@ class ServersController(wsgi.Controller):
|
||||
exception.ForbiddenWithShare) as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
|
||||
@wsgi.response(204)
|
||||
@wsgi.expected_errors((404, 409))
|
||||
@validation.response_body_schema(schema.delete_response)
|
||||
def delete(self, req, id):
|
||||
"""Destroys a server."""
|
||||
try:
|
||||
self._delete(req.environ['nova.context'], req, id)
|
||||
except exception.InstanceNotFound:
|
||||
msg = _("Instance could not be found")
|
||||
raise exc.HTTPNotFound(explanation=msg)
|
||||
except (exception.InstanceIsLocked,
|
||||
exception.AllocationDeleteFailed) as e:
|
||||
raise exc.HTTPConflict(explanation=e.format_message())
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
common.raise_http_conflict_for_instance_invalid_state(state_error,
|
||||
'delete', id)
|
||||
|
||||
def _image_from_req_data(self, server_dict, create_kwargs):
|
||||
"""Get image data from the request or raise appropriate
|
||||
exceptions.
|
||||
@@ -1181,21 +1195,6 @@ class ServersController(wsgi.Controller):
|
||||
flavor_ref = data['server']['flavorRef']
|
||||
return common.get_id_from_href(flavor_ref)
|
||||
|
||||
@wsgi.response(202)
|
||||
@wsgi.expected_errors((400, 401, 403, 404, 409))
|
||||
@wsgi.action('resize')
|
||||
@validation.schema(schema.resize)
|
||||
@validation.response_body_schema(schema.resize_response)
|
||||
def _action_resize(self, req, id, body):
|
||||
"""Resizes a given instance to the flavor size requested."""
|
||||
resize_dict = body['resize']
|
||||
flavor_ref = str(resize_dict["flavorRef"])
|
||||
|
||||
kwargs = {}
|
||||
helpers.translate_attributes(helpers.RESIZE, resize_dict, kwargs)
|
||||
|
||||
self._resize(req, id, flavor_ref, **kwargs)
|
||||
|
||||
@wsgi.response(202)
|
||||
@wsgi.expected_errors((400, 403, 404, 409))
|
||||
@wsgi.action('rebuild')
|
||||
@@ -1221,7 +1220,7 @@ class ServersController(wsgi.Controller):
|
||||
@validation.response_body_schema(schema.rebuild_response_v296, '2.96', '2.97') # noqa: E501
|
||||
@validation.response_body_schema(schema.rebuild_response_v298, '2.98', '2.99') # noqa: E501
|
||||
@validation.response_body_schema(schema.rebuild_response_v2100, '2.100')
|
||||
def _action_rebuild(self, req, id, body):
|
||||
def _rebuild(self, req, id, body):
|
||||
"""Rebuild an instance with the given attributes."""
|
||||
rebuild_dict = body['rebuild']
|
||||
|
||||
@@ -1387,10 +1386,9 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('createImage')
|
||||
@validation.schema(schema.create_image, '2.0', '2.0')
|
||||
@validation.schema(schema.create_image, '2.1')
|
||||
@validation.response_body_schema(
|
||||
schema.create_image_response, '2.0', '2.44')
|
||||
@validation.response_body_schema(schema.create_image_response, '2.0', '2.44') # noqa: E501
|
||||
@validation.response_body_schema(schema.create_image_response_v245, '2.45')
|
||||
def _action_create_image(self, req, id, body):
|
||||
def _create_image(self, req, id, body):
|
||||
"""Snapshot a server instance."""
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_server(context, req, id)
|
||||
@@ -1499,7 +1497,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('os-start')
|
||||
@validation.schema(schema.start_server)
|
||||
@validation.response_body_schema(schema.start_server_response)
|
||||
def _start_server(self, req, id, body):
|
||||
def _start(self, req, id, body):
|
||||
"""Start an instance."""
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_instance(context, id)
|
||||
@@ -1519,7 +1517,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('os-stop')
|
||||
@validation.schema(schema.stop_server)
|
||||
@validation.response_body_schema(schema.stop_server_response)
|
||||
def _stop_server(self, req, id, body):
|
||||
def _stop(self, req, id, body):
|
||||
"""Stop an instance."""
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_instance(context, id)
|
||||
@@ -1541,7 +1539,7 @@ class ServersController(wsgi.Controller):
|
||||
@wsgi.action('trigger_crash_dump')
|
||||
@validation.schema(schema.trigger_crash_dump)
|
||||
@validation.response_body_schema(schema.trigger_crash_dump_response)
|
||||
def _action_trigger_crash_dump(self, req, id, body):
|
||||
def _trigger_crash_dump(self, req, id, body):
|
||||
"""Trigger crash dump in an instance"""
|
||||
context = req.environ['nova.context']
|
||||
instance = self._get_instance(context, id)
|
||||
|
||||
@@ -88,7 +88,7 @@ class AccessIPsAPIValidationTestV21(test.TestCase):
|
||||
}
|
||||
body['rebuild'].update(params)
|
||||
req = fakes.HTTPRequest.blank('')
|
||||
self.controller._action_rebuild(req, fakes.FAKE_UUID, body=body)
|
||||
self.controller._rebuild(req, fakes.FAKE_UUID, body=body)
|
||||
|
||||
def test_create_server_with_access_ipv4(self):
|
||||
params = {v4_key: '192.168.0.10'}
|
||||
|
||||
@@ -163,29 +163,28 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
*args, **kwargs)
|
||||
|
||||
def test_actions_with_locked_instance(self):
|
||||
actions = ['_action_resize', '_action_confirm_resize',
|
||||
'_action_revert_resize', '_action_reboot',
|
||||
'_action_rebuild']
|
||||
actions = ['_resize', '_confirm_resize',
|
||||
'_revert_resize', '_reboot',
|
||||
'_rebuild']
|
||||
|
||||
method_translations = {'_action_resize': 'resize',
|
||||
'_action_confirm_resize': 'confirm_resize',
|
||||
'_action_revert_resize': 'revert_resize',
|
||||
'_action_reboot': 'reboot',
|
||||
'_action_rebuild': 'rebuild'}
|
||||
method_translations = {'_resize': 'resize',
|
||||
'_confirm_resize': 'confirm_resize',
|
||||
'_revert_resize': 'revert_resize',
|
||||
'_reboot': 'reboot',
|
||||
'_rebuild': 'rebuild'}
|
||||
|
||||
body_map = {'_action_resize': {'resize': {'flavorRef': '2'}},
|
||||
'_action_reboot': {'reboot': {'type': 'HARD'}},
|
||||
'_action_rebuild': {'rebuild': {
|
||||
body_map = {'_resize': {'resize': {'flavorRef': '2'}},
|
||||
'_reboot': {'reboot': {'type': 'HARD'}},
|
||||
'_rebuild': {'rebuild': {
|
||||
'imageRef': self.image_uuid,
|
||||
'adminPass': 'TNc53Dr8s7vw'}},
|
||||
'_action_revert_resize': {'revertResize': None},
|
||||
'_action_confirm_resize': {'confirmResize': None}}
|
||||
'_revert_resize': {'revertResize': None},
|
||||
'_confirm_resize': {'confirmResize': None}}
|
||||
|
||||
args_map = {'_action_resize': (('2'), {'auto_disk_config': None}),
|
||||
'_action_confirm_resize': ((), {}),
|
||||
'_action_reboot': (('HARD',), {}),
|
||||
'_action_rebuild': ((self.image_uuid,
|
||||
'TNc53Dr8s7vw'), {})}
|
||||
args_map = {'_resize': (('2'), {'auto_disk_config': None}),
|
||||
'_confirm_resize': ((), {}),
|
||||
'_reboot': (('HARD',), {}),
|
||||
'_rebuild': ((self.image_uuid, 'TNc53Dr8s7vw'), {})}
|
||||
|
||||
for action in actions:
|
||||
method = method_translations.get(action)
|
||||
@@ -195,28 +194,28 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
|
||||
def test_reboot_hard(self):
|
||||
body = dict(reboot=dict(type="HARD"))
|
||||
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
|
||||
self.controller._reboot(self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_soft(self):
|
||||
body = dict(reboot=dict(type="SOFT"))
|
||||
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
|
||||
self.controller._reboot(self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_incorrect_type(self):
|
||||
body = dict(reboot=dict(type="NOT_A_TYPE"))
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_missing_type(self):
|
||||
body = dict(reboot=dict())
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_none(self):
|
||||
body = dict(reboot=dict(type=None))
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_not_found(self):
|
||||
@@ -225,7 +224,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
side_effect=exception.InstanceNotFound(
|
||||
instance_id=uuids.fake)):
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, uuids.fake, body=body)
|
||||
|
||||
def test_reboot_raises_conflict_on_invalid_state(self):
|
||||
@@ -239,7 +238,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self.stub_out('nova.compute.api.API.reboot', fake_reboot)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_soft_with_soft_in_progress_raises_conflict(self):
|
||||
@@ -249,7 +248,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
vm_state=vm_states.ACTIVE,
|
||||
task_state=task_states.REBOOTING))
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_hard_with_soft_in_progress_does_not_raise(self):
|
||||
@@ -258,7 +257,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
fakes.fake_compute_get(project_id=fakes.FAKE_PROJECT_ID,
|
||||
vm_state=vm_states.ACTIVE,
|
||||
task_state=task_states.REBOOTING))
|
||||
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
|
||||
self.controller._reboot(self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_hard_with_hard_in_progress(self):
|
||||
body = dict(reboot=dict(type="HARD"))
|
||||
@@ -267,7 +266,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
project_id=fakes.FAKE_PROJECT_ID,
|
||||
vm_state=vm_states.ACTIVE,
|
||||
task_state=task_states.REBOOTING_HARD))
|
||||
self.controller._action_reboot(self.req, FAKE_UUID, body=body)
|
||||
self.controller._reboot(self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_reboot_soft_with_hard_in_progress_raises_conflict(self):
|
||||
body = dict(reboot=dict(type="SOFT"))
|
||||
@@ -277,7 +276,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
vm_state=vm_states.ACTIVE,
|
||||
task_state=task_states.REBOOTING_HARD))
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def _test_rebuild_preserve_ephemeral(self, value=None):
|
||||
@@ -297,7 +296,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
body['rebuild']['preserve_ephemeral'] = value
|
||||
|
||||
with mock.patch.object(compute_api.API, 'rebuild') as mock_rebuild:
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
|
||||
if value is not None:
|
||||
mock_rebuild.assert_called_once_with(self.context, mock.ANY,
|
||||
@@ -329,7 +328,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
robj = self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
robj = self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
body = robj.obj
|
||||
|
||||
self.assertEqual(body['server']['image']['id'], uuids.image_ref)
|
||||
@@ -355,7 +354,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.assertEqual(info['image_href_in_call'], self.image_uuid)
|
||||
|
||||
def test_rebuild_instance_with_image_href_uses_uuid(self):
|
||||
@@ -367,7 +366,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_accepted_minimum_pass_disabled(self):
|
||||
@@ -388,7 +387,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
robj = self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
robj = self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
body = robj.obj
|
||||
|
||||
self.assertEqual(body['server']['image']['id'], uuids.image_ref)
|
||||
@@ -406,7 +405,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
mock_rebuild.side_effect = exc
|
||||
self.assertRaises(
|
||||
webob.exc.HTTPConflict,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, uuids.instance,
|
||||
body={'rebuild': {'imageRef': uuids.image}})
|
||||
|
||||
@@ -422,7 +421,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self, exc, mock_rebuild):
|
||||
mock_rebuild.side_effect = exc
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, uuids.instance,
|
||||
body={'rebuild': {'imageRef': uuids.image}})
|
||||
|
||||
@@ -437,7 +436,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self.stub_out('nova.compute.api.API.rebuild', fake_rebuild)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_accepted_with_metadata(self):
|
||||
@@ -456,8 +455,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
body = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=body).obj
|
||||
body = self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
|
||||
self.assertEqual(body['server']['metadata'], metadata)
|
||||
|
||||
@@ -470,7 +468,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_with_too_large_metadata(self):
|
||||
@@ -484,7 +482,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.request_too_large_error,
|
||||
self.controller._action_rebuild, self.req,
|
||||
self.controller._rebuild, self.req,
|
||||
FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_bad_entity(self):
|
||||
@@ -495,7 +493,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_admin_pass(self):
|
||||
@@ -512,8 +510,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
body = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=body).obj
|
||||
body = self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
|
||||
self.assertEqual(body['server']['image']['id'], uuids.image_ref)
|
||||
self.assertEqual(body['server']['adminPass'], 'asdf')
|
||||
@@ -536,8 +533,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
body = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=body).obj
|
||||
body = self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
|
||||
self.assertEqual(body['server']['image']['id'], FAKE_UUID)
|
||||
self.assertNotIn('adminPass', body['server'])
|
||||
@@ -552,7 +548,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
side_effect=exception.InstanceNotFound(
|
||||
instance_id=FAKE_UUID)):
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_with_bad_image(self):
|
||||
@@ -562,7 +558,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_accessIP(self):
|
||||
@@ -592,7 +588,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self.stub_out('nova.compute.api.API.get', wrap_get)
|
||||
self.stub_out('nova.objects.Instance.save', fake_save)
|
||||
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
|
||||
self.assertEqual(self._image_href, data['changes']['image_ref'])
|
||||
self.assertEqual("", data['changes']['kernel_id'])
|
||||
@@ -637,7 +633,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_proper_kernel_ram(self):
|
||||
@@ -690,7 +686,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
"imageRef": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
|
||||
},
|
||||
}
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
self.assertEqual(instance_meta['kernel_id'], uuids.kernel_image_id)
|
||||
self.assertEqual(instance_meta['ramdisk_id'], uuids.ramdisk_image_id)
|
||||
|
||||
@@ -706,7 +702,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
image='dummy')
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'rebuild')
|
||||
@@ -720,7 +716,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
mock_rebuild.side_effect = exception.InvalidArchitectureName('arm64')
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'rebuild')
|
||||
@@ -735,7 +731,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
mock_rebuild.side_effect = exception.InvalidVolume('error')
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_server(self):
|
||||
@@ -749,7 +745,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
|
||||
self.stub_out('nova.compute.api.API.resize', resize_mock)
|
||||
|
||||
self.controller._action_resize(self.req, FAKE_UUID, body=body)
|
||||
self.controller._resize(self.req, FAKE_UUID, body=body)
|
||||
|
||||
self.assertTrue(self.resize_called)
|
||||
|
||||
@@ -757,28 +753,28 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
body = dict(resize=dict())
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_server_no_flavor_ref(self):
|
||||
body = dict(resize=dict(flavorRef=None))
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_server_with_extra_arg(self):
|
||||
body = dict(resize=dict(favorRef="http://localhost/3",
|
||||
extra_arg="extra_arg"))
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_server_invalid_flavor_ref(self):
|
||||
body = dict(resize=dict(flavorRef=1.2))
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_with_server_not_found(self):
|
||||
@@ -787,7 +783,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
side_effect=exception.InstanceNotFound(
|
||||
instance_id=FAKE_UUID)):
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_with_image_exceptions(self):
|
||||
@@ -817,7 +813,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
for call_no in range(len(exceptions)):
|
||||
next_exception = next(expected)
|
||||
actual = self.assertRaises(next_exception,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
if (isinstance(exceptions[call_no][0],
|
||||
exception.NoValidHost)):
|
||||
@@ -835,7 +831,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
def test_resize_raises_cannot_resize_disk(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
@@ -844,7 +840,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
def test_resize_raises_flavor_not_found(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_with_too_many_instances(self):
|
||||
@@ -856,7 +852,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self.stub_out('nova.compute.api.API.resize', fake_resize)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPForbidden,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_resize_raises_conflict_on_invalid_state(self):
|
||||
@@ -870,7 +866,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
self.stub_out('nova.compute.api.API.resize', fake_resize)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'resize')
|
||||
@@ -881,7 +877,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
@@ -891,7 +887,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
# Tests that PciRequestAliasNotDefined is translated to a 400 error.
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
@@ -899,7 +895,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
def test_resize_raises_badrequest_for_accelerator(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.resize',
|
||||
@@ -908,7 +904,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
def test_resize_raises_badrequest_for_vdpaInterface(self, mock_resize):
|
||||
body = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_confirm_resize_server(self):
|
||||
@@ -921,7 +917,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
|
||||
self.stub_out('nova.compute.api.API.confirm_resize', cr_mock)
|
||||
|
||||
self.controller._action_confirm_resize(self.req, FAKE_UUID, body=body)
|
||||
self.controller._confirm_resize(self.req, FAKE_UUID, body=body)
|
||||
|
||||
self.assertTrue(self.confirm_resize_called)
|
||||
|
||||
@@ -936,7 +932,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
confirm_resize_mock)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_confirm_resize,
|
||||
self.controller._confirm_resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_confirm_resize_raises_conflict_on_invalid_state(self):
|
||||
@@ -951,7 +947,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
fake_confirm_resize)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_confirm_resize,
|
||||
self.controller._confirm_resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_revert_resize_migration_not_found(self):
|
||||
@@ -965,7 +961,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
revert_resize_mock)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_revert_resize,
|
||||
self.controller._revert_resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_revert_resize_server_not_found(self):
|
||||
@@ -974,7 +970,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
side_effect=exception.InstanceNotFound(
|
||||
instance_id='bad_server_id')):
|
||||
self.assertRaises(webob. exc.HTTPNotFound,
|
||||
self.controller._action_revert_resize,
|
||||
self.controller._revert_resize,
|
||||
self.req, "bad_server_id", body=body)
|
||||
|
||||
def test_revert_resize_server(self):
|
||||
@@ -987,8 +983,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
|
||||
self.stub_out('nova.compute.api.API.revert_resize', revert_mock)
|
||||
|
||||
body = self.controller._action_revert_resize(self.req, FAKE_UUID,
|
||||
body=body)
|
||||
self.controller._revert_resize(self.req, FAKE_UUID, body=body)
|
||||
|
||||
self.assertTrue(self.revert_resize_called)
|
||||
|
||||
@@ -1004,7 +999,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
fake_revert_resize)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_revert_resize,
|
||||
self.controller._revert_resize,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_create_image(self):
|
||||
@@ -1014,8 +1009,8 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
response = self.controller._action_create_image(self.req, FAKE_UUID,
|
||||
body=body)
|
||||
response = self.controller._create_image(
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
if self.image_url:
|
||||
expected_location = self.image_url + uuids.snapshot_id
|
||||
@@ -1035,8 +1030,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
req = fakes.HTTPRequest.blank('', version='2.45')
|
||||
response = self.controller._action_create_image(req, FAKE_UUID,
|
||||
body=body)
|
||||
response = self.controller._create_image(req, FAKE_UUID, body=body)
|
||||
self.assertIsInstance(response, dict)
|
||||
self.assertEqual(uuids.snapshot_id, response['image_id'])
|
||||
|
||||
@@ -1049,7 +1043,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_create_image, self.req,
|
||||
self.controller._create_image, self.req,
|
||||
FAKE_UUID, body=body)
|
||||
|
||||
def _do_test_create_volume_backed_image(
|
||||
@@ -1127,8 +1121,8 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
if mock_vol_create_side_effect:
|
||||
mock_vol_create.side_effect = mock_vol_create_side_effect
|
||||
|
||||
response = self.controller._action_create_image(self.req,
|
||||
FAKE_UUID, body=body)
|
||||
response = self.controller._create_image(
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
location = response.headers['Location']
|
||||
image_id = location.replace(self.image_url or
|
||||
@@ -1235,9 +1229,8 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
'create_snapshot_force',
|
||||
return_value=snapshot),
|
||||
) as (mock_get_limits, mock_vol_get, mock_vol_create):
|
||||
|
||||
response = self.controller._action_create_image(self.req,
|
||||
FAKE_UUID, body=body)
|
||||
response = self.controller._create_image(
|
||||
self.req, FAKE_UUID, body=body)
|
||||
location = response.headers['Location']
|
||||
image_id = location.replace(self.image_base_url, '')
|
||||
image = image_service.show(None, image_id)
|
||||
@@ -1269,8 +1262,8 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
response = self.controller._action_create_image(self.req, FAKE_UUID,
|
||||
body=body)
|
||||
response = self.controller._create_image(
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
if self.image_url:
|
||||
expected_location = self.image_url + uuids.snapshot_id
|
||||
@@ -1291,7 +1284,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
body['createImage']['metadata']['foo%i' % num] = "bar"
|
||||
|
||||
self.assertRaises(webob.exc.HTTPForbidden,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_create_image_no_name(self):
|
||||
@@ -1300,7 +1293,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_create_image_blank_name(self):
|
||||
@@ -1311,7 +1304,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_create_image_bad_metadata(self):
|
||||
@@ -1323,7 +1316,7 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(self.validation_error,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_create_image_raises_conflict_on_invalid_state(self):
|
||||
@@ -1340,5 +1333,5 @@ class ServerActionsControllerTestV21(test.TestCase):
|
||||
}
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
@@ -43,7 +43,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
@mock.patch.object(compute_api.API, 'start')
|
||||
def test_start(self, start_mock):
|
||||
body = {'os-start': None}
|
||||
self.controller._start_server(self.req, uuids.instance, body=body)
|
||||
self.controller._start(self.req, uuids.instance, body=body)
|
||||
start_mock.assert_called_once_with(mock.ANY, mock.ANY)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'start',
|
||||
@@ -52,7 +52,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_start_not_ready(self, start_mock):
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, self.req, uuids.instance, body=body)
|
||||
self.controller._start, self.req, uuids.instance, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'start',
|
||||
side_effect=exception.InstanceIsLocked(
|
||||
@@ -60,7 +60,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_start_locked_server(self, start_mock):
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, self.req, uuids.instance, body=body)
|
||||
self.controller._start, self.req, uuids.instance, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'start',
|
||||
side_effect=exception.InstanceIsLocked(
|
||||
@@ -68,13 +68,13 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_start_invalid_state(self, start_mock):
|
||||
body = {'os-start': None}
|
||||
ex = self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, self.req, uuids.instance, body=body)
|
||||
self.controller._start, self.req, uuids.instance, body=body)
|
||||
self.assertIn('is locked', str(ex))
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop')
|
||||
def test_stop(self, stop_mock):
|
||||
body = {'os-stop': None}
|
||||
self.controller._stop_server(self.req, uuids.instance, body=body)
|
||||
self.controller._stop(self.req, uuids.instance, body=body)
|
||||
stop_mock.assert_called_once_with(mock.ANY, mock.ANY)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop',
|
||||
@@ -83,7 +83,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_stop_not_ready(self, stop_mock):
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, self.req, uuids.instance, body=body)
|
||||
self.controller._stop, self.req, uuids.instance, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop',
|
||||
side_effect=exception.InstanceIsLocked(
|
||||
@@ -91,7 +91,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_stop_locked_server(self, stop_mock):
|
||||
body = {'os-stop': None}
|
||||
ex = self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, self.req, uuids.instance, body=body)
|
||||
self.controller._stop, self.req, uuids.instance, body=body)
|
||||
self.assertIn('is locked', str(ex))
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop',
|
||||
@@ -100,7 +100,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_stop_invalid_state(self, stop_mock):
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, self.req, uuids.instance, body=body)
|
||||
self.controller._stop, self.req, uuids.instance, body=body)
|
||||
|
||||
@mock.patch.object(db, 'instance_get_by_uuid',
|
||||
side_effect=exception.InstanceNotFound(
|
||||
@@ -108,7 +108,7 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_start_with_bogus_id(self, get_mock):
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._start_server, self.req, uuids.instance, body=body)
|
||||
self.controller._start, self.req, uuids.instance, body=body)
|
||||
|
||||
@mock.patch.object(db, 'instance_get_by_uuid',
|
||||
side_effect=exception.InstanceNotFound(
|
||||
@@ -116,4 +116,4 @@ class ServerStartStopTestV21(test.TestCase):
|
||||
def test_stop_with_bogus_id(self, get_mock):
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._stop_server, self.req, uuids.instance, body=body)
|
||||
self.controller._stop, self.req, uuids.instance, body=body)
|
||||
|
||||
@@ -2930,7 +2930,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
def test_start(self, mock_start):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-start': None}
|
||||
self.controller._start_server(req, FAKE_UUID, body=body)
|
||||
self.controller._start(req, FAKE_UUID, body=body)
|
||||
mock_start.assert_called_once_with(mock.ANY, mock.ANY)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'start')
|
||||
@@ -2941,7 +2941,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, req, FAKE_UUID, body=body)
|
||||
self.controller._start, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(
|
||||
compute_api.API, 'start', fakes.fake_actions_to_locked_server)
|
||||
@@ -2949,7 +2949,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, req, FAKE_UUID, body=body)
|
||||
self.controller._start, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'start')
|
||||
def test_start_invalid(self, mock_start):
|
||||
@@ -2960,13 +2960,13 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._start_server, req, FAKE_UUID, body=body)
|
||||
self.controller._start, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop')
|
||||
def test_stop(self, mock_stop):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-stop': None}
|
||||
self.controller._stop_server(req, FAKE_UUID, body=body)
|
||||
self.controller._stop(req, FAKE_UUID, body=body)
|
||||
mock_stop.assert_called_once_with(mock.ANY, mock.ANY)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop')
|
||||
@@ -2977,7 +2977,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, req, FAKE_UUID, body=body)
|
||||
self.controller._stop, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(
|
||||
compute_api.API, 'stop', fakes.fake_actions_to_locked_server)
|
||||
@@ -2985,7 +2985,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, req, FAKE_UUID, body=body)
|
||||
self.controller._stop, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'stop')
|
||||
def test_stop_invalid_state(self, mock_stop):
|
||||
@@ -2996,7 +2996,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % FAKE_UUID)
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._stop_server, req, FAKE_UUID, body=body)
|
||||
self.controller._stop, req, FAKE_UUID, body=body)
|
||||
|
||||
@mock.patch('nova.db.main.api.instance_get_by_uuid')
|
||||
def test_start_with_bogus_id(self, mock_get):
|
||||
@@ -3005,7 +3005,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % 'test_inst')
|
||||
body = {'os-start': None}
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._start_server, req, 'test_inst', body=body)
|
||||
self.controller._start, req, 'test_inst', body=body)
|
||||
|
||||
@mock.patch('nova.db.main.api.instance_get_by_uuid')
|
||||
def test_stop_with_bogus_id(self, mock_get):
|
||||
@@ -3014,7 +3014,7 @@ class ServersControllerStartStopTest(ControllerTest):
|
||||
req = fakes.HTTPRequestV21.blank(self.path_action % 'test_inst')
|
||||
body = {'os-stop': None}
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._stop_server, req, 'test_inst', body=body)
|
||||
self.controller._stop, req, 'test_inst', body=body)
|
||||
|
||||
|
||||
class _ServersControllerRebuildTest(ControllerTest):
|
||||
@@ -3061,7 +3061,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
def test_rebuild_server_with_image_not_uuid(self):
|
||||
self.body['rebuild']['imageRef'] = 'not-uuid'
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
|
||||
@@ -3071,27 +3071,27 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
'76fa36fc-c930-4bf3-8c8a-ea2a2420deb6')
|
||||
self.body['rebuild']['imageRef'] = image_href
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
|
||||
def test_rebuild_server_with_image_as_empty_string(self):
|
||||
self.body['rebuild']['imageRef'] = ''
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
|
||||
def test_rebuild_instance_name_with_spaces_in_the_middle(self):
|
||||
self.body['rebuild']['name'] = 'abc def'
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=self.body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_name_with_leading_trailing_spaces(self):
|
||||
self.body['rebuild']['name'] = ' abc def '
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_name_with_leading_trailing_spaces_compat_mode(
|
||||
@@ -3105,14 +3105,13 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
|
||||
with mock.patch.object(compute_api.API, 'rebuild') as mock_rebuild:
|
||||
mock_rebuild.side_effect = fake_rebuild
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_with_blank_metadata_key(self):
|
||||
self.body['rebuild']['metadata'][''] = 'world'
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_with_metadata_key_too_long(self):
|
||||
@@ -3120,7 +3119,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_with_metadata_value_too_long(self):
|
||||
@@ -3128,7 +3127,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild, self.req,
|
||||
self.controller._rebuild, self.req,
|
||||
FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_with_metadata_value_not_string(self):
|
||||
@@ -3136,7 +3135,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild, self.req,
|
||||
self.controller._rebuild, self.req,
|
||||
FAKE_UUID, body=self.body)
|
||||
|
||||
@mock.patch.object(nova_fixtures.GlanceFixture, 'show',
|
||||
@@ -3149,7 +3148,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
# make min_ram larger than our instance ram size
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
mock_show.assert_called_once_with(
|
||||
self.req.environ['nova.context'], self.image_uuid,
|
||||
@@ -3165,7 +3164,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
# make min_disk larger than our instance disk size
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild, self.req,
|
||||
self.controller._rebuild, self.req,
|
||||
FAKE_UUID, body=self.body)
|
||||
mock_show.assert_called_once_with(
|
||||
self.req.environ['nova.context'], self.image_uuid,
|
||||
@@ -3180,7 +3179,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
# make image size larger than our instance disk size
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
mock_show.assert_called_once_with(
|
||||
self.req.environ['nova.context'], self.image_uuid,
|
||||
@@ -3190,7 +3189,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
self.body['rebuild']['name'] = ' '
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
@mock.patch.object(nova_fixtures.GlanceFixture, 'show',
|
||||
@@ -3201,7 +3200,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
def test_rebuild_instance_with_deleted_image(self, mock_show):
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
mock_show.assert_called_once_with(
|
||||
self.req.environ['nova.context'], self.image_uuid,
|
||||
@@ -3222,7 +3221,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
):
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(webob.exc.HTTPForbidden,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_bad_personality(self):
|
||||
@@ -3241,7 +3240,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
}
|
||||
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_personality(self):
|
||||
@@ -3259,8 +3258,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
|
||||
body = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=body).obj
|
||||
body = self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
|
||||
self.assertNotIn('personality', body['server'])
|
||||
|
||||
@@ -3277,8 +3275,7 @@ class ServersControllerRebuildTest(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
|
||||
body = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=body).obj
|
||||
body = self.controller._rebuild(self.req, FAKE_UUID, body=body).obj
|
||||
get_only_fields = copy.deepcopy(GET_ONLY_FIELDS)
|
||||
for field in get_only_fields:
|
||||
self.assertNotIn(field, body['server'])
|
||||
@@ -3303,7 +3300,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
if set_key_name:
|
||||
self.body['rebuild']['key_name'] = key_name
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
server = self.controller._action_rebuild(
|
||||
server = self.controller._rebuild(
|
||||
self.req, FAKE_UUID,
|
||||
body=self.body).obj['server']
|
||||
self.assertEqual(server['id'], FAKE_UUID)
|
||||
@@ -3325,7 +3322,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
excpt = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
self.assertIn('key_name', str(excpt))
|
||||
|
||||
@@ -3337,7 +3334,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_user_has_no_key_pair(self):
|
||||
@@ -3351,7 +3348,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
self.mock_get.side_effect = fake_get
|
||||
self.body['rebuild']['key_name'] = "a-key-name"
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_with_non_string_keypair_name(self):
|
||||
@@ -3362,7 +3359,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_with_invalid_keypair_name(self):
|
||||
@@ -3373,7 +3370,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_with_empty_keypair_name(self):
|
||||
@@ -3384,7 +3381,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
def test_rebuild_with_none_keypair_name(self):
|
||||
@@ -3397,7 +3394,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
with mock.patch.object(objects.KeyPair, 'get_by_name') as key_get:
|
||||
self.body['rebuild']['key_name'] = key_name
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.controller._action_rebuild(
|
||||
self.controller._rebuild(
|
||||
self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
# NOTE: because the api will call _get_server twice. The server
|
||||
@@ -3413,7 +3410,7 @@ class ServersControllerRebuildTestV254(_ServersControllerRebuildTest):
|
||||
},
|
||||
}
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
|
||||
|
||||
@@ -3439,7 +3436,7 @@ class ServersControllerRebuildTestV257(_ServersControllerRebuildTest):
|
||||
}
|
||||
}
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
self.assertIn('personality', str(ex))
|
||||
|
||||
@@ -3454,7 +3451,7 @@ class ServersControllerRebuildTestV257(_ServersControllerRebuildTest):
|
||||
self.req.api_version_request = \
|
||||
api_version_request.APIVersionRequest('2.55')
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
self.assertIn('user_data', str(ex))
|
||||
|
||||
@@ -3467,7 +3464,7 @@ class ServersControllerRebuildTestV257(_ServersControllerRebuildTest):
|
||||
}
|
||||
}
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
self.assertIn('user_data', str(ex))
|
||||
|
||||
@@ -3480,7 +3477,7 @@ class ServersControllerRebuildTestV257(_ServersControllerRebuildTest):
|
||||
}
|
||||
}
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=body)
|
||||
self.assertIn('user_data', str(ex))
|
||||
|
||||
@@ -3512,7 +3509,7 @@ class ServersControllerRebuildTestV257(_ServersControllerRebuildTest):
|
||||
return instance_update_and_get_original(
|
||||
ctxt, instance_uuid, values, **kwargs)
|
||||
mock_update.side_effect = fake_instance_update_and_get_original
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.controller._rebuild(self.req, FAKE_UUID, body=body)
|
||||
self.assertEqual(2, mock_update.call_count)
|
||||
|
||||
|
||||
@@ -3533,8 +3530,8 @@ class ServersControllerRebuildTestV219(_ServersControllerRebuildTest):
|
||||
if set_desc:
|
||||
self.body['rebuild']['description'] = desc
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
server = self.controller._action_rebuild(self.req, FAKE_UUID,
|
||||
body=self.body).obj['server']
|
||||
server = self.controller._rebuild(
|
||||
self.req, FAKE_UUID, body=self.body).obj['server']
|
||||
self.assertEqual(server['id'], FAKE_UUID)
|
||||
self.assertEqual(server['description'], desc)
|
||||
|
||||
@@ -3554,7 +3551,7 @@ class ServersControllerRebuildTestV219(_ServersControllerRebuildTest):
|
||||
self.body['rebuild']['description'] = 'x' * 256
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_server_description_invalid(self):
|
||||
@@ -3562,7 +3559,7 @@ class ServersControllerRebuildTestV219(_ServersControllerRebuildTest):
|
||||
self.body['rebuild']['description'] = "123\0d456"
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
|
||||
@@ -3607,12 +3604,12 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
|
||||
self.body['rebuild']['trusted_image_certificates'] = certs
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
server = self.controller._action_rebuild(
|
||||
server = self.controller._rebuild(
|
||||
self.req, FAKE_UUID, body=self.body).obj['server']
|
||||
|
||||
# TODO(stephenfin): This is a lie. We call '_get_server' immediately
|
||||
# after making the call to 'nova.compute.api.API().rebuild_server' in
|
||||
# '_action_rebuild', which means all we're testing here is the value
|
||||
# '_rebuild', which means all we're testing here is the value
|
||||
# returned by 'mock_get' above. Drop it in favour of testing the calls
|
||||
# to the API itself
|
||||
if certs:
|
||||
@@ -3658,7 +3655,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.body['rebuild']['trusted_image_certificates'] = ['']
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertRegex(
|
||||
str(ex),
|
||||
@@ -3670,7 +3667,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.body['rebuild']['trusted_image_certificates'] = []
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertRegex(
|
||||
str(ex),
|
||||
@@ -3683,7 +3680,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
'cert{}'.format(i) for i in range(51)]
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertIn('is too long', str(ex))
|
||||
|
||||
@@ -3692,7 +3689,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.body['rebuild']['trusted_image_certificates'] = ['cert', 'cert']
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertIn('has non-unique elements', str(ex))
|
||||
|
||||
@@ -3701,7 +3698,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.body['rebuild']['trusted_image_certificates'] = [1, 2]
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertIn('is not of type', str(ex))
|
||||
|
||||
@@ -3710,7 +3707,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.body['rebuild']['trusted_image_certificates'] = "not-an-array"
|
||||
self.req.body = jsonutils.dump_as_bytes(self.body)
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertIn('is not of type', str(ex))
|
||||
|
||||
@@ -3720,7 +3717,7 @@ class ServersControllerRebuildTestV263(ControllerTest):
|
||||
self.req.api_version_request = \
|
||||
api_version_request.APIVersionRequest('2.62')
|
||||
ex = self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
self.assertIn('Additional properties are not allowed', str(ex))
|
||||
|
||||
@@ -3762,7 +3759,7 @@ class ServersControllerRebuildTestV271(ControllerTest):
|
||||
self.mock_get.return_value = fakes.stub_instance_obj(ctx,
|
||||
vm_state=vm_states.ACTIVE, project_id=self.req_project_id,
|
||||
user_id=self.req_user_id)
|
||||
server = self.controller._action_rebuild(
|
||||
server = self.controller._rebuild(
|
||||
self.req, FAKE_UUID, body=self.body).obj['server']
|
||||
return server
|
||||
|
||||
@@ -3809,8 +3806,7 @@ class ServersControllerRebuildTestV275(ControllerTest):
|
||||
user_id=req.environ['nova.context'].user_id)
|
||||
self.mock_get.side_effect = fake_get
|
||||
|
||||
res_dict = self.controller._action_rebuild(req, FAKE_UUID,
|
||||
body=body).obj
|
||||
res_dict = self.controller._rebuild(req, FAKE_UUID, body=body).obj
|
||||
get_only_fields_Rebuild = copy.deepcopy(GET_ONLY_FIELDS)
|
||||
get_only_fields_Rebuild.remove('key_name')
|
||||
for field in get_only_fields_Rebuild:
|
||||
@@ -3848,8 +3844,7 @@ class ServersControllerRebuildTestV275(ControllerTest):
|
||||
project_id=req.environ['nova.context'].project_id,
|
||||
user_id=req.environ['nova.context'].user_id)
|
||||
|
||||
res_dict = self.controller._action_rebuild(req, FAKE_UUID,
|
||||
body=body).obj
|
||||
res_dict = self.controller._rebuild(req, FAKE_UUID, body=body).obj
|
||||
for field in GET_ONLY_FIELDS:
|
||||
if field == 'OS-EXT-SRV-ATTR:user_data':
|
||||
self.assertNotIn(field, res_dict['server'])
|
||||
@@ -3928,7 +3923,7 @@ class ServersControllerRebuildTestV290(ControllerTest):
|
||||
# There's nothing to check here from the return value since the
|
||||
# 'rebuild' API is a cast and we immediately fetch the instance from
|
||||
# the database after this cast...which returns a mocked Instance
|
||||
server = self.controller._action_rebuild(
|
||||
server = self.controller._rebuild(
|
||||
req, FAKE_UUID, body=body,
|
||||
).obj['server']
|
||||
|
||||
@@ -3952,7 +3947,7 @@ class ServersControllerRebuildTestV290(ControllerTest):
|
||||
|
||||
ex = self.assertRaises(
|
||||
exception.ValidationError,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
req, FAKE_UUID, body=body)
|
||||
self.assertIn('hostname', str(ex))
|
||||
|
||||
@@ -4291,8 +4286,8 @@ class ServersControllerTriggerCrashDumpTest(ControllerTest):
|
||||
@mock.patch.object(compute_api.API, 'trigger_crash_dump')
|
||||
def test_trigger_crash_dump(self, mock_trigger_crash_dump):
|
||||
ctxt = self.req.environ['nova.context']
|
||||
self.controller._action_trigger_crash_dump(self.req, FAKE_UUID,
|
||||
body=self.body)
|
||||
self.controller._trigger_crash_dump(
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
mock_trigger_crash_dump.assert_called_with(ctxt, self.instance)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'trigger_crash_dump')
|
||||
@@ -4301,14 +4296,14 @@ class ServersControllerTriggerCrashDumpTest(ControllerTest):
|
||||
instance_id=FAKE_UUID)
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'trigger_crash_dump',
|
||||
fakes.fake_actions_to_locked_server)
|
||||
def test_trigger_crash_dump_locked_server(self):
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
@mock.patch.object(compute_api.API, 'trigger_crash_dump')
|
||||
@@ -4318,24 +4313,24 @@ class ServersControllerTriggerCrashDumpTest(ControllerTest):
|
||||
method='fake_method', state='fake_state')
|
||||
|
||||
self.assertRaises(webob.exc.HTTPConflict,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_trigger_crash_dump_with_bogus_id(self):
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, 'test_inst', body=self.body)
|
||||
|
||||
def test_trigger_crash_dump_schema_invalid_type(self):
|
||||
self.body['trigger_crash_dump'] = 'not null'
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_trigger_crash_dump_schema_extra_property(self):
|
||||
self.body['extra_property'] = 'extra'
|
||||
self.assertRaises(exception.ValidationError,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
|
||||
@@ -8584,7 +8579,7 @@ class ServersActionsJsonTestV239(test.NoDBTestCase):
|
||||
},
|
||||
}
|
||||
self.assertRaises(webob.exc.HTTPNotFound,
|
||||
self.controller._action_create_image, self.req,
|
||||
self.controller._create_image, self.req,
|
||||
FAKE_UUID, body=body)
|
||||
# starting from version 2.39 no quota checks on Nova side are performed
|
||||
# for 'createImage' action after removing 'image-metadata' proxy API
|
||||
|
||||
@@ -419,7 +419,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'show:flavor-extra-specs'
|
||||
authorize_res, unauthorize_res = self.common_policy_auth(
|
||||
self.project_reader_authorized_contexts,
|
||||
rule_name, self.controller._action_rebuild,
|
||||
rule_name, self.controller._rebuild,
|
||||
req, self.instance.uuid,
|
||||
body={'rebuild': {"imageRef": uuids.fake_id}},
|
||||
fatal=False)
|
||||
@@ -629,7 +629,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_confirm_resize,
|
||||
self.controller._confirm_resize,
|
||||
self.req, self.instance.uuid,
|
||||
body={'confirmResize': None})
|
||||
|
||||
@@ -639,7 +639,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_revert_resize,
|
||||
self.controller._revert_resize,
|
||||
self.req, self.instance.uuid,
|
||||
body={'revertResize': None})
|
||||
|
||||
@@ -649,7 +649,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_reboot,
|
||||
self.controller._reboot,
|
||||
self.req, self.instance.uuid,
|
||||
body={'reboot': {'type': 'soft'}})
|
||||
|
||||
@@ -658,7 +658,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'resize'
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_resize,
|
||||
self.controller._resize,
|
||||
self.req, self.instance.uuid,
|
||||
body={'resize': {'flavorRef': 'f1'}})
|
||||
|
||||
@@ -671,7 +671,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
exc = self.assertRaises(
|
||||
exception.PolicyNotAuthorized, self.controller._action_resize,
|
||||
exception.PolicyNotAuthorized, self.controller._resize,
|
||||
req, self.instance.uuid, body=body)
|
||||
self.assertEqual(
|
||||
"Policy doesn't allow %s to be performed." % rule_name,
|
||||
@@ -684,30 +684,30 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
body = {'resize': {'flavorRef': 'f1'}}
|
||||
self.controller._action_resize(self.req,
|
||||
self.controller._resize(self.req,
|
||||
self.instance.uuid, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.start')
|
||||
def test_start_server_policy(self, mock_start):
|
||||
def test_start_policy(self, mock_start):
|
||||
rule_name = policies.SERVERS % 'start'
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._start_server,
|
||||
self.controller._start,
|
||||
self.req, self.instance.uuid,
|
||||
body={'os-start': None})
|
||||
|
||||
@mock.patch('nova.compute.api.API.stop')
|
||||
def test_stop_server_policy(self, mock_stop):
|
||||
def test_stop_policy(self, mock_stop):
|
||||
rule_name = policies.SERVERS % 'stop'
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._stop_server,
|
||||
self.controller._stop,
|
||||
self.req, self.instance.uuid,
|
||||
body={'os-stop': None})
|
||||
|
||||
def test_stop_server_policy_failed_with_other_user(self):
|
||||
def test_stop_policy_failed_with_other_user(self):
|
||||
# Change the user_id in request context.
|
||||
req = fakes.HTTPRequest.blank('')
|
||||
req.environ['nova.context'].user_id = 'other-user'
|
||||
@@ -716,20 +716,20 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
exc = self.assertRaises(
|
||||
exception.PolicyNotAuthorized, self.controller._stop_server,
|
||||
exception.PolicyNotAuthorized, self.controller._stop,
|
||||
req, self.instance.uuid, body=body)
|
||||
self.assertEqual(
|
||||
"Policy doesn't allow %s to be performed." % rule_name,
|
||||
exc.format_message())
|
||||
|
||||
@mock.patch('nova.compute.api.API.stop')
|
||||
def test_stop_server_overridden_policy_pass_with_same_user(
|
||||
def test_stop_overridden_policy_pass_with_same_user(
|
||||
self, mock_stop):
|
||||
rule_name = policies.SERVERS % 'stop'
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
body = {'os-stop': None}
|
||||
self.controller._stop_server(self.req,
|
||||
self.controller._stop(self.req,
|
||||
self.instance.uuid, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.rebuild')
|
||||
@@ -737,7 +737,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'rebuild'
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
self.req, self.instance.uuid,
|
||||
body={'rebuild': {"imageRef": uuids.fake_id}})
|
||||
|
||||
@@ -750,7 +750,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
exc = self.assertRaises(
|
||||
exception.PolicyNotAuthorized, self.controller._action_rebuild,
|
||||
exception.PolicyNotAuthorized, self.controller._rebuild,
|
||||
req, self.instance.uuid, body=body)
|
||||
self.assertEqual(
|
||||
"Policy doesn't allow %s to be performed." % rule_name,
|
||||
@@ -763,7 +763,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
body = {'rebuild': {"imageRef": uuids.fake_id}}
|
||||
self.controller._action_rebuild(self.req,
|
||||
self.controller._rebuild(self.req,
|
||||
self.instance.uuid, body=body)
|
||||
|
||||
@mock.patch('nova.compute.api.API.rebuild')
|
||||
@@ -790,7 +790,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
check_rule,
|
||||
self.controller._action_rebuild,
|
||||
self.controller._rebuild,
|
||||
req, self.instance.uuid, body=body)
|
||||
|
||||
def test_rebuild_trusted_certs_policy_failed_with_other_user(self):
|
||||
@@ -810,7 +810,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
exc = self.assertRaises(
|
||||
exception.PolicyNotAuthorized, self.controller._action_rebuild,
|
||||
exception.PolicyNotAuthorized, self.controller._rebuild,
|
||||
req, self.instance.uuid, body=body)
|
||||
self.assertEqual(
|
||||
"Policy doesn't allow %s to be performed." % rule_name,
|
||||
@@ -831,7 +831,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules(
|
||||
{rule: "@",
|
||||
rule_name: "user_id:%(user_id)s"}, overwrite=False)
|
||||
self.controller._action_rebuild(req,
|
||||
self.controller._rebuild(req,
|
||||
self.instance.uuid, body=body)
|
||||
|
||||
@mock.patch('nova.objects.BlockDeviceMappingList.get_by_instance_uuid')
|
||||
@@ -842,7 +842,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'create_image'
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, self.instance.uuid,
|
||||
body={'createImage': {"name": 'test'}})
|
||||
|
||||
@@ -866,7 +866,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
base.rule_if_system, rule, rule_name)
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
check_rule,
|
||||
self.controller._action_create_image,
|
||||
self.controller._create_image,
|
||||
self.req, self.instance.uuid,
|
||||
body={'createImage': {"name": 'test'}})
|
||||
|
||||
@@ -876,7 +876,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
req = fakes.HTTPRequest.blank('', version='2.17')
|
||||
self.common_policy_auth(self.project_action_authorized_contexts,
|
||||
rule_name,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
req, self.instance.uuid,
|
||||
body={'trigger_crash_dump': None})
|
||||
|
||||
@@ -890,7 +890,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
overwrite=False)
|
||||
exc = self.assertRaises(
|
||||
exception.PolicyNotAuthorized,
|
||||
self.controller._action_trigger_crash_dump,
|
||||
self.controller._trigger_crash_dump,
|
||||
req, self.instance.uuid, body=body)
|
||||
self.assertEqual(
|
||||
"Policy doesn't allow %s to be performed." % rule_name,
|
||||
@@ -904,7 +904,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
self.policy.set_rules({rule_name: "user_id:%(user_id)s"},
|
||||
overwrite=False)
|
||||
body = {'trigger_crash_dump': None}
|
||||
self.controller._action_trigger_crash_dump(req,
|
||||
self.controller._trigger_crash_dump(req,
|
||||
self.instance.uuid, body=body)
|
||||
|
||||
def test_server_detail_with_extended_attr_policy(self):
|
||||
@@ -967,7 +967,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = ea_policies.BASE_POLICY_NAME
|
||||
authorize_res, unauthorize_res = self.common_policy_auth(
|
||||
self.project_admin_authorized_contexts,
|
||||
rule_name, self.controller._action_rebuild,
|
||||
rule_name, self.controller._rebuild,
|
||||
req, self.instance.uuid,
|
||||
body={'rebuild': {"imageRef": uuids.fake_id}},
|
||||
fatal=False)
|
||||
@@ -1074,7 +1074,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'show:host_status'
|
||||
authorize_res, unauthorize_res = self.common_policy_auth(
|
||||
self.project_admin_authorized_contexts,
|
||||
rule_name, self.controller._action_rebuild,
|
||||
rule_name, self.controller._rebuild,
|
||||
req, self.instance.uuid,
|
||||
body={'rebuild': {"imageRef": uuids.fake_id}},
|
||||
fatal=False)
|
||||
@@ -1193,7 +1193,7 @@ class ServersPolicyTest(base.BasePolicyTest):
|
||||
rule_name = policies.SERVERS % 'show:host_status:unknown-only'
|
||||
authorize_res, unauthorize_res = self.common_policy_auth(
|
||||
self.project_admin_authorized_contexts,
|
||||
rule_name, self.controller._action_rebuild,
|
||||
rule_name, self.controller._rebuild,
|
||||
req, self.instance.uuid,
|
||||
body={'rebuild': {"imageRef": uuids.fake_id}},
|
||||
fatal=False)
|
||||
|
||||
Reference in New Issue
Block a user