package org.zstack.simulator.storage.backup;
import org.springframework.beans.factory.annotation.Autowired;
import org.zstack.core.CoreGlobalProperty;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.db.DatabaseFacade;
import org.zstack.header.simulator.storage.backup.APIAddSimulatorBackupStorageMsg;
import org.zstack.header.simulator.storage.backup.SimulatorBackupStorageConstant;
import org.zstack.header.storage.backup.*;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
public class SimulatorBackupStorageFactory implements BackupStorageFactory {
private static final CLogger logger = Utils.getLogger(SimulatorBackupStorageFactory.class);
private static final BackupStorageType type = new BackupStorageType(SimulatorBackupStorageConstant.SIMULATOR_BACKUP_STORAGE_TYPE, CoreGlobalProperty.EXPOSE_SIMULATOR_TYPE, BackupStorageConstant.SCHEME_HTTP, BackupStorageConstant.SCHEME_HTTPS, BackupStorageConstant.SCHEME_NFS);
@Autowired
private DatabaseFacade dbf;
@Autowired
private CloudBus bus;
@Override
public BackupStorageType getBackupStorageType() {
return type;
}
@Override
public BackupStorageInventory createBackupStorage(BackupStorageVO vo, APIAddBackupStorageMsg msg) {
APIAddSimulatorBackupStorageMsg smsg = (APIAddSimulatorBackupStorageMsg) msg;
vo.setTotalCapacity(smsg.getTotalCapacity());
vo.setAvailableCapacity(smsg.getAvailableCapacity());
vo = dbf.persistAndRefresh(vo);
return BackupStorageInventory.valueOf(vo);
}
@Override
public BackupStorage getBackupStorage(BackupStorageVO vo) {
return new SimulatorBackupStorage(vo);
}
@Override
public BackupStorageInventory reload(String uuid) {
BackupStorageVO vo = dbf.findByUuid(uuid, BackupStorageVO.class);
return BackupStorageInventory.valueOf(vo);
}
}