Ensure snapshots are removed if none succeed
Avoids having lingering automirror snapshots that will never be cleaned up.
This commit is contained in:
parent
ba4349d289
commit
109000c17c
|
@ -389,6 +389,7 @@ def worker_cluster_automirror(
|
||||||
continue
|
continue
|
||||||
|
|
||||||
remote_marked_for_deletion = dict()
|
remote_marked_for_deletion = dict()
|
||||||
|
all_results = list()
|
||||||
for destination in vm_destinations:
|
for destination in vm_destinations:
|
||||||
mirror_start = datetime.now()
|
mirror_start = datetime.now()
|
||||||
result, ret = run_vm_mirror(
|
result, ret = run_vm_mirror(
|
||||||
|
@ -401,6 +402,7 @@ def worker_cluster_automirror(
|
||||||
)
|
)
|
||||||
mirror_end = datetime.now()
|
mirror_end = datetime.now()
|
||||||
runtime_secs = (mirror_end - mirror_start).seconds
|
runtime_secs = (mirror_end - mirror_start).seconds
|
||||||
|
all_results.append(result)
|
||||||
if result:
|
if result:
|
||||||
remote_marked_for_deletion[destination] = ret
|
remote_marked_for_deletion[destination] = ret
|
||||||
|
|
||||||
|
@ -421,6 +423,15 @@ def worker_cluster_automirror(
|
||||||
"result_message": ret,
|
"result_message": ret,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# If all sends failed, remove the snapshot we created as it will never be needed or automatically cleaned up later
|
||||||
|
if all(not b for b in all_results):
|
||||||
|
vm.vm_worker_remove_snapshot(
|
||||||
|
zkhandler,
|
||||||
|
None,
|
||||||
|
vm_detail["name"],
|
||||||
|
snapshot_name,
|
||||||
|
)
|
||||||
|
|
||||||
# Find all local snapshots that were present in all remote snapshot deletions,
|
# Find all local snapshots that were present in all remote snapshot deletions,
|
||||||
# then remove them
|
# then remove them
|
||||||
# If one of the sends fails, this should result in nothing being removed
|
# If one of the sends fails, this should result in nothing being removed
|
||||||
|
|
Loading…
Reference in New Issue