From 2926bc76527cd257368961930ac389bc1cc21358 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Thu, 15 Sep 2011 13:53:14 -0700 Subject: [PATCH] bug 11448: simulator: move vm state into memory status 11448: resolved fixed --- .../cloud/agent/manager/SimulatorManager.java | 3 ++ .../agent/manager/SimulatorManagerImpl.java | 39 ++++++++++++------- .../cloud/resource/AgentRoutingResource.java | 3 +- .../tomcatconf/components-simulator.xml.in | 11 +++--- 4 files changed, 37 insertions(+), 19 deletions(-) diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java index 374068f372a..95194e63ae7 100644 --- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java +++ b/agent-simulator/src/com/cloud/agent/manager/SimulatorManager.java @@ -17,6 +17,7 @@ import com.cloud.agent.api.StoragePoolInfo; import com.cloud.resource.AgentResourceBase; import com.cloud.utils.Pair; import com.cloud.utils.component.Manager; +import com.cloud.vm.VirtualMachine.State; public interface SimulatorManager extends Manager { public static final String Name = "simulator manager"; @@ -48,4 +49,6 @@ public interface SimulatorManager extends Manager { boolean configureSimulator(Long zoneId, Long podId, Long clusterId, Long hostId, String command, String values); public HashMap> syncNetworkGroups(String hostGuid); + + Map getVmStates(String hostGuid); } \ No newline at end of file diff --git a/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java index b13d9871740..df6d1344acb 100644 --- a/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java +++ b/agent-simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java @@ -71,6 +71,7 @@ import com.cloud.utils.db.ConnectionConcierge; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; +import com.cloud.vm.VirtualMachine.State; @Local(value = { SimulatorManager.class }) public class SimulatorManagerImpl implements SimulatorManager { private static final Logger s_logger = Logger.getLogger(SimulatorManagerImpl.class); @@ -130,23 +131,23 @@ public class SimulatorManagerImpl implements SimulatorManager { @DB @Override public Answer simulate(Command cmd, String hostGuid) { - MockHost host = _mockHost.findByGuid(hostGuid); - MockConfigurationVO config = _mockConfigDao.findByCommand(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), cmd.toString()); - if (config == null) { - config = _mockConfigDao.findByGlobal(cmd.toString()); - } - - if (config != null) { - Map configParameters = config.getParameters(); - if (configParameters.get("enabled").equalsIgnoreCase("false")) { - return new Answer(cmd, false, "cmd is disabled"); - } - } - Transaction txn = Transaction.currentTxn(); txn.transitToUserManagedConnection(_concierge.conn()); try { + MockHost host = _mockHost.findByGuid(hostGuid); + MockConfigurationVO config = _mockConfigDao.findByCommand(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), cmd.toString()); + if (config == null) { + config = _mockConfigDao.findByGlobal(cmd.toString()); + } + + if (config != null) { + Map configParameters = config.getParameters(); + if (configParameters.get("enabled").equalsIgnoreCase("false")) { + return new Answer(cmd, false, "cmd is disabled"); + } + } + if (cmd instanceof GetHostStatsCommand) { return _mockAgentMgr.getHostStatistic((GetHostStatsCommand)cmd); } else if (cmd instanceof CheckHealthCommand) { @@ -266,6 +267,18 @@ public class SimulatorManagerImpl implements SimulatorManager { _mockConfigDao.persist(config); return true; } + + @Override + @DB + public Map getVmStates(String hostGuid) { + Transaction txn = Transaction.currentTxn(); + txn.transitToUserManagedConnection(_concierge.conn()); + try { + return _mockVmMgr.getVmStates(hostGuid); + } finally { + txn.transitToAutoManagedConnection(Transaction.CLOUD_DB); + } + } @Override public HashMap> syncNetworkGroups(String hostGuid) { diff --git a/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java b/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java index ca1ba99bfb3..e946b38d4b0 100644 --- a/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java +++ b/agent-simulator/src/com/cloud/resource/AgentRoutingResource.java @@ -245,9 +245,10 @@ public class AgentRoutingResource extends AgentStorageResource { HashMap changes = new HashMap(); synchronized (_vms) { - newStates = getVmMgr().getVmStates(hostGuid); oldStates = new HashMap(_vms.size()); oldStates.putAll(_vms); + newStates = new HashMap(_vms.size()); + newStates.putAll(_vms); for (Map.Entry entry : newStates.entrySet()) { String vm = entry.getKey(); diff --git a/agent-simulator/tomcatconf/components-simulator.xml.in b/agent-simulator/tomcatconf/components-simulator.xml.in index f0af2ab7197..97876a78fb9 100644 --- a/agent-simulator/tomcatconf/components-simulator.xml.in +++ b/agent-simulator/tomcatconf/components-simulator.xml.in @@ -11,15 +11,16 @@ + + + - - - - - + + +