From 8b67630d7f053bcd67dbc152dcec6f0bab194889 Mon Sep 17 00:00:00 2001 From: Rick Harris Date: Wed, 7 Dec 2011 16:06:31 -0600 Subject: [PATCH] Add ability to see deleted and active records. Fixes bug #900564 Changes `Context`.`read_deleted` from a bool to an enum string with values "yes" (can read deleted records), "no" (cannot read deleted records), and "only" (can only see deleted records, for backwards compatibility). Change-Id: Ic81db3664c33f23f751b73973782efb06fce90d9 --- bin/nova-manage | 2 +- nova/tests/scheduler/test_scheduler.py | 2 +- nova/tests/test_adminapi.py | 2 +- nova/tests/test_compute.py | 9 +++++---- nova/tests/test_vmwareapi.py | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bin/nova-manage b/bin/nova-manage index 46374673f..d0246ad9d 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -1379,7 +1379,7 @@ class VsaCommands(object): raise is_admin = self.manager.is_admin(user_id) - ctxt = context.RequestContext(user_id, project_id, is_admin) + ctxt = context.RequestContext(user_id, project_id, is_admin=is_admin) if not is_admin and \ not self.manager.is_project_member(user_id, project_id): msg = _("%(user_id)s must be an admin or a " diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py index 9938b5dd9..32ff67f1d 100644 --- a/nova/tests/scheduler/test_scheduler.py +++ b/nova/tests/scheduler/test_scheduler.py @@ -312,7 +312,7 @@ class SimpleDriverTestCase(test.TestCase): FLAGS.compute_manager) compute1.start() _create_instance() - ctxt = context.RequestContext('fake', 'fake', False) + ctxt = context.RequestContext('fake', 'fake', is_admin=False) global instance_uuids instance_uuids = [] self.stubs.Set(SimpleScheduler, diff --git a/nova/tests/test_adminapi.py b/nova/tests/test_adminapi.py index 08c8f707a..41dbc3e92 100644 --- a/nova/tests/test_adminapi.py +++ b/nova/tests/test_adminapi.py @@ -52,7 +52,7 @@ class AdminApiTestCase(test.TestCase): self.project_id = 'admin' self.context = context.RequestContext(self.user_id, self.project_id, - True) + is_admin=True) def fake_show(meh, context, id): return {'id': 1, 'properties': {'kernel_id': 1, 'ramdisk_id': 1, diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 6ad3565ef..1bf88b8e4 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -222,7 +222,7 @@ class ComputeTestCase(BaseTestCase): self.assertEqual(instance['deleted_at'], None) terminate = utils.utcnow() self.compute.terminate_instance(self.context, instance['uuid']) - context = self.context.elevated(True) + context = self.context.elevated(read_deleted="only") instance = db.instance_get_by_uuid(context, instance['uuid']) self.assert_(instance['launched_at'] < terminate) self.assert_(instance['deleted_at'] > terminate) @@ -674,7 +674,7 @@ class ComputeTestCase(BaseTestCase): instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance_uuid) - non_admin_context = context.RequestContext(None, None, False, False) + non_admin_context = context.RequestContext(None, None, is_admin=False) # decorator should return False (fail) with locked nonadmin context self.compute.lock_instance(self.context, instance_uuid) @@ -1230,8 +1230,9 @@ class ComputeAPITestCase(BaseTestCase): try: db.security_group_destroy(self.context, group['id']) - group = db.security_group_get(context.get_admin_context( - read_deleted=True), group['id']) + admin_deleted_context = context.get_admin_context( + read_deleted="only") + group = db.security_group_get(admin_deleted_context, group['id']) self.assert_(len(group.instances) == 0) finally: db.instance_destroy(self.context, ref[0]['id']) diff --git a/nova/tests/test_vmwareapi.py b/nova/tests/test_vmwareapi.py index 9dacda4b3..b1b297107 100644 --- a/nova/tests/test_vmwareapi.py +++ b/nova/tests/test_vmwareapi.py @@ -40,7 +40,7 @@ class VMWareAPIVMTestCase(test.TestCase): def setUp(self): super(VMWareAPIVMTestCase, self).setUp() - self.context = context.RequestContext('fake', 'fake', False) + self.context = context.RequestContext('fake', 'fake', is_admin=False) self.flags(vmwareapi_host_ip='test_url', vmwareapi_host_username='test_username', vmwareapi_host_password='test_pass')