package org.zstack.simulator.storage.primary; import org.springframework.beans.factory.annotation.Autowired; import org.zstack.core.CoreGlobalProperty; import org.zstack.core.db.DatabaseFacade; import org.zstack.header.simulator.storage.primary.APIAddSimulatorPrimaryStorageMsg; import org.zstack.header.simulator.storage.primary.SimulatorPrimaryStorageConstant; import org.zstack.header.storage.primary.*; import org.zstack.storage.primary.PrimaryStorageCapacityUpdater; import org.zstack.utils.path.PathUtil; public class SimulatorPrimaryStorageFactory implements PrimaryStorageFactory { private static final PrimaryStorageType type = new PrimaryStorageType(SimulatorPrimaryStorageConstant.SIMULATOR_PRIMARY_STORAGE_TYPE, CoreGlobalProperty.EXPOSE_SIMULATOR_TYPE); @Autowired private DatabaseFacade dbf; @Override public PrimaryStorageType getPrimaryStorageType() { return type; } @Override public PrimaryStorageInventory createPrimaryStorage(PrimaryStorageVO vo, APIAddPrimaryStorageMsg msg) { String mountPath = PathUtil.join("/primarystoragesimulator", vo.getUuid()); vo.setMountPath(mountPath); vo = dbf.persistAndRefresh(vo); APIAddSimulatorPrimaryStorageMsg smsg = (APIAddSimulatorPrimaryStorageMsg) msg; PrimaryStorageCapacityVO cvo = new PrimaryStorageCapacityVO(); cvo.setUuid(vo.getUuid()); cvo.setAvailableCapacity(smsg.getAvailableCapacity()); cvo.setTotalCapacity(smsg.getTotalCapacity()); dbf.persist(cvo); return PrimaryStorageInventory.valueOf(vo); } @Override public PrimaryStorageInventory getInventory(String uuid) { PrimaryStorageVO vo = dbf.findByUuid(uuid, PrimaryStorageVO.class); return PrimaryStorageInventory.valueOf(vo); } @Override public PrimaryStorage getPrimaryStorage(PrimaryStorageVO vo) { return new SimulatorPrimaryStorage(vo); } }