mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
bug 11448: simulator: move vm state into memory
status 11448: resolved fixed
This commit is contained in:
parent
bcf48de212
commit
72d987aa23
@ -26,6 +26,7 @@ import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.StoragePoolInfo;
|
||||
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";
|
||||
@ -57,4 +58,6 @@ public interface SimulatorManager extends Manager {
|
||||
|
||||
boolean configureSimulator(Long zoneId, Long podId, Long clusterId, Long hostId, String command, String values);
|
||||
public HashMap<String, Pair<Long, Long>> syncNetworkGroups(String hostGuid);
|
||||
|
||||
Map<String, State> getVmStates(String hostGuid);
|
||||
}
|
||||
@ -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<String, String> 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<String, String> 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<String, State> 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<String, Pair<Long, Long>> syncNetworkGroups(String hostGuid) {
|
||||
|
||||
@ -245,9 +245,10 @@ public class AgentRoutingResource extends AgentStorageResource {
|
||||
HashMap<String, State> changes = new HashMap<String, State>();
|
||||
|
||||
synchronized (_vms) {
|
||||
newStates = getVmMgr().getVmStates(hostGuid);
|
||||
oldStates = new HashMap<String, State>(_vms.size());
|
||||
oldStates.putAll(_vms);
|
||||
newStates = new HashMap<String, State>(_vms.size());
|
||||
newStates.putAll(_vms);
|
||||
|
||||
for (Map.Entry<String, State> entry : newStates.entrySet()) {
|
||||
String vm = entry.getKey();
|
||||
|
||||
@ -11,15 +11,16 @@
|
||||
</adapters>
|
||||
<adapters key="com.cloud.resource.Discoverer">
|
||||
<adapter name="Simulator Agent" class="com.cloud.resource.SimulatorDiscoverer"/>
|
||||
<adapter name="XCP Agent" class="com.cloud.hypervisor.xen.discoverer.XcpServerDiscoverer"/>
|
||||
<adapter name="SecondaryStorage" class="com.cloud.storage.secondary.SecondaryStorageDiscoverer"/>
|
||||
<adapter name="KVM Agent" class="com.cloud.hypervisor.kvm.discoverer.KvmServerDiscoverer"/>
|
||||
<adapter name="SecondaryStorage" class="com.cloud.resource.SimulatorSecondaryDiscoverer"/>
|
||||
</adapters>
|
||||
<adapters key="com.cloud.alert.AlertAdapter">
|
||||
<adapter name="ClusterAlert" class="com.cloud.alert.ClusterAlertAdapter"/>
|
||||
<adapter name="ConsoleProxyAlert" class="com.cloud.alert.ConsoleProxyAlertAdapter"/>
|
||||
<adapter name="SecondaryStorageVmAlert" class="com.cloud.alert.SecondaryStorageVmAlertAdapter"/>
|
||||
</adapters>
|
||||
|
||||
<adapters key="com.cloud.hypervisor.HypervisorGuru">
|
||||
<adapter name="SimulatorGuru" class="com.cloud.simulator.SimulatorGuru"/>
|
||||
<adapter name="XenServerGuru" class="com.cloud.hypervisor.XenServerGuru"/>
|
||||
<adapter name="KVMGuru" class="com.cloud.hypervisor.KVMGuru"/>
|
||||
</adapters>
|
||||
<adapters key="com.cloud.agent.StartupCommandProcessor">
|
||||
<adapter name="BasicAgentAuthorizer" class="com.cloud.agent.manager.authn.impl.BasicAgentAuthManager"/>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user