summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2021-05-19 18:33:51 +1200
committerLingxian Kong <anlin.kong@gmail.com>2021-05-19 20:43:06 +1200
commitcd689869484841a9be1a380b46a94c0084d84d0d (patch)
tree76488db27b2959fd93323fdb219481a604b3a066
parente41d08d24325a61a213592934b508bf77ce67dac (diff)
downloadpython-troveclient-cd689869484841a9be1a380b46a94c0084d84d0d.tar.gz
Get backup list by instance ID or name7.1.0
Change-Id: I97d3fcfa2935f76cb8753734fec6dab8669e732a
-rw-r--r--troveclient/osc/v1/database_backups.py19
-rw-r--r--troveclient/tests/osc/v1/test_database_backups.py28
2 files changed, 43 insertions, 4 deletions
diff --git a/troveclient/osc/v1/database_backups.py b/troveclient/osc/v1/database_backups.py
index 28ceea7..9392a3c 100644
--- a/troveclient/osc/v1/database_backups.py
+++ b/troveclient/osc/v1/database_backups.py
@@ -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(
diff --git a/troveclient/tests/osc/v1/test_database_backups.py b/troveclient/tests/osc/v1/test_database_backups.py
index bc67d9d..a8b8def 100644
--- a/troveclient/tests/osc/v1/test_database_backups.py
+++ b/troveclient/tests/osc/v1/test_database_backups.py
@@ -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,12 +72,33 @@ 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"], [])