From a5dccbf00dd0adc82e0e6705a2f18c3d6859bd00 Mon Sep 17 00:00:00 2001 From: Bo Tran Date: Tue, 12 Dec 2023 10:52:32 +0700 Subject: [PATCH] Support create backup with storage drivers Story: 2010956 Task: 49198 Change-Id: I3083783df1a9a6682f076ecac9530b0ee2e6f576 --- troveclient/osc/v1/database_backups.py | 10 +++++++++- troveclient/tests/osc/v1/test_database_backups.py | 2 ++ troveclient/v1/backups.py | 11 +++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/troveclient/osc/v1/database_backups.py b/troveclient/osc/v1/database_backups.py index 9392a3c0..ebf6f830 100644 --- a/troveclient/osc/v1/database_backups.py +++ b/troveclient/osc/v1/database_backups.py @@ -287,6 +287,13 @@ class CreateDatabaseBackup(command.ShowOne): '--restore-size', type=float, help=_('The original backup size.') ) + parser.add_argument( + '--storage-driver', + help=_('The storage driver used to save backup data. ' + 'Current valid values are: swift, cinder. ' + 'It depends on Trove support. ' + 'May conflict with other options.') + ) return parser def take_action(self, parsed_args): @@ -310,8 +317,9 @@ class CreateDatabaseBackup(command.ShowOne): parsed_args.instance) params.update({ 'description': parsed_args.description, - 'parent_id': parsed_args.parent, 'incremental': parsed_args.incremental, + 'parent_id': parsed_args.parent, + 'storage_driver': parsed_args.storage_driver, 'swift_container': parsed_args.swift_container }) diff --git a/troveclient/tests/osc/v1/test_database_backups.py b/troveclient/tests/osc/v1/test_database_backups.py index a8b8def0..37bae14f 100644 --- a/troveclient/tests/osc/v1/test_database_backups.py +++ b/troveclient/tests/osc/v1/test_database_backups.py @@ -288,6 +288,7 @@ class TestBackupCreate(TestBackups): description=None, parent_id=None, incremental=False, + storage_driver=None, swift_container=None) @mock.patch('troveclient.utils.get_resource_id_by_name') @@ -304,6 +305,7 @@ class TestBackupCreate(TestBackups): description='backup 1234', parent_id='1234-1', incremental=True, + storage_driver=None, swift_container=None) def test_create_from_data_location(self): diff --git a/troveclient/v1/backups.py b/troveclient/v1/backups.py index 4e309dd7..5d329dbe 100644 --- a/troveclient/v1/backups.py +++ b/troveclient/v1/backups.py @@ -26,6 +26,7 @@ from troveclient import common class Backup(base.Resource): """Backup is a resource used to hold backup information.""" + def __repr__(self): return "" % self.name @@ -33,6 +34,7 @@ class Backup(base.Resource): class Schedule(base.Resource): """Schedule is a resource used to hold information about scheduled backups. """ + def __repr__(self): return "" % self.name @@ -41,6 +43,7 @@ class ScheduleExecution(base.Resource): """ScheduleExecution is a resource used to hold information about the execution of a scheduled backup. """ + def __repr__(self): return "" % self.name @@ -75,8 +78,9 @@ class Backups(base.ManagerWithFind): query_strings) def create(self, name, instance, description=None, - parent_id=None, incremental=False, swift_container=None, - restore_from=None, restore_ds_version=None, restore_size=None): + parent_id=None, incremental=False, storage_driver=None, + swift_container=None, restore_from=None, + restore_ds_version=None, restore_size=None): """Create or restore a new backup. :param name: name for backup. @@ -85,6 +89,7 @@ class Backups(base.ManagerWithFind): :param parent_id: base for incremental backup (optional). :param incremental: flag to indicate incremental backup based on last backup + :param storage_driver: The storage driver used to create the backup. :param swift_container: Swift container name. :param restore_from: The original backup data location, typically this is a Swift object URL. @@ -115,6 +120,8 @@ class Backups(base.ManagerWithFind): body['backup']['description'] = description if parent_id: body['backup']['parent_id'] = parent_id + if storage_driver: + body['backup']['storage_driver'] = storage_driver if swift_container: body['backup']['swift_container'] = swift_container