diff options
| author | Andrew Laski <andrew.laski@rackspace.com> | 2013-04-18 14:36:26 -0400 |
|---|---|---|
| committer | Andrew Laski <andrew.laski@rackspace.com> | 2013-04-18 16:28:45 -0400 |
| commit | 7e006ca39fc57e35244f471c0f0bb6773fdbbc28 (patch) | |
| tree | b3ff33cfab07c5363b408a20c75c80b37fdc39e4 /nova/tests | |
| parent | 3572a07311788b17f3645a2e4d89cd338907d24c (diff) | |
| download | nova-7e006ca39fc57e35244f471c0f0bb6773fdbbc28.tar.gz nova-7e006ca39fc57e35244f471c0f0bb6773fdbbc28.tar.xz nova-7e006ca39fc57e35244f471c0f0bb6773fdbbc28.zip | |
Don't swallow PolicyNotAuthorized for resize/reboot actions
Removes 'except Exception' lines in the api which were preventing
PolicyNotAuthorized exceptions from bubbling up and returning 403 to the
caller. This addresses policy exceptions in confirmResize,
revertResize, and reboot.
The try block calls into the compute api which sends a cast to perform
to bulk of the work, so there is little chance of an exception bubbling
up which is not already being caught.
Removes a unit test for a condition that should not exist.
Bug 1170453
Change-Id: I516a19894ab3d183057c774e84c4faa7053a6463
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/compute/test_server_actions.py | 12 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_servers.py | 40 |
2 files changed, 40 insertions, 12 deletions
diff --git a/nova/tests/api/openstack/compute/test_server_actions.py b/nova/tests/api/openstack/compute/test_server_actions.py index 754e103d4..c5d57ecbb 100644 --- a/nova/tests/api/openstack/compute/test_server_actions.py +++ b/nova/tests/api/openstack/compute/test_server_actions.py @@ -195,18 +195,6 @@ class ServerActionsControllerTest(test.TestCase): self.controller._action_reboot, req, FAKE_UUID, body) - def test_reboot_raises_unprocessable_entity(self): - body = dict(reboot=dict(type="HARD")) - - def fake_reboot(*args, **kwargs): - raise NotImplementedError() - - self.stubs.Set(compute_api.API, 'reboot', fake_reboot) - req = fakes.HTTPRequest.blank(self.url) - self.assertRaises(webob.exc.HTTPUnprocessableEntity, - self.controller._action_reboot, - req, FAKE_UUID, body) - def test_rebuild_accepted_minimum(self): return_server = fakes.fake_instance_get(image_ref='2', vm_state=vm_states.ACTIVE, host='fake_host') diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 5a0c8a901..7748c2e33 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -1636,6 +1636,20 @@ class ServerStatusTest(test.TestCase): task_states.REBOOTING_HARD) self.assertEqual(response['server']['status'], 'HARD_REBOOT') + def test_reboot_resize_policy_fail(self): + def fake_get_server(context, req, id): + return fakes.stub_instance(id) + + self.stubs.Set(self.controller, '_get_server', fake_get_server) + + rule = {'compute:reboot': + common_policy.parse_rule('role:admin')} + common_policy.set_rules(common_policy.Rules(rule)) + req = fakes.HTTPRequest.blank('/v2/fake/servers/1234/action') + self.assertRaises(exception.PolicyNotAuthorized, + self.controller._action_reboot, req, '1234', + {'reboot': {'type': 'HARD'}}) + def test_rebuild(self): response = self._get_with_state(vm_states.ACTIVE, task_states.REBUILDING) @@ -1650,6 +1664,19 @@ class ServerStatusTest(test.TestCase): task_states.RESIZE_PREP) self.assertEqual(response['server']['status'], 'RESIZE') + def test_confirm_resize_policy_fail(self): + def fake_get_server(context, req, id): + return fakes.stub_instance(id) + + self.stubs.Set(self.controller, '_get_server', fake_get_server) + + rule = {'compute:confirm_resize': + common_policy.parse_rule('role:admin')} + common_policy.set_rules(common_policy.Rules(rule)) + req = fakes.HTTPRequest.blank('/v2/fake/servers/1234/action') + self.assertRaises(exception.PolicyNotAuthorized, + self.controller._action_confirm_resize, req, '1234', {}) + def test_verify_resize(self): response = self._get_with_state(vm_states.RESIZED, None) self.assertEqual(response['server']['status'], 'VERIFY_RESIZE') @@ -1659,6 +1686,19 @@ class ServerStatusTest(test.TestCase): task_states.RESIZE_REVERTING) self.assertEqual(response['server']['status'], 'REVERT_RESIZE') + def test_revert_resize_policy_fail(self): + def fake_get_server(context, req, id): + return fakes.stub_instance(id) + + self.stubs.Set(self.controller, '_get_server', fake_get_server) + + rule = {'compute:revert_resize': + common_policy.parse_rule('role:admin')} + common_policy.set_rules(common_policy.Rules(rule)) + req = fakes.HTTPRequest.blank('/v2/fake/servers/1234/action') + self.assertRaises(exception.PolicyNotAuthorized, + self.controller._action_revert_resize, req, '1234', {}) + def test_password_update(self): response = self._get_with_state(vm_states.ACTIVE, task_states.UPDATING_PASSWORD) |
