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