From 90ea3249a8b731be443414b430a5a506ab02bd06 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Fri, 24 Jan 2014 15:52:53 -0800 Subject: [PATCH] disable cluster-scope report from XS resource --- api/src/com/cloud/vm/VirtualMachine.java | 8 ++++---- .../cloud/vm/VirtualMachinePowerStateSyncImpl.java | 4 ++-- .../hypervisor/xen/resource/CitrixResourceBase.java | 12 ++++++++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/api/src/com/cloud/vm/VirtualMachine.java b/api/src/com/cloud/vm/VirtualMachine.java index 2d98aa9133f..dd11a829afa 100755 --- a/api/src/com/cloud/vm/VirtualMachine.java +++ b/api/src/com/cloud/vm/VirtualMachine.java @@ -33,10 +33,10 @@ import com.cloud.utils.fsm.StateObject; */ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, InternalIdentity, StateObject { - public enum PowerState { - PowerUnknown, - PowerOn, - PowerOff, + public enum PowerState { + PowerUnknown, + PowerOn, + PowerOff, PowerReportMissing } diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java index fd0077cfd79..2e1a552497b 100644 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java @@ -79,8 +79,8 @@ public class VirtualMachinePowerStateSyncImpl implements VirtualMachinePowerStat } else { if (s_logger.isDebugEnabled()) s_logger.debug("VM power state does not change, skip DB writing. vm id: " + entry.getKey()); - } - } + } + } // for all running/stopping VMs, we provide monitoring of missing report List vmsThatAreMissingReport = _instanceDao.findByHostInStates(hostId, VirtualMachine.State.Running, diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 96d33c76441..12ba7c99c5c 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -239,7 +239,6 @@ import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.snapshot.VMSnapshot; - /** * CitrixResourceBase encapsulates the calls to the XenServer Xapi process * to perform the required functionalities for CloudStack. @@ -2496,6 +2495,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } protected HashMap getHostVmStateReport(Connection conn) { + + // TODO : new VM sync model does not require a cluster-scope report, we need to optimize + // the report accordingly final HashMap vmStates = new HashMap(); Map vm_map = null; for (int i = 0; i < 2; i++) { @@ -2534,7 +2536,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } catch (XmlRpcException e) { s_logger.error("Failed to get host uuid for host " + host.toWireString(), e); } - vmStates.put(record.nameLabel, new HostVmStateReportEntry(convertPowerState(ps), host_uuid, xstoolsversion)); + + if (host_uuid.equalsIgnoreCase(_host.uuid)) { + vmStates.put( + record.nameLabel, + new HostVmStateReportEntry(convertPowerState(ps), host_uuid, xstoolsversion) + ); + } } }