diff options
-rw-r--r-- | releasenotes/notes/wallaby-project-backups.yaml | 4 | ||||
-rw-r--r-- | troveclient/osc/v1/database_backups.py | 11 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_database_backups.py | 25 | ||||
-rw-r--r-- | troveclient/v1/backups.py | 4 |
4 files changed, 38 insertions, 6 deletions
diff --git a/releasenotes/notes/wallaby-project-backups.yaml b/releasenotes/notes/wallaby-project-backups.yaml new file mode 100644 index 0000000..da1ed27 --- /dev/null +++ b/releasenotes/notes/wallaby-project-backups.yaml @@ -0,0 +1,4 @@ +--- +features: + - Support to get backups of a specific project by + ``--project-id PROJECT_ID``. diff --git a/troveclient/osc/v1/database_backups.py b/troveclient/osc/v1/database_backups.py index f6e5e31..779b942 100644 --- a/troveclient/osc/v1/database_backups.py +++ b/troveclient/osc/v1/database_backups.py @@ -71,6 +71,11 @@ class ListDatabaseBackups(command.Lister): action='store_true', help=_('Get all the backups of all the projects(Admin only).') ) + parser.add_argument( + '--project-id', + default=None, + help=_('Filter backups by project ID.') + ) return parser def take_action(self, parsed_args): @@ -79,14 +84,16 @@ class ListDatabaseBackups(command.Lister): datastore=parsed_args.datastore, marker=parsed_args.marker, instance_id=parsed_args.instance_id, - all_projects=parsed_args.all_projects) + all_projects=parsed_args.all_projects, + project_id=parsed_args.project_id) backups = items while items.next and not parsed_args.limit: items = database_backups.list( marker=items.next, datastore=parsed_args.datastore, instance_id=parsed_args.instance_id, - all_projects=parsed_args.all_projects + all_projects=parsed_args.all_projects, + project_id=parsed_args.project_id ) backups += items diff --git a/troveclient/tests/osc/v1/test_database_backups.py b/troveclient/tests/osc/v1/test_database_backups.py index 0010a46..7a4ae13 100644 --- a/troveclient/tests/osc/v1/test_database_backups.py +++ b/troveclient/tests/osc/v1/test_database_backups.py @@ -51,7 +51,8 @@ class TestBackupList(TestBackups): 'limit': None, 'marker': None, 'instance_id': None, - 'all_projects': False + 'all_projects': False, + 'project_id': None } self.backup_client.list.assert_called_once_with(**params) @@ -68,7 +69,8 @@ class TestBackupList(TestBackups): 'limit': None, 'marker': None, 'instance_id': 'fake_id', - 'all_projects': False + 'all_projects': False, + 'project_id': None } self.backup_client.list.assert_called_once_with(**params) @@ -82,7 +84,24 @@ class TestBackupList(TestBackups): 'limit': None, 'marker': None, 'instance_id': None, - 'all_projects': True + 'all_projects': True, + 'project_id': None + } + + self.backup_client.list.assert_called_once_with(**params) + + def test_backup_list_by_project(self): + parsed_args = self.check_parser(self.cmd, ["--project-id", "fake_id"], + []) + self.cmd.take_action(parsed_args) + + params = { + 'datastore': None, + 'limit': None, + 'marker': None, + 'instance_id': None, + 'all_projects': False, + 'project_id': 'fake_id' } self.backup_client.list.assert_called_once_with(**params) diff --git a/troveclient/v1/backups.py b/troveclient/v1/backups.py index cce6560..4876ac7 100644 --- a/troveclient/v1/backups.py +++ b/troveclient/v1/backups.py @@ -60,7 +60,7 @@ class Backups(base.ManagerWithFind): "backup") def list(self, limit=None, marker=None, datastore=None, instance_id=None, - all_projects=False): + all_projects=False, project_id=None): """Get a list of all backups.""" query_strings = {} if datastore: @@ -69,6 +69,8 @@ class Backups(base.ManagerWithFind): query_strings["instance_id"] = instance_id if all_projects: query_strings["all_projects"] = True + if project_id: + query_strings["project_id"] = project_id return self._paginated("/backups", "backups", limit, marker, query_strings) |