and reformat the legacy SSH variant for readability. Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> --- PVE/CLI/qm.pm | 12 ++++++++++++ PVE/QemuMigrate.pm | 32 ++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 10 deletions(-)
diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm index b70bb20..5dce10f 100755 --- a/PVE/CLI/qm.pm +++ b/PVE/CLI/qm.pm @@ -280,6 +280,18 @@ __PACKAGE__->register_method ({ if ($line =~ /^quit$/) { $tunnel_write->("OK"); last; + } elsif ($line =~ /^resume (\d+)$/) { + my $vmid = $1; + if (PVE::QemuServer::check_running($vmid, 1)) { + eval { PVE::QemuServer::vm_resume($vmid, 1, 1); }; + if ($@) { + $tunnel_write->("ERR: resume failed - $@"); + } else { + $tunnel_write->("OK"); + } + } else { + $tunnel_write->("ERR: resume failed - VM $vmid not running"); + } } } diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 43a3911..75935e0 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -906,6 +906,8 @@ sub phase3_cleanup { my $conf = $self->{vmconf}; return if $self->{phase2errors}; + my $tunnel = $self->{tunnel}; + if ($self->{storage_migration}) { # finish block-job eval { PVE::QemuServer::qemu_drive_mirror_monitor($vmid, undef, $self->{storage_migration_jobs}); }; @@ -951,17 +953,27 @@ sub phase3_cleanup { $self->{errors} = 1; } } + # config moved and nbd server stopped - now we can resume vm on target - my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck']; - eval{ PVE::Tools::run_command($cmd, outfunc => sub {}, - errfunc => sub { - my $line = shift; - $self->log('err', $line); - }); - }; - if (my $err = $@) { - $self->log('err', $err); - $self->{errors} = 1; + if ($tunnel && $tunnel->{version} && $tunnel->{version} >= 1) { + eval { + $self->write_tunnel($tunnel, 30, "resume $vmid"); + }; + if (my $err = $@) { + $self->log('err', $err); + $self->{errors} = 1; + } + } else { + my $cmd = [@{$self->{rem_ssh}}, 'qm', 'resume', $vmid, '--skiplock', '--nocheck']; + my $logf = sub { + my $line = shift; + $self->log('err', $line); + }; + eval { PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => $logf); }; + if (my $err = $@) { + $self->log('err', $err); + $self->{errors} = 1; + } } } -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel