diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2021-02-16 12:23:19 +1300 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2021-02-18 17:34:37 +0000 |
commit | 6fdf11ea7f5c77e83dd746fa33b7a354417aec08 (patch) | |
tree | d66f3528a6a36911dd55ce654b095aca8cceb3aa /trove/taskmanager | |
parent | 9c2e0bf3a0f1bc0b35a148174d8a4d2083f2b3c5 (diff) | |
download | trove-6fdf11ea7f5c77e83dd746fa33b7a354417aec08.tar.gz |
Support to restore backup from remote location
In multi-region deployment with geo-replicated Swift, the user can
restore a backup in one region by manually specifying the original
backup data location created in another region.
Change-Id: Iefef3bf969163af707935445bc23299400dc88c3
Diffstat (limited to 'trove/taskmanager')
-rwxr-xr-x | trove/taskmanager/models.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/trove/taskmanager/models.py b/trove/taskmanager/models.py index e5e0026f..4acb9203 100755 --- a/trove/taskmanager/models.py +++ b/trove/taskmanager/models.py @@ -1470,8 +1470,7 @@ class BackupTasks(object): def _delete(backup): backup.deleted = True backup.deleted_at = timeutils.utcnow() - # Set datastore_version_id to None so that datastore_version could - # be deleted. + # Set datastore_version_id to None to remove dependency. backup.datastore_version_id = None backup.save() @@ -1479,7 +1478,9 @@ class BackupTasks(object): backup = bkup_models.Backup.get_by_id(context, backup_id) try: filename = backup.filename - if filename: + # Do not remove the object if the backup was restored from remote + # location. + if filename and backup.state != bkup_models.BackupState.RESTORED: BackupTasks.delete_files_from_swift(context, backup.container_name, filename) |