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 UpdateFenceAgentCommand<T extends FenceAgentCommandParameterBase> extends FenceAgentCommandBase { @Inject private VdsDao vdsDao; @Inject private ClusterDao clusterDao; @Inject private FenceAgentDao fenceAgentDao; public UpdateFenceAgentCommand(FenceAgentCommandParameterBase parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected boolean validate() { if (getParameters() != null && getParameters().getAgent() != null && getParameters().getAgent().getHostId() != null && getParameters().getAgent().getType() != null) { 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.update(agent); setSucceeded(true); } }