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

Reply via email to