]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Add support '--all-tenants' for cinder backup-list
authorYuriy Nesenenko <ynesenenko@mirantis.com>
Thu, 30 Jul 2015 12:56:10 +0000 (15:56 +0300)
committerYuriy Nesenenko <ynesenenko@mirantis.com>
Thu, 6 Aug 2015 17:03:08 +0000 (17:03 +0000)
Cinder backup-list doesn't support '--all-tenants' argument for admin.
So it is always listing all tenants's backups for admin not only admin's
tenant. This patch fixes it.

APIImpact
Closes-Bug: #1435158
Related-Bug: #1422046

Change-Id: I73f6377c7d6fd92d0464d13f9c8dd6682fef78e3

cinder/backup/api.py
cinder/tests/unit/objects/test_backup.py

index f04e1962d59daac4b28c2fac1c22317ba637b284..d22a90be20f65263ea116898a8e05097a1072778 100644 (file)
@@ -99,11 +99,13 @@ class API(base.Base):
         self.backup_rpcapi.delete_backup(context, backup)
 
     def get_all(self, context, search_opts=None):
-        if search_opts is None:
-            search_opts = {}
         check_policy(context, 'get_all')
 
-        if context.is_admin:
+        search_opts = search_opts or {}
+
+        if (context.is_admin and 'all_tenants' in search_opts):
+            # Need to remove all_tenants to pass the filtering below.
+            search_opts.pop('all_tenants', None)
             backups = objects.BackupList.get_all(context, filters=search_opts)
         else:
             backups = objects.BackupList.get_all_by_project(
index cbc8fd6267b2f4d7eea00f51c15917a6f1bb276a..e3e80de428a0ca14173e5a632a53d6bc81d00f8c 100644 (file)
@@ -109,3 +109,10 @@ class TestBackupList(test_objects.BaseObjectsTestCase):
                                                      fake_volume_obj.id)
         self.assertEqual(1, len(backups))
         TestBackup._compare(self, fake_backup, backups[0])
+
+    @mock.patch('cinder.db.backup_get_all', return_value=[fake_backup])
+    def test_get_all_tenants(self, backup_get_all):
+        search_opts = {'all_tenants': 1}
+        backups = objects.BackupList.get_all(self.context, search_opts)
+        self.assertEqual(1, len(backups))
+        TestBackup._compare(self, fake_backup, backups[0])