From 7390f99afb4bd3da1d0fef5d8d16628f8c32180b Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 27 Mar 2014 16:45:42 -0600 Subject: [PATCH] CLOUDSTACK-6292: Fix live migration of KVM when vnc ip address changes Submitted-by: Yoshikazu Nojima --- .../kvm/resource/LibvirtComputingResource.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 14b7f2f3843..33d158bbda3 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -3078,7 +3078,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv //run migration in thread so we can monitor it s_logger.info("Live migration of instance " + vmName + " initiated"); ExecutorService executor = Executors.newFixedThreadPool(1); - Callable worker = new MigrateKVMAsync(dm, dconn, vmName, cmd.getDestinationIp()); + Callable worker = new MigrateKVMAsync(dm, dconn, xmlDesc, vmName, cmd.getDestinationIp()); Future migrateThread = executor.submit(worker); executor.shutdown(); long sleeptime = 0; @@ -3173,12 +3173,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv private class MigrateKVMAsync implements Callable { Domain dm = null; Connect dconn = null; + String dxml = ""; String vmName = ""; String destIp = ""; - MigrateKVMAsync(Domain dm, Connect dconn, String vmName, String destIp) { + MigrateKVMAsync(Domain dm, Connect dconn, String dxml, String vmName, String destIp) { this.dm = dm; this.dconn = dconn; + this.dxml = dxml; this.vmName = vmName; this.destIp = destIp; } @@ -3187,9 +3189,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv public Domain call() throws LibvirtException { // set compression flag for migration if libvirt version supports it if (dconn.getLibVirVersion() < 1003000) { - return dm.migrate(dconn, (1 << 0), vmName, "tcp:" + destIp, _migrateSpeed); + return dm.migrate(dconn, (1 << 0), dxml, vmName, "tcp:" + destIp, _migrateSpeed); } else { - return dm.migrate(dconn, (1 << 0)|(1 << 11), vmName, "tcp:" + destIp, _migrateSpeed); + return dm.migrate(dconn, (1 << 0)|(1 << 11), dxml, vmName, "tcp:" + destIp, _migrateSpeed); } } }