summaryrefslogtreecommitdiff
path: root/trove/taskmanager
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2021-02-16 12:23:19 +1300
committerLingxian Kong <anlin.kong@gmail.com>2021-02-18 17:34:37 +0000
commit6fdf11ea7f5c77e83dd746fa33b7a354417aec08 (patch)
treed66f3528a6a36911dd55ce654b095aca8cceb3aa /trove/taskmanager
parent9c2e0bf3a0f1bc0b35a148174d8a4d2083f2b3c5 (diff)
downloadtrove-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-xtrove/taskmanager/models.py7
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)