diff --git a/nova/context.py b/nova/context.py index 78dca3ffc80..160699a1145 100644 --- a/nova/context.py +++ b/nova/context.py @@ -55,9 +55,6 @@ def __init__(self, user_id, project_id, is_admin=None, read_deleted="no", :param kwargs: Extra arguments that might be present, but we ignore because they possibly came in from older rpc messages. """ - 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) if kwargs: LOG.warn(_('Arguments dropped when creating context: %s') % str(kwargs)) @@ -85,6 +82,21 @@ def __init__(self, user_id, project_id, is_admin=None, read_deleted="no", if overwrite or not hasattr(local.store, 'context'): self.update_store() + def _get_read_deleted(self): + return self._read_deleted + + def _set_read_deleted(self, read_deleted): + 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._read_deleted = read_deleted + + def _del_read_deleted(self): + del self._read_deleted + + read_deleted = property(_get_read_deleted, _set_read_deleted, + _del_read_deleted) + def update_store(self): local.store.context = self diff --git a/nova/tests/test_context.py b/nova/tests/test_context.py index ea19dc1f143..977095910ed 100644 --- a/nova/tests/test_context.py +++ b/nova/tests/test_context.py @@ -38,6 +38,9 @@ def test_request_context_read_deleted(self): read_deleted='yes') self.assertEquals(ctxt.read_deleted, 'yes') + ctxt.read_deleted = 'no' + self.assertEquals(ctxt.read_deleted, 'no') + def test_request_context_read_deleted_invalid(self): self.assertRaises(ValueError, context.RequestContext, @@ -45,6 +48,13 @@ def test_request_context_read_deleted_invalid(self): '222', read_deleted=True) + ctxt = context.RequestContext('111', '222') + self.assertRaises(ValueError, + setattr, + ctxt, + 'read_deleted', + True) + def test_extra_args_to_context_get_logged(self): info = {}