let KVM only report running VM to workaround the problem when KVM still keeps stopped-VM around in some cases
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/414b1cbb Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/414b1cbb Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/414b1cbb Branch: refs/heads/master Commit: 414b1cbb226599853f51f722cb39c49586d05c90 Parents: a8c9238 Author: Kelven Yang <[email protected]> Authored: Fri Feb 14 15:04:38 2014 -0800 Committer: Kelven Yang <[email protected]> Committed: Fri Feb 28 15:35:59 2014 -0800 ---------------------------------------------------------------------- .../kvm/resource/LibvirtComputingResource.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/414b1cbb/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 5d7b0fd..3553b5c 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 {
