package org.ovirt.engine.core.bll.network.host; import java.util.Collections; import java.util.List; import javax.inject.Inject; import org.ovirt.engine.core.bll.CommandBase; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.validator.HostInterfaceValidator; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.HostSetupNetworksParameters; import org.ovirt.engine.core.common.action.LabelNicParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.network.InterfaceDao; public class UnlabelNicCommand<T extends LabelNicParameters> extends CommandBase<T> { @Inject private InterfaceDao interfaceDao; private VdsNetworkInterface nic; public UnlabelNicCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected void init() { super.init(); setVdsId(getNic() == null ? null : getNic().getVdsId()); } @Override protected void executeCommand() { addCustomValue("NicName", getNic().getName()); VdcReturnValueBase result = runInternalAction(VdcActionType.HostSetupNetworks, createHostSetupNetworksParameters(), cloneContextAndDetachFromParent()); if (!result.getSucceeded()) { propagateFailure(result); } setSucceeded(result.getSucceeded()); } private HostSetupNetworksParameters createHostSetupNetworksParameters() { HostSetupNetworksParameters params = new HostSetupNetworksParameters(getVdsId()); params.setRemovedLabels(Collections.singleton(getLabel())); return params; } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__ACTION__REMOVE); addValidationMessage(EngineMessage.VAR__TYPE__LABEL); } @Override protected boolean validate() { Guid nicId = getParameters().getNicId(); HostInterfaceValidator hostInterfaceValidator = new HostInterfaceValidator(getNic()); return validate(hostInterfaceValidator.interfaceExists(nicId)) && validate(hostInterfaceValidator.nicIsNotLabeledWithSpecifiedLabel(getLabel())); } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.UNLABEL_NIC : AuditLogType.UNLABEL_NIC_FAILED; } private VdsNetworkInterface getNic() { if (nic == null) { nic = interfaceDao.get(getParameters().getNicId()); } return nic; } public String getLabel() { return getParameters().getLabel(); } @Override public List<PermissionSubject> getPermissionCheckSubjects() { Guid hostId = getNic() == null ? null : getNic().getVdsId(); return Collections.singletonList(new PermissionSubject(hostId, VdcObjectType.VDS, getActionType().getActionGroup())); } }