Get backup list by instance ID or name

Change-Id: I97d3fcfa2935f76cb8753734fec6dab8669e732a
This commit is contained in:
Lingxian Kong 2021-05-19 18:33:51 +12:00
parent e41d08d243
commit cd68986948
2 changed files with 43 additions and 4 deletions

View File

@ -66,7 +66,14 @@ class ListDatabaseBackups(command.Lister):
parser.add_argument(
'--instance-id',
default=None,
help=_('Filter backups by database instance ID.')
help=_('Filter backups by database instance ID. Deprecated since '
'Xena. Use -i/--instance instead.')
)
parser.add_argument(
'-i',
'--instance',
default=None,
help=_('Filter backups by database instance(ID or name).')
)
parser.add_argument(
'--all-projects',
@ -82,12 +89,20 @@ class ListDatabaseBackups(command.Lister):
def take_action(self, parsed_args):
database_backups = self.app.client_manager.database.backups
instance_id = parsed_args.instance or parsed_args.instance_id
if instance_id:
instance_mgr = self.app.client_manager.database.instances
instance_id = trove_utils.get_resource_id(instance_mgr,
instance_id)
items = database_backups.list(limit=parsed_args.limit,
datastore=parsed_args.datastore,
marker=parsed_args.marker,
instance_id=parsed_args.instance_id,
instance_id=instance_id,
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(

View File

@ -60,7 +60,10 @@ class TestBackupList(TestBackups):
self.assertEqual(self.columns, columns)
self.assertEqual([self.values], data)
def test_backup_list_by_instance_id(self):
@mock.patch('troveclient.utils.get_resource_id')
def test_backup_list_by_instance_id(self, get_resource_id_mock):
get_resource_id_mock.return_value = 'fake_uuid'
parsed_args = self.check_parser(self.cmd, ["--instance-id", "fake_id"],
[])
self.cmd.take_action(parsed_args)
@ -69,13 +72,34 @@ class TestBackupList(TestBackups):
'datastore': None,
'limit': None,
'marker': None,
'instance_id': 'fake_id',
'instance_id': 'fake_uuid',
'all_projects': False,
'project_id': None
}
self.backup_client.list.assert_called_once_with(**params)
@mock.patch('troveclient.utils.get_resource_id')
def test_backup_list_by_instance_name(self, get_resource_id_mock):
get_resource_id_mock.return_value = 'fake_uuid'
parsed_args = self.check_parser(self.cmd, ["--instance", "fake_name"],
[])
self.cmd.take_action(parsed_args)
params = {
'datastore': None,
'limit': None,
'marker': None,
'instance_id': 'fake_uuid',
'all_projects': False,
'project_id': None
}
self.backup_client.list.assert_called_once_with(**params)
get_resource_id_mock.assert_called_once_with(self.instance_client,
'fake_name')
def test_backup_list_all_projects(self):
parsed_args = self.check_parser(self.cmd, ["--all-projects"], [])
self.cmd.take_action(parsed_args)