From 414b1cbb226599853f51f722cb39c49586d05c90 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Fri, 14 Feb 2014 15:04:38 -0800 Subject: [PATCH] let KVM only report running VM to workaround the problem when KVM still keeps stopped-VM around in some cases --- .../kvm/resource/LibvirtComputingResource.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 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 5d7b0fd16e9..3553b5ca9c9 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 @@ -4436,7 +4436,13 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv s_logger.trace("VM " + dm.getName() + ": powerstate = " + ps + "; vm state=" + state.toString()); String vmName = dm.getName(); - vmStates.put(vmName, new HostVmStateReportEntry(state, conn.getHostName(), null)); + + // TODO : for XS/KVM (host-based resource), we require to remove + // VM completely from host, for some reason, KVM seems to still keep + // Stopped VM around, to work-around that, reporting only powered-on VM + // + if (state == PowerState.PowerOn) + vmStates.put(vmName, new HostVmStateReportEntry(state, conn.getHostName(), null)); } catch (final LibvirtException e) { s_logger.warn("Unable to get vms", e); } finally { @@ -4460,7 +4466,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv String vmName = dm.getName(); s_logger.trace("VM " + vmName + ": powerstate = " + ps + "; vm state=" + state.toString()); - vmStates.put(vmName, new HostVmStateReportEntry(state, conn.getHostName(), null)); + // TODO : for XS/KVM (host-based resource), we require to remove + // VM completely from host, for some reason, KVM seems to still keep + // Stopped VM around, to work-around that, reporting only powered-on VM + // + if (state == PowerState.PowerOn) + vmStates.put(vmName, new HostVmStateReportEntry(state, conn.getHostName(), null)); } catch (final LibvirtException e) { s_logger.warn("Unable to get vms", e); } finally {