]> git.proxmox.com Git - qemu-server.git/blobdiff - PVE/QemuMigrate.pm
add pve-bridgedown script
[qemu-server.git] / PVE / QemuMigrate.pm
index 0c0f3c83e4dc31200a57ce25648061d0fd04eedf..9c3d68acdb4de29d6e1d7db050dbe07a5571b7f9 100644 (file)
@@ -76,10 +76,9 @@ sub finish_command_pipe {
 sub fork_tunnel {
     my ($self, $nodeip, $lport, $rport) = @_;
 
-    my @localtunnelinfo = (defined $lport) ? qw(-L $lport:localhost:$rport) : ();
+    my @localtunnelinfo = $lport ? ('-L' , "$lport:localhost:$rport" ) : ();
 
-    my $cmd = [@{$self->{rem_ssh}}, @localtunnelinfo,
-              'qm', 'mtunnel' ];
+    my $cmd = [@{$self->{rem_ssh}}, @localtunnelinfo, 'qm', 'mtunnel' ];
 
     my $tunnel = $self->fork_command_pipe($cmd);
 
@@ -386,13 +385,10 @@ sub phase2 {
        $self->log('info', "migrate_set_downtime error: $@") if $@;
     }
 
-    my $capabilities = {};
-    $capabilities->{capability} =  "xbzrle";
-    $capabilities->{state} = JSON::false;
-
     eval {
-       PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate-set-capabilities", capabilities => [$capabilities]);
+       PVE::QemuServer::set_migration_caps($vmid);
     };
+    warn $@ if $@;
 
     #set cachesize 10% of the total memory
     my $cachesize = int($conf->{memory}*1048576/10);
@@ -407,7 +403,7 @@ sub phase2 {
        my (undef, $proxyticket) = PVE::AccessControl::assemble_spice_ticket($authuser, $vmid, $self->{node});
 
        my $filename = "/etc/pve/nodes/$self->{node}/pve-ssl.pem";
-        my $subject = PVE::QemuServer::read_x509_subject_spice($filename);
+        my $subject =  PVE::AccessControl::read_x509_subject_spice($filename);
 
        $self->log('info', "spice client_migrate_info");
 
@@ -486,7 +482,10 @@ sub phase2 {
                $self->log('info', "migration status: $stat->{status} (transferred ${trans}, " .
                           "remaining ${rem}), total ${total})");
 
-               #$self->log('info', "migration xbzrle cachesize: ${xbzrlecachesize} transferred ${xbzrlebytes} pages ${xbzrlepages} cachemiss ${xbzrlecachemiss} overflow ${xbzrleoverflow}");
+               if (${xbzrlecachesize}) {
+                   $self->log('info', "migration xbzrle cachesize: ${xbzrlecachesize} transferred ${xbzrlebytes} pages ${xbzrlepages} cachemiss ${xbzrlecachemiss} overflow ${xbzrleoverflow}");
+               }
+
                if (($lastrem  && $rem > $lastrem ) || ($rem == 0)) {
                    $downtimecounter++;
                }
@@ -591,17 +590,20 @@ sub phase3_cleanup {
        }
     }
 
-    my $timer = 0;
-    if (PVE::QemuServer::vga_conf_has_spice($conf->{vga})) {
-        $self->log('info', "Waiting for spice server migration");
-       while (1) {
-           my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
-           last if int($res->{'migrated'}) == 1;
-           last if $timer > 50;
-           $timer ++;
-           usleep(200000);
-        }
-    }
+    eval {
+
+       my $timer = 0;
+       if (PVE::QemuServer::vga_conf_has_spice($conf->{vga}) && $self->{running}) {
+           $self->log('info', "Waiting for spice server migration");
+           while (1) {
+               my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
+               last if int($res->{'migrated'}) == 1;
+               last if $timer > 50;
+               $timer ++;
+               usleep(200000);
+           }
+       }
+    };
 
     # always stop local VM
     eval { PVE::QemuServer::vm_stop($self->{storecfg}, $vmid, 1, 1); };