Martin Mucha has uploaded a new change for review.

Change subject: core: replaced deprecated check for 'allowedDuplicates'.
......................................................................

core: replaced deprecated check for 'allowedDuplicates'.

allowed duplicates setting were read from engine config, which was
[the allowed duplicates option] deprecated in 3.6, and MAC pool
property should be consulted instead.

Change-Id: Ia384509b16b8547194ff1b0532bea3c256928f4f
Bug-Url: https://bugzilla.redhat.com/1212461
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerRanges.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerStrategy.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AbstractVmInterfaceCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MacAddressValidator.java
6 files changed, 45 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/40052/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerRanges.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerRanges.java
index 29fde58..46670db 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerRanges.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerRanges.java
@@ -161,6 +161,11 @@
         }
     }
 
+    @Override
+    public Boolean isDuplicateMacAddressesAllowed() {
+        return this.allowDuplicates;
+    }
+
 
     private void checkIfInitialized() {
         if (!initialized) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerStrategy.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerStrategy.java
index cf96287..6b38acd 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerStrategy.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/macpoolmanager/MacPoolManagerStrategy.java
@@ -58,4 +58,7 @@
      * @throws org.ovirt.engine.core.common.errors.VdcBLLException if mac 
address cannot be allocated.
      */
     List<String> allocateMacAddresses(int numberOfAddresses);
+
+    Boolean isDuplicateMacAddressesAllowed();
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AbstractVmInterfaceCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AbstractVmInterfaceCommand.java
index d78d4fc..9f9a07a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AbstractVmInterfaceCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AbstractVmInterfaceCommand.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.core.bll.VmCommand;
 import org.ovirt.engine.core.bll.VmHandler;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
+import org.ovirt.engine.core.bll.validator.MacAddressValidator;
 import org.ovirt.engine.core.common.action.ActivateDeactivateVmNicParameters;
 import org.ovirt.engine.core.common.action.AddVmInterfaceParameters;
 import org.ovirt.engine.core.common.action.PlugAction;
@@ -16,8 +17,6 @@
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.businessentities.network.VmNic;
 import org.ovirt.engine.core.common.businessentities.storage.Disk;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
@@ -63,10 +62,7 @@
     }
 
     protected ValidationResult macAvailable() {
-        Boolean allowDupMacs = Config.<Boolean> 
getValue(ConfigValues.AllowDuplicateMacAddresses);
-        return getMacPool().isMacInUse(getMacAddress()) && !allowDupMacs
-                ? new 
ValidationResult(VdcBllMessages.NETWORK_MAC_ADDRESS_IN_USE)
-                : ValidationResult.VALID;
+        return new MacAddressValidator(getMacPool(), 
getMacAddress()).isMacAssignableValidator();
     }
 
     protected boolean uniqueInterfaceName(List<VmNic> interfaces) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
index 1ff9a3c..fc469f4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/ActivateDeactivateVmNicCommand.java
@@ -8,11 +8,11 @@
 import org.ovirt.engine.core.bll.VmCommand;
 import org.ovirt.engine.core.bll.context.CommandContext;
 import org.ovirt.engine.core.bll.network.ExternalNetworkManager;
-import org.ovirt.engine.core.bll.network.VmInterfaceManager;
 import org.ovirt.engine.core.bll.network.cluster.NetworkHelper;
 import org.ovirt.engine.core.bll.provider.ProviderProxyFactory;
 import org.ovirt.engine.core.bll.provider.network.NetworkProviderProxy;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
+import org.ovirt.engine.core.bll.validator.MacAddressValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.ActivateDeactivateVmNicParameters;
 import org.ovirt.engine.core.common.action.PlugAction;
@@ -24,8 +24,6 @@
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
 import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.vdscommands.VmNicDeviceVDSParameters;
@@ -229,12 +227,7 @@
     }
 
     protected ValidationResult macAvailable() {
-        Boolean allowDupMacs = Config.<Boolean> 
getValue(ConfigValues.AllowDuplicateMacAddresses);
-        VmInterfaceManager vmInterfaceManager = new 
VmInterfaceManager(getMacPool());
-        if (allowDupMacs || 
!vmInterfaceManager.existsPluggedInterfaceWithSameMac(getParameters().getNic()))
 {
-            return ValidationResult.VALID;
-        } else {
-            return new 
ValidationResult(VdcBllMessages.NETWORK_MAC_ADDRESS_IN_USE);
-        }
+        String macAddress = getParameters().getNic().getMacAddress();
+        return new MacAddressValidator(getMacPool(), 
macAddress).isMacAssignableValidator();
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
index afb107f..ec8c21b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
@@ -1,5 +1,14 @@
 package org.ovirt.engine.core.bll.utils;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.VmHandler;
 import org.ovirt.engine.core.bll.network.VmInterfaceManager;
@@ -35,15 +44,6 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.VmDeviceDAO;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsProperties;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 public class VmDeviceUtils {
     private final static String RAM = "ram";
@@ -820,6 +820,7 @@
      * @param iface
      *            the network interface to check if can be plugged
      */
+    //TODO MM: replace with consulting mac pool instead of db?
     private static boolean canPlugInterface(VmNic iface) {
         VmInterfaceManager vmIfaceManager = new VmInterfaceManager();
         if (vmIfaceManager.existsPluggedInterfaceWithSameMac(iface)) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MacAddressValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MacAddressValidator.java
new file mode 100644
index 0000000..e8255b2
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MacAddressValidator.java
@@ -0,0 +1,22 @@
+package org.ovirt.engine.core.bll.validator;
+
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolManagerStrategy;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+
+public class MacAddressValidator {
+    private final MacPoolManagerStrategy macPool;
+    private final String macAddress;
+
+    public MacAddressValidator(MacPoolManagerStrategy macPool, String 
macAddress) {
+        this.macPool = macPool;
+        this.macAddress = macAddress;
+    }
+
+    public ValidationResult isMacAssignableValidator() {
+        Boolean allowDupMacs = macPool.isDuplicateMacAddressesAllowed();
+        boolean macIsAlreadyUsed = macPool.isMacInUse(macAddress);
+        boolean illegalDuplicateMacUsage = macIsAlreadyUsed && !allowDupMacs;
+        return 
ValidationResult.failWith(VdcBllMessages.NETWORK_MAC_ADDRESS_IN_USE).when(illegalDuplicateMacUsage);
+    }
+}


-- 
To view, visit https://gerrit.ovirt.org/40052
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia384509b16b8547194ff1b0532bea3c256928f4f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <mmu...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to