Skip to content

Commit a5dccbf

Browse files
botranvanwchy1001
authored andcommitted
Support create backup with storage drivers
Story: 2010956 Task: 49198 Change-Id: I3083783df1a9a6682f076ecac9530b0ee2e6f576
1 parent 4818b7c commit a5dccbf

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

troveclient/osc/v1/database_backups.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,13 @@ def get_parser(self, prog_name):
287287
'--restore-size', type=float,
288288
help=_('The original backup size.')
289289
)
290+
parser.add_argument(
291+
'--storage-driver',
292+
help=_('The storage driver used to save backup data. '
293+
'Current valid values are: swift, cinder. '
294+
'It depends on Trove support. '
295+
'May conflict with other options.')
296+
)
290297
return parser
291298

292299
def take_action(self, parsed_args):
@@ -310,8 +317,9 @@ def take_action(self, parsed_args):
310317
parsed_args.instance)
311318
params.update({
312319
'description': parsed_args.description,
313-
'parent_id': parsed_args.parent,
314320
'incremental': parsed_args.incremental,
321+
'parent_id': parsed_args.parent,
322+
'storage_driver': parsed_args.storage_driver,
315323
'swift_container': parsed_args.swift_container
316324
})
317325

troveclient/tests/osc/v1/test_database_backups.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ def test_backup_create(self, mock_find):
288288
description=None,
289289
parent_id=None,
290290
incremental=False,
291+
storage_driver=None,
291292
swift_container=None)
292293

293294
@mock.patch('troveclient.utils.get_resource_id_by_name')
@@ -304,6 +305,7 @@ def test_incremental_backup_create(self, mock_find):
304305
description='backup 1234',
305306
parent_id='1234-1',
306307
incremental=True,
308+
storage_driver=None,
307309
swift_container=None)
308310

309311
def test_create_from_data_location(self):

troveclient/v1/backups.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626

2727
class Backup(base.Resource):
2828
"""Backup is a resource used to hold backup information."""
29+
2930
def __repr__(self):
3031
return "<Backup: %s>" % self.name
3132

3233

3334
class Schedule(base.Resource):
3435
"""Schedule is a resource used to hold information about scheduled backups.
3536
"""
37+
3638
def __repr__(self):
3739
return "<Schedule: %s>" % self.name
3840

@@ -41,6 +43,7 @@ class ScheduleExecution(base.Resource):
4143
"""ScheduleExecution is a resource used to hold information about
4244
the execution of a scheduled backup.
4345
"""
46+
4447
def __repr__(self):
4548
return "<Execution: %s>" % self.name
4649

@@ -75,8 +78,9 @@ def list(self, limit=None, marker=None, datastore=None, instance_id=None,
7578
query_strings)
7679

7780
def create(self, name, instance, description=None,
78-
parent_id=None, incremental=False, swift_container=None,
79-
restore_from=None, restore_ds_version=None, restore_size=None):
81+
parent_id=None, incremental=False, storage_driver=None,
82+
swift_container=None, restore_from=None,
83+
restore_ds_version=None, restore_size=None):
8084
"""Create or restore a new backup.
8185
8286
:param name: name for backup.
@@ -85,6 +89,7 @@ def create(self, name, instance, description=None,
8589
:param parent_id: base for incremental backup (optional).
8690
:param incremental: flag to indicate incremental backup based on
8791
last backup
92+
:param storage_driver: The storage driver used to create the backup.
8893
:param swift_container: Swift container name.
8994
:param restore_from: The original backup data location, typically this
9095
is a Swift object URL.
@@ -115,6 +120,8 @@ def create(self, name, instance, description=None,
115120
body['backup']['description'] = description
116121
if parent_id:
117122
body['backup']['parent_id'] = parent_id
123+
if storage_driver:
124+
body['backup']['storage_driver'] = storage_driver
118125
if swift_container:
119126
body['backup']['swift_container'] = swift_container
120127

0 commit comments

Comments
 (0)