package org.zstack.test.deployer; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Configurable; import org.zstack.header.storage.primary.PrimaryStorageInventory; import org.zstack.header.zone.ZoneInventory; import org.zstack.sdk.AddSharedMountPointPrimaryStorageAction; import org.zstack.storage.primary.nfs.NfsPrimaryStorageConstant; import org.zstack.storage.primary.smp.SMPPrimaryStorageSimulatorConfig; import org.zstack.test.Api; import org.zstack.test.ApiSenderException; import org.zstack.test.deployer.schema.DeployerConfig; import org.zstack.test.deployer.schema.SharedMountPointPrimaryStorageConfig; import org.zstack.utils.gson.JSONObjectUtil; import java.util.List; @Configurable(preConstruction = true, autowire = Autowire.BY_TYPE) public class SMPPrimaryStorageDeployer implements PrimaryStorageDeployer<SharedMountPointPrimaryStorageConfig> { @Autowired private SMPPrimaryStorageSimulatorConfig simulatorConfig; @Override public Class<SharedMountPointPrimaryStorageConfig> getSupportedDeployerClassType() { return SharedMountPointPrimaryStorageConfig.class; } @Override public void deploy(List<SharedMountPointPrimaryStorageConfig> primaryStorages, ZoneInventory zone, DeployerConfig config, Deployer deployer) throws ApiSenderException { Api api = deployer.getApi(); for (SharedMountPointPrimaryStorageConfig nc : primaryStorages) { simulatorConfig.totalCapacity = deployer.parseSizeCapacity(nc.getTotalCapacity()); simulatorConfig.availableCapcacity = deployer.parseSizeCapacity(nc.getAvailableCapacity()); AddSharedMountPointPrimaryStorageAction action = new AddSharedMountPointPrimaryStorageAction(); action.name = nc.getName(); action.url = nc.getUrl(); action.description = nc.getDescription(); action.type = NfsPrimaryStorageConstant.NFS_PRIMARY_STORAGE_TYPE; action.sessionId = api.getAdminSession().getUuid(); action.zoneUuid = zone.getUuid(); AddSharedMountPointPrimaryStorageAction.Result res = action.call().throwExceptionIfError(); PrimaryStorageInventory inv = JSONObjectUtil.rehashObject(res.value.getInventory(), PrimaryStorageInventory.class); deployer.primaryStorages.put(nc.getName(), inv); } } }