package org.ovirt.engine.core.bll; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.action.FenceAgentCommandParameterBase; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.pm.FenceAgent; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.ClusterDao; import org.ovirt.engine.core.dao.FenceAgentDao; import org.ovirt.engine.core.dao.VdsDao; import org.ovirt.engine.core.utils.pm.FenceConfigHelper; public class AddFenceAgentCommand<T extends FenceAgentCommandParameterBase> extends FenceAgentCommandBase { @Inject private VdsDao vdsDao; @Inject private ClusterDao clusterDao; @Inject private FenceAgentDao fenceAgentDao; public AddFenceAgentCommand(FenceAgentCommandParameterBase parameters, CommandContext cmdContext) { super(parameters, cmdContext); } public AddFenceAgentCommand(Guid commandId) { super(commandId); } @Override protected boolean validate() { if (getParameters() == null || getParameters().getAgent() == null || getParameters().getAgent().getIp() == null || getParameters().getAgent().getHostId() == null || getParameters().getAgent().getPassword() == null || getParameters().getAgent().getType() == null || getParameters().getAgent().getUser() == null) { return failValidation(EngineMessage.VDS_ADD_FENCE_AGENT_MANDATORY_PARAMETERS_MISSING); } Guid vdsId = getParameters().getAgent().getHostId(); VDS vds = vdsDao.get(vdsId); Guid vdsClusterId = vds.getClusterId(); Cluster cluster = clusterDao.get(vdsClusterId); String clusterCompatibilityVersion = cluster.getCompatibilityVersion().toString(); if (!FenceConfigHelper.getValidFenceAgentTypes(clusterCompatibilityVersion) .contains(getParameters().getAgent().getType())) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_AGENT_NOT_SUPPORTED); } return super.validate(); } @Override protected void executeCommand() { FenceAgent agent = getParameters().getAgent(); fenceAgentDao.save(agent); getReturnValue().setActionReturnValue(agent.getId()); setSucceeded(true); } }