diff --git a/karbor/services/protection/manager.py b/karbor/services/protection/manager.py index 59aafcfb..c3db38c7 100644 --- a/karbor/services/protection/manager.py +++ b/karbor/services/protection/manager.py @@ -384,7 +384,13 @@ class ProtectionManager(manager.Manager): sort_dir = None if sort_dirs is None else sort_dirs[0] provider = self.provider_registry.show_provider(provider_id) - project_id = context.project_id + + if filters.get('project_id', None) and all_tenants: + project_id = filters.get('project_id') + all_tenants = False + else: + project_id = context.project_id + checkpoint_ids = provider.list_checkpoints( project_id, provider_id, limit=limit, marker=marker, plan_id=plan_id, start_date=start_date, end_date=end_date, diff --git a/karbor/tests/unit/protection/test_manager.py b/karbor/tests/unit/protection/test_manager.py index ab23da39..7528f024 100644 --- a/karbor/tests/unit/protection/test_manager.py +++ b/karbor/tests/unit/protection/test_manager.py @@ -146,6 +146,46 @@ class ProtectionServiceTest(base.TestCase): None, fakes.fake_protection_plan()) + @mock.patch.object(provider.ProviderRegistry, 'show_provider') + def test_list_checkpoints(self, mock_provider): + fake_provider = fakes.FakeProvider() + fake_provider.list_checkpoints = mock.MagicMock() + mock_provider.return_value = fake_provider + context = mock.MagicMock(project_id='fake_project_id') + self.pro_manager.list_checkpoints(context, 'provider1', filters={}, + all_tenants=False) + fake_provider.list_checkpoints.assert_called_once_with( + 'fake_project_id', 'provider1', limit=None, marker=None, + plan_id=None, start_date=None, end_date=None, + sort_dir=None, context=context, all_tenants=False) + + @mock.patch.object(provider.ProviderRegistry, 'show_provider') + def test_list_checkpoints_with_all_tenants(self, mock_provider): + fake_provider = fakes.FakeProvider() + fake_provider.list_checkpoints = mock.MagicMock() + mock_provider.return_value = fake_provider + context = mock.MagicMock(project_id='fake_project_id') + self.pro_manager.list_checkpoints(context, 'provider1', filters={}, + all_tenants=True) + fake_provider.list_checkpoints.assert_called_once_with( + 'fake_project_id', 'provider1', limit=None, marker=None, + plan_id=None, start_date=None, end_date=None, + sort_dir=None, context=context, all_tenants=True) + + @mock.patch.object(provider.ProviderRegistry, 'show_provider') + def test_list_checkpoints_with_all_tenants_and_filter_by_project_id( + self, mock_provider): + fake_provider = fakes.FakeProvider() + fake_provider.list_checkpoints = mock.MagicMock() + mock_provider.return_value = fake_provider + context = mock.MagicMock(project_id='fake_project_id') + self.pro_manager.list_checkpoints(context, 'provider1', filters={ + 'project_id': 'fake_project_id1'}, all_tenants=True) + fake_provider.list_checkpoints.assert_called_once_with( + 'fake_project_id1', 'provider1', limit=None, marker=None, + plan_id=None, start_date=None, end_date=None, + sort_dir=None, context=context, all_tenants=False) + @mock.patch.object(provider.ProviderRegistry, 'show_provider') def test_show_checkpoint(self, mock_provider): mock_provider.return_value = fakes.FakeProvider()