Updated Branches:
  refs/heads/master ce60cfee8 -> c03712e86

CLOUDSTACK-423 : During VM migration on KVM, VifDriver.unplug is not
called.

VifDriver.unplug must be called in MigrateCommand which hooks VM
migration in source host, because plug will be called in
PrepareForMigration in destination host. But that operation is missing
in current LibvirtComputingResources.

Signed-off-by: Edison Su <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/c03712e8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/c03712e8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/c03712e8

Branch: refs/heads/master
Commit: c03712e86ac9f36d9cf8522807583969eef2ea70
Parents: cb93954
Author: Hiroaki Kawai <[email protected]>
Authored: Mon Oct 29 11:36:25 2012 -0700
Committer: Edison Su <[email protected]>
Committed: Mon Oct 29 11:36:25 2012 -0700

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java     |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c03712e8/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
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 fe2c83a..be22c50 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
@@ -2320,12 +2320,15 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements
             _vms.put(vmName, State.Stopping);
         }
 
+        List<InterfaceDef> ifaces = null;
+
         Domain dm = null;
         Connect dconn = null;
         Domain destDomain = null;
         Connect conn = null;
         try {
             conn = LibvirtConnection.getConnection();
+            ifaces = getInterfaces(conn, vmName);
             dm = conn.domainLookupByUUID(UUID.nameUUIDFromBytes(vmName
                     .getBytes()));
             dconn = new Connect("qemu+tcp://" + cmd.getDestinationIp()
@@ -2364,6 +2367,9 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements
             }
         } else {
             destroy_network_rules_for_vm(conn, vmName);
+            for (InterfaceDef iface : ifaces) {
+                _vifDriver.unplug(iface);
+            }
             cleanupVM(conn, vmName,
                     getVnetId(VirtualMachineName.getVnet(vmName)));
         }

Reply via email to