diff options
| author | Zuul <zuul@review.openstack.org> | 2017-12-25 17:27:32 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-12-25 17:27:32 +0000 |
| commit | ba9af952b8367895e9e4f0edec29402ef6c8142f (patch) | |
| tree | 79ea271ec2566aabcb4609651340c00a058e078f | |
| parent | f5809f58c3606ea707857e31ac54bae618f4c7a6 (diff) | |
| parent | 84e5873a03791e53621fcbacfe69337a3627bdb3 (diff) | |
| download | python-troveclient-ba9af952b8367895e9e4f0edec29402ef6c8142f.tar.gz | |
Merge "Add backup-list-instance to OSC"
| -rw-r--r-- | releasenotes/notes/add-backup-list-instance-to-osc-e01cf8527e499768.yaml | 6 | ||||
| -rw-r--r-- | setup.cfg | 1 | ||||
| -rw-r--r-- | troveclient/osc/v1/database_backups.py | 47 | ||||
| -rw-r--r-- | troveclient/tests/osc/v1/test_database_backups.py | 30 |
4 files changed, 84 insertions, 0 deletions
diff --git a/releasenotes/notes/add-backup-list-instance-to-osc-e01cf8527e499768.yaml b/releasenotes/notes/add-backup-list-instance-to-osc-e01cf8527e499768.yaml new file mode 100644 index 0000000..c99581b --- /dev/null +++ b/releasenotes/notes/add-backup-list-instance-to-osc-e01cf8527e499768.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + The command ``trove backup-list-instance`` is now available + to use in the python-openstackclient CLI as ``openstack + database backup list instance`` @@ -33,6 +33,7 @@ openstack.database.v1 = database_backup_create= troveclient.osc.v1.database_backups:CreateDatabaseBackup database_backup_delete = troveclient.osc.v1.database_backups:DeleteDatabaseBackup database_backup_list = troveclient.osc.v1.database_backups:ListDatabaseBackups + database_backup_list_instance = troveclient.osc.v1.database_backups:ListDatabaseInstanceBackups database_backup_show = troveclient.osc.v1.database_backups:ShowDatabaseBackup database_cluster_create = troveclient.osc.v1.database_clusters:CreateDatabaseCluster database_cluster_delete = troveclient.osc.v1.database_clusters:DeleteDatabaseCluster diff --git a/troveclient/osc/v1/database_backups.py b/troveclient/osc/v1/database_backups.py index 110d32e..8b3e973 100644 --- a/troveclient/osc/v1/database_backups.py +++ b/troveclient/osc/v1/database_backups.py @@ -77,6 +77,53 @@ class ListDatabaseBackups(command.Lister): return self.columns, backups +class ListDatabaseInstanceBackups(command.Lister): + + _description = _("Lists available backups for an instance.") + columns = ['ID', 'Instance ID', 'Name', 'Status', 'Parent ID', + 'Updated'] + + def get_parser(self, prog_name): + parser = super(ListDatabaseInstanceBackups, self).get_parser(prog_name) + parser.add_argument( + 'instance', + metavar='<instance>', + help=_('ID or name of the instance.') + ) + parser.add_argument( + '--limit', + dest='limit', + metavar='<limit>', + default=None, + help=_('Return up to N number of the most recent bcakups.') + ) + parser.add_argument( + '--marker', + dest='marker', + metavar='<ID>', + type=str, + default=None, + help=_('Begin displaying the results for IDs greater than the' + 'specified marker. When used with :option:`--limit,` set' + 'this to the last ID displayed in the previous run.') + ) + return parser + + def take_action(self, parsed_args): + database_instances = self.app.client_manager.database.instances + instance = osc_utils.find_resource(database_instances, + parsed_args.instance) + items = database_instances.backups(instance, limit=parsed_args.limit, + marker=parsed_args.marker) + backups = items + while items.next and not parsed_args.limit: + items = database_instances.backups(instance, marker=items.next) + backups += items + backups = [osc_utils.get_item_properties(b, self.columns) + for b in backups] + return self.columns, backups + + class ShowDatabaseBackup(command.ShowOne): _description = _("Shows details of a database backup") diff --git a/troveclient/tests/osc/v1/test_database_backups.py b/troveclient/tests/osc/v1/test_database_backups.py index bf36209..4b1d10a 100644 --- a/troveclient/tests/osc/v1/test_database_backups.py +++ b/troveclient/tests/osc/v1/test_database_backups.py @@ -27,6 +27,7 @@ class TestBackups(fakes.TestDatabasev1): super(TestBackups, self).setUp() self.mock_client = self.app.client_manager.database self.backup_client = self.app.client_manager.database.backups + self.instance_client = self.app.client_manager.database.instances class TestBackupList(TestBackups): @@ -55,6 +56,35 @@ class TestBackupList(TestBackups): self.assertEqual([self.values], data) +class TestBackupListInstance(TestBackups): + + defaults = { + 'limit': None, + 'marker': None + } + + columns = database_backups.ListDatabaseInstanceBackups.columns + values = ('bk-1234', '1234', 'bkp_1', 'COMPLETED', None, + '2015-05-16T14:23:08') + + def setUp(self): + super(TestBackupListInstance, self).setUp() + self.cmd = database_backups.ListDatabaseInstanceBackups(self.app, None) + data = [self.fake_backups.get_backup_bk_1234()] + self.instance_client.backups.return_value = common.Paginated(data) + + @mock.patch.object(utils, 'find_resource') + def test_backup_list_defaults(self, mock_find): + args = ['1234'] + mock_find.return_value = args[0] + parsed_args = self.check_parser(self.cmd, args, []) + columns, data = self.cmd.take_action(parsed_args) + self.instance_client.backups.assert_called_once_with('1234', + **self.defaults) + self.assertEqual(self.columns, columns) + self.assertEqual([self.values], data) + + class TestBackupShow(TestBackups): values = ('2015-05-16T14:22:28', 'mysql', '5.6', 'v-56', None, 'bk-1234', |
