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))); }
