package org.ovirt.engine.core.bll.gluster; import java.util.Map; import javax.inject.Inject; import org.ovirt.engine.core.bll.InternalCommandAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.gluster.UpdateGlusterHostPubKeyToSlaveParameters; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.constants.gluster.GlusterConstants; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.common.vdscommands.gluster.UpdateGlusterGeoRepKeysVDSParameters; import org.ovirt.engine.core.dao.VdsDao; @InternalCommandAttribute @NonTransactiveCommandAttribute public class UpdateGlusterHostPubKeyToSlaveInternalCommand extends GlusterCommandBase<UpdateGlusterHostPubKeyToSlaveParameters> { @Inject private VdsDao vdsDao; public UpdateGlusterHostPubKeyToSlaveInternalCommand(UpdateGlusterHostPubKeyToSlaveParameters params, CommandContext commandContext) { super(params, commandContext); setVdsId(getParameters().getId()); } @Override protected VDS getUpServer() { return vdsDao.get(getParameters().getId()); } @Override protected boolean validate() { if (getParameters().getPubKeys().isEmpty()) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_GLUSTER_NO_PUB_KEYS_PASSED); } if (getParameters().getId() == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_HOST_NOT_EXIST); } return super.validate(); } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__ACTION__WRITE_PUB_KEYS); } @Override public AuditLogType getAuditLogTypeValue() { if (getSucceeded()) { return AuditLogType.GLUSTER_WRITE_PUB_KEYS; } else { return errorType == null ? AuditLogType.GLUSTER_GEOREP_PUBLIC_KEY_WRITE_FAILED : errorType; } } @Override public Map<String, String> getCustomValues() { addCustomValue(GlusterConstants.VDS_NAME, getVds().getName()); return super.getCustomValues(); } @Override protected void executeCommand() { final VDSReturnValue writePubKeysReturnValue = runVdsCommand(VDSCommandType.UpdateGlusterGeoRepKeys, new UpdateGlusterGeoRepKeysVDSParameters(getParameters().getId(), getParameters().getPubKeys(), getParameters().getRemoteUserName())); setSucceeded(writePubKeysReturnValue.getSucceeded()); if (!writePubKeysReturnValue.getSucceeded()) { String errorMsg = writePubKeysReturnValue.getVdsError().getMessage(); writePubKeysReturnValue.getVdsError().setMessage(errorMsg + " : " + vdsDao.get(getParameters().getId()).getName()); propagateFailure(convertToVdcReturnValueBase(writePubKeysReturnValue)); return; } } }