package org.ovirt.engine.core.vdsbroker.vdsbroker; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.EngineError; import org.ovirt.engine.core.common.errors.VDSError; import org.ovirt.engine.core.common.vdscommands.CreateStoragePoolVDSCommandParameters; import org.ovirt.engine.core.compat.Guid; public class CreateStoragePoolVDSCommand<P extends CreateStoragePoolVDSCommandParameters> extends VdsBrokerCommand<P> { public CreateStoragePoolVDSCommand(P parameters) { super(parameters); } @Override protected void executeVdsBrokerCommand() { Guid[] guids = getParameters().getDomainsIdList().toArray(new Guid[0]); String[] ids = new String[guids.length]; for (int i = 0; i < guids.length; i++) { ids[i] = guids[i].toString(); } //The first parameter, poolType parameter is ignored by VDSM and thus can be set to any arbitrary value status = getBroker().createStoragePool(0, getParameters().getStoragePoolId().toString(), getParameters().getStoragePoolName(), getParameters().getMasterDomainId().toString(), ids, getParameters().getMasterVersion(), Config.getValue(ConfigValues.LockPolicy), Config.getValue(ConfigValues.LockRenewalIntervalSec), Config.getValue(ConfigValues.LeaseTimeSec), Config.getValue(ConfigValues.IoOpTimeoutSec), Config.getValue(ConfigValues.LeaseRetries)); proceedProxyReturnValue(); } @Override protected void proceedProxyReturnValue() { EngineError returnStatus = getReturnValueFromStatus(getReturnStatus()); switch (returnStatus) { // fail the operation without throwing exception case StorageDomainAccessError: getVDSReturnValue().setSucceeded(false); VDSError tempVar = new VDSError(); tempVar.setCode(EngineError.StorageDomainAccessError); tempVar.setMessage(getReturnStatus().message); getVDSReturnValue().setVdsError(tempVar); break; default: super.proceedProxyReturnValue(); initializeVdsError(returnStatus); break; } } }