diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-06-27 12:06:36 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-06-27 12:06:36 +0000 |
commit | 141d433cebcdcc49b1e781fdef652a68a36c4d4b (patch) | |
tree | 90039a3453afdb0ce44550006ddc1cad7cf1eeff | |
parent | a8290234dea18201bca95b9ec8c3ef0ec88d5cb4 (diff) | |
parent | fcd19b08a746889131380d3b8694d164851336ad (diff) | |
download | python-troveclient-141d433cebcdcc49b1e781fdef652a68a36c4d4b.tar.gz |
Merge "Adding command for copying backups"
-rw-r--r-- | troveclient/tests/test_backups.py | 8 | ||||
-rw-r--r-- | troveclient/v1/backups.py | 11 | ||||
-rw-r--r-- | troveclient/v1/shell.py | 24 |
3 files changed, 40 insertions, 3 deletions
diff --git a/troveclient/tests/test_backups.py b/troveclient/tests/test_backups.py index 7efba5f..696f187 100644 --- a/troveclient/tests/test_backups.py +++ b/troveclient/tests/test_backups.py @@ -74,6 +74,14 @@ class BackupManagerTest(testtools.TestCase): self.backups.create(**args) create_mock.assert_called_with('/backups', body, 'backup') + def test_copy(self): + create_mock = mock.Mock() + self.backups._create = create_mock + args = {'name': 'test_backup', 'backup': '1'} + body = {'backup': args} + self.backups.create(**args) + create_mock.assert_called_with('/backups', body, 'backup') + def test_list(self): page_mock = mock.Mock() self.backups._paginated = page_mock diff --git a/troveclient/v1/backups.py b/troveclient/v1/backups.py index 2128bbb..5693983 100644 --- a/troveclient/v1/backups.py +++ b/troveclient/v1/backups.py @@ -50,14 +50,19 @@ class Backups(base.ManagerWithFind): return self._paginated("/backups", "backups", limit, marker, query_strings) - def create(self, name, instance, description=None, parent_id=None): + def create(self, name, instance=None, description=None, parent_id=None, + backup=None,): """Create a new backup from the given instance.""" body = { "backup": { - "name": name, - "instance": instance + "name": name } } + + if instance: + body['backup']['instance'] = instance + if backup: + body["backup"]['backup'] = backup if description: body['backup']['description'] = description if parent_id: diff --git a/troveclient/v1/shell.py b/troveclient/v1/shell.py index d78f670..74d7db6 100644 --- a/troveclient/v1/shell.py +++ b/troveclient/v1/shell.py @@ -396,6 +396,30 @@ def do_backup_create(cs, args): _print_instance(backup) +@utils.arg('name', metavar='<name>', help='Name of the backup.') +@utils.arg('backup', metavar='<backup>', + help='Backup ID of the source backup.', + default=None) +@utils.arg('--region', metavar='<region>', help='Region where the source ' + 'backup resides.', + default=None) +@utils.arg('--description', metavar='<description>', + default=None, + help='An optional description for the backup.') +@utils.service_type('database') +def do_backup_copy(cs, args): + """Creates a backup from another backup.""" + if args.backup: + backup_ref = {"id": args.backup, + "region": args.region} + else: + backup_ref = None + backup = cs.backups.create(args.name, instance=None, + description=args.description, + parent_id=None, backup=backup_ref,) + _print_instance(backup) + + # Database related actions @utils.arg('instance', metavar='<instance>', help='ID of the instance.') |