[pve-devel] [Patch V5 guest-common 1/7] Cleanup for stateless jobs.

Wolfgang Link w.link at proxmox.com
Wed May 9 14:48:21 CEST 2018


If a VM configuration has been manually moved or recovered by HA,
there is no status on this new node.
In this case, the replication snapshots still exist on the remote side.
It must be possible to remove a job without status,
otherwise, a new replication job on the same remote node will fail
and the disks will have to be manually removed.
When searching through the sorted_volumes generated from the VMID.conf,
we can be sure that every disk will be removed in the event
of a complete job removal on the remote side.

In the end, the remote_prepare_local_job calls on the remote side a prepare.
---
 PVE/Replication.pm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/PVE/Replication.pm b/PVE/Replication.pm
index ce267fe..4d1e071 100644
--- a/PVE/Replication.pm
+++ b/PVE/Replication.pm
@@ -214,8 +214,13 @@ sub replicate {
 
 	if ($remove_job eq 'full' && $jobcfg->{target} ne $local_node) {
 	    # remove all remote volumes
+	    my @store_list = map { (PVE::Storage::parse_volume_id($_))[0] } @$sorted_volids;
+
+	    my %hash = map { $_ => 1 } @store_list;
+
 	    my $ssh_info = PVE::Cluster::get_ssh_info($jobcfg->{target});
-	    remote_prepare_local_job($ssh_info, $jobid, $vmid, [], $state->{storeid_list}, 0, undef, 1, $logfunc);
+
+	    remote_prepare_local_job($ssh_info, $jobid, $vmid, [], [ keys %hash ], 1, undef, 1, $logfunc);
 
 	}
 	# remove all local replication snapshots (lastsync => 0)
-- 
2.11.0





More information about the pve-devel mailing list