From ff95c90f51d1d1e70a247cb7e94bb7cb757ac37d Mon Sep 17 00:00:00 2001 From: Johannes Erdfelt Date: Wed, 29 Feb 2012 21:52:01 +0000 Subject: Ensure that context read_deleted is only one of 'no', 'yes' or 'only' Fixes bug 942690 Change-Id: I1b1867062a8af7b3fb0eb575e6b9570a964cfefa --- nova/compute/manager.py | 2 +- nova/context.py | 4 ++++ nova/tests/test_context.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/nova/compute/manager.py b/nova/compute/manager.py index a4a18f1f8..5aac65a54 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -401,7 +401,7 @@ class ComputeManager(manager.SchedulerDependentManager): LOG.info(_("Instance %(instance_uuid)s did not exist in the " "DB, but I will shut it down anyway using a special " "context") % locals()) - ctxt = nova.context.get_admin_context(True) + ctxt = nova.context.get_admin_context('yes') self.terminate_instance(ctxt, instance_uuid) except Exception as ex: LOG.info(_("exception terminating the instance " diff --git a/nova/context.py b/nova/context.py index 58deb1318..8ec4a30ec 100644 --- a/nova/context.py +++ b/nova/context.py @@ -48,6 +48,10 @@ class RequestContext(object): :param overwrite: Set to False to ensure that the greenthread local copy of the index is not overwritten. """ + if read_deleted not in ('no', 'yes', 'only'): + raise ValueError(_("read_deleted can only be one of 'no', " + "'yes' or 'only', not %r") % read_deleted) + self.user_id = user_id self.project_id = project_id self.roles = roles or [] diff --git a/nova/tests/test_context.py b/nova/tests/test_context.py index b2507fa59..7fceb2421 100644 --- a/nova/tests/test_context.py +++ b/nova/tests/test_context.py @@ -31,3 +31,16 @@ class ContextTestCase(test.TestCase): '222', roles=['Admin', 'weasel']) self.assertEquals(ctxt.is_admin, True) + + def test_request_context_read_deleted(self): + ctxt = context.RequestContext('111', + '222', + read_deleted='yes') + self.assertEquals(ctxt.read_deleted, 'yes') + + def test_request_context_read_deleted_invalid(self): + self.assertRaises(ValueError, + context.RequestContext, + '111', + '222', + read_deleted=True) -- cgit