Support create backup with storage drivers

Story: 2010956
Task: 49198
Change-Id: I3083783df1a9a6682f076ecac9530b0ee2e6f576
This commit is contained in:
Bo Tran
2023-12-12 10:52:32 +07:00
committed by wu.chunyang
parent 4818b7c8c1
commit a5dccbf00d
3 changed files with 20 additions and 3 deletions

View File

@@ -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
})

View File

@@ -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):

View File

@@ -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 "<Backup: %s>" % 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 "<Schedule: %s>" % 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 "<Execution: %s>" % 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