package org.zstack.simulator;
import org.zstack.header.host.TakeSnapshotOnHypervisorMsg;
import org.zstack.header.vm.VmInstanceState;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*/
public class SimulatorConfig {
private static final CLogger logger = Utils.getLogger(SimulatorConfig.class);
public volatile boolean migrateSuccess = true;
public Map<String, Map<String, VmInstanceState>> vms = new HashMap<String, Map<String, VmInstanceState>>();
public volatile boolean snapshotSuccess = true;
public Map<String, List<TakeSnapshotOnHypervisorMsg>> snapshots = new HashMap<String, List<TakeSnapshotOnHypervisorMsg>>();
public void putVm(String hostUuid, String vmUuid, VmInstanceState vmState) {
logger.debug(String.format("hostUuid: %s, vmUuid: %s, vmState: %s", hostUuid, vmUuid, vmState.toString()));
Map<String, VmInstanceState> vmmap = vms.get(hostUuid);
if (vmmap == null) {
vmmap = new HashMap<String, VmInstanceState>();
vmmap.put(vmUuid, vmState);
vms.put(hostUuid, vmmap);
}
vmmap.put(vmUuid, vmState);
}
public void removeVm(String hostUuid, String vmUuid) {
Map<String, VmInstanceState> vmmap = vms.get(hostUuid);
if (vmmap == null) {
return;
}
vmmap.remove(vmUuid);
}
public VmInstanceState findVm(String vmUuid) {
for (Map.Entry<String, Map<String, VmInstanceState>> e : vms.entrySet()) {
for (Map.Entry<String, VmInstanceState> e1 : e.getValue().entrySet()) {
if (e1.getKey().equals(vmUuid)) {
return e1.getValue();
}
}
}
return null;
}
public boolean containVm(String vmUuid) {
return findVm(vmUuid) != null;
}
public Map<String, VmInstanceState> getVmOnHost(String hostUuid) {
return vms.get(hostUuid);
}
}