Moti Asayag has uploaded a new change for review. Change subject: engine: Add HostInterfaceValidator ......................................................................
engine: Add HostInterfaceValidator The validator validates the subject host interface is valid for certain operations. Change-Id: Iba235a70b0f42a75ca443b635c9eb51a4b2fee9a Signed-off-by: Moti Asayag <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostInterfaceValidator.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java 2 files changed, 56 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/34969/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostInterfaceValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostInterfaceValidator.java new file mode 100644 index 0000000..7db7454 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostInterfaceValidator.java @@ -0,0 +1,53 @@ +package org.ovirt.engine.core.bll.validator; + +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.bll.ValidationResult; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.utils.NetworkUtils; + +//TODO: refactor LabelNicCommand to use this validator +public class HostInterfaceValidator { + + private final VdsNetworkInterface iface; + + public HostInterfaceValidator(VdsNetworkInterface iface) { + this.iface = iface; + } + + public ValidationResult interfaceExists() { + return ValidationResult.failWith(VdcBllMessages.HOST_NETWORK_INTERFACE_NOT_EXIST).when(iface == null); + } + + public ValidationResult interfaceInHost(Guid hostId) { + return ValidationResult.failWith(VdcBllMessages.NIC_NOT_EXISTS_ON_HOST).when(!iface.getVdsId().equals(hostId)); + } + + public ValidationResult validBond(List<VdsNetworkInterface> nics) { + if (!Boolean.TRUE.equals(iface.getBonded())) { + return ValidationResult.VALID; + } + + int slavesCount = 0; + for (VdsNetworkInterface nic : nics) { + if (StringUtils.equals(nic.getName(), iface.getBondName())) { + slavesCount++; + if (slavesCount == 2) { + break; + } + } + } + + return ValidationResult.failWith(VdcBllMessages.NETWORK_BONDS_INVALID_SLAVE_COUNT, + "$NETWORK_BONDS_INVALID_SLAVE_COUNT_LIST " + slavesCount).when(slavesCount < 2); + } + + public ValidationResult networkCanBeAttached() { + return ValidationResult.failWith(VdcBllMessages.CANNOT_ADD_NETWORK_ATTACHMENT_ON_SLAVE_OR_VLAN) + .when(NetworkUtils.isVlan(iface) || iface.isBondSlave()); + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java index b0541ca..14b0700 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java @@ -507,6 +507,7 @@ NETWORK_ADDR_MANDATORY_IN_STATIC_IP(ErrorType.BAD_PARAMETERS), NETWORK_MAC_ADDRESS_IN_USE(ErrorType.CONFLICT), HOST_NETWORK_INTERFACE_NOT_EXIST(ErrorType.BAD_PARAMETERS), + NIC_NOT_EXISTS_ON_HOST(ErrorType.BAD_PARAMETERS), NETWORK_INTERFACE_NAME_ALREADY_IN_USE(ErrorType.CONFLICT), NETWORK_INTERFACE_IN_USE_BY_VLAN(ErrorType.CONFLICT), NETWORK_ALREADY_ATTACHED_TO_INTERFACE(ErrorType.CONFLICT), @@ -538,6 +539,8 @@ NETWORKS_DONT_EXIST_IN_CLUSTER(ErrorType.CONFLICT), NETWORKS_DONT_EXIST_IN_DATA_CENTER(ErrorType.CONFLICT), NETWORK_BONDS_INVALID_SLAVE_COUNT(ErrorType.BAD_PARAMETERS), + NETWORK_INTERFACE_BOND_OR_VLAN_CANNOT_BE_SLAVE(ErrorType.CONFLICT), + CANNOT_ADD_NETWORK_ATTACHMENT_ON_SLAVE_OR_VLAN(ErrorType.BAD_PARAMETERS), NETWORK_INTERFACES_NOT_EXCLUSIVELY_USED_BY_NETWORK(ErrorType.CONFLICT), NETWORK_CANNOT_DETACH_NETWORK_USED_BY_VMS(ErrorType.CONFLICT), BAD_CIDR_FORMAT(ErrorType.BAD_PARAMETERS), -- To view, visit http://gerrit.ovirt.org/34969 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iba235a70b0f42a75ca443b635c9eb51a4b2fee9a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
