Moti Asayag has uploaded a new change for review. Change subject: engine: Change pciAndIdeWithinLimit to accept VmNics ......................................................................
engine: Change pciAndIdeWithinLimit to accept VmNics The patch is the first of a sequence of patches which will move backend internal code working with VmNic rather than the VmNetworkInterface. Change-Id: Ib1782b92098c763e0626a5de6cdb6087f986ce94 Signed-off-by: Moti Asayag <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractDiskVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.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/AddVmInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Entities.java 11 files changed, 43 insertions(+), 21 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/25/17225/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractDiskVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractDiskVmCommand.java index 2d96c2c..8a79a65 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractDiskVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractDiskVmCommand.java @@ -21,7 +21,7 @@ import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VolumeFormat; -import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -97,7 +97,7 @@ } protected boolean isDiskPassPciAndIdeLimit(Disk diskInfo) { - List<VmNetworkInterface> vmInterfaces = getVmNetworkInterfaceDao().getAllForVm(getVmId()); + List<VmNic> vmInterfaces = getVmNicDao().getAllForVm(getVmId()); List<Disk> allVmDisks = new ArrayList<Disk>(getVm().getDiskMap().values()); allVmDisks.add(diskInfo); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java index 4cdebff..9c6ff70 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java @@ -32,6 +32,7 @@ import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.Entities; import org.ovirt.engine.core.common.businessentities.MigrationSupport; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.StorageDomain; @@ -49,6 +50,7 @@ import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -255,7 +257,7 @@ returnValue = returnValue && checkPciAndIdeLimit(getParameters().getVmStaticData().getNumOfMonitors(), - getVmInterfaces(), + Entities.<VmNic, VmNetworkInterface> upcast(getVmInterfaces()), getVmDisks(), getReturnValue().getCanDoActionMessages()) && canAddVm(getReturnValue().getCanDoActionMessages(), destStorages.values()) && hostToRunExist(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java index 9d90134..bfb05ba 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java @@ -31,6 +31,7 @@ import org.ovirt.engine.core.common.businessentities.VmWatchdog; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.locks.LockingGroup; import org.ovirt.engine.core.common.queries.IdQueryParameters; @@ -266,7 +267,7 @@ // if number of monitors has increased, check PCI and IDE limits are ok if (vmFromDB.getNumOfMonitors() < vmFromParams.getNumOfMonitors()) { List<Disk> allDisks = DbFacade.getInstance().getDiskDao().getAllForVm(getVmId()); - List<VmNetworkInterface> interfaces = getVmNetworkInterfaceDao().getAllForVm(getVmId()); + List<VmNic> interfaces = getVmNicDao().getAllForVm(getVmId()); if (!checkPciAndIdeLimit(vmFromParams.getNumOfMonitors(), interfaces, allDisks, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java index 97495fe..debdaf2 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java @@ -34,7 +34,7 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDeviceId; -import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.locks.LockingGroup; import org.ovirt.engine.core.common.utils.Pair; @@ -152,7 +152,7 @@ private boolean validatePciAndIdeLimit(List<VM> vmsDiskPluggedTo) { for (VM vm : vmsDiskPluggedTo) { - List<VmNetworkInterface> allVmInterfaces = getVmNetworkInterfaceDao().getAllForVm(vm.getId()); + List<VmNic> allVmInterfaces = getVmNicDao().getAllForVm(vm.getId()); List<Disk> allVmDisks = new LinkedList<Disk>(getOtherVmDisks(vm.getId())); allVmDisks.add(getNewDisk()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java index 2c216b5..9dc16aa 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java @@ -22,6 +22,7 @@ import org.ovirt.engine.core.common.businessentities.tags; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBllMessages; @@ -38,6 +39,7 @@ import org.ovirt.engine.core.dao.VmDeviceDAO; import org.ovirt.engine.core.dao.VmDynamicDAO; import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.utils.GuidUtils; import org.ovirt.engine.core.utils.customprop.ValidationError; import org.ovirt.engine.core.utils.customprop.VmPropertiesUtils; @@ -114,14 +116,14 @@ * @param disks * @return */ - public static <T extends Disk> boolean checkPciAndIdeLimit(int monitorsNumber, List<VmNetworkInterface> interfaces, + public static <T extends Disk> boolean checkPciAndIdeLimit(int monitorsNumber, List<VmNic> interfaces, List<T> disks, ArrayList<String> messages) { boolean result = true; // this adds: monitors + 2 * (interfaces with type rtl_pv) + (all other // interfaces) + (all disks that are not IDE) int pciInUse = monitorsNumber; - for (VmNetworkInterface a : interfaces) { + for (VmNic a : interfaces) { if (a.getType() != null && VmInterfaceType.forValue(a.getType()) == VmInterfaceType.rtl8139_pv) { pciInUse += 2; } else { @@ -431,6 +433,12 @@ return super.getVmNetworkInterfaceDao(); } + /** Overriding to allow spying from this package */ + @Override + protected VmNicDao getVmNicDao() { + return super.getVmNicDao(); + } + protected VmDynamicDAO getVmDynamicDao() { return getDbFacade().getVmDynamicDao(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java index c4cfa96..dc10bec 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/template/AddVmTemplateInterfaceCommand.java @@ -1,6 +1,7 @@ package org.ovirt.engine.core.bll.network.template; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.commons.lang.StringUtils; @@ -18,6 +19,7 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.compat.Guid; @@ -59,10 +61,9 @@ } VmTemplateHandler.UpdateDisksFromDb(getVmTemplate()); - java.util.ArrayList<VmNetworkInterface> allInterfaces = new java.util.ArrayList<VmNetworkInterface>(interfaces); - allInterfaces.add(getParameters().getInterface()); - if (!VmCommand.checkPciAndIdeLimit(getVmTemplate().getNumOfMonitors(), allInterfaces, + if (!VmCommand.checkPciAndIdeLimit(getVmTemplate().getNumOfMonitors(), + Collections.<VmNic> singletonList(getParameters().getInterface()), new ArrayList<DiskImageBase>(getVmTemplate().getDiskList()), getReturnValue().getCanDoActionMessages())) { return false; } 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 edce2aa..8a23bd8 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 @@ -16,6 +16,7 @@ import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -89,7 +90,7 @@ getReturnValue().getCanDoActionMessages()); } - protected boolean pciAndIdeWithinLimit(VmStatic vm, List<VmNetworkInterface> allInterfaces) { + protected boolean pciAndIdeWithinLimit(VmStatic vm, List<VmNic> allInterfaces) { List<Disk> allDisks = getDiskDao().getAllForVm(getVmId()); return checkPciAndIdeLimit(vm.getNumOfMonitors(), allInterfaces, allDisks, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java index df7fa48..38efc08 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/AddVmInterfaceCommand.java @@ -1,6 +1,6 @@ package org.ovirt.engine.core.bll.network.vm; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.apache.commons.lang.StringUtils; @@ -20,6 +20,7 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.compat.Guid; @@ -123,10 +124,7 @@ } // check that not exceeded PCI and IDE limit - List<VmNetworkInterface> allInterfaces = new ArrayList<VmNetworkInterface>(interfaces); - allInterfaces.add(getInterface()); - - if (!pciAndIdeWithinLimit(vm, allInterfaces)) { + if (!pciAndIdeWithinLimit(vm, Collections.<VmNic> singletonList(getInterface()))) { return false; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java index 1a466e8..e02083e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/vm/UpdateVmInterfaceCommand.java @@ -14,6 +14,7 @@ import org.ovirt.engine.core.common.action.AddVmInterfaceParameters; import org.ovirt.engine.core.common.action.PlugAction; import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.Entities; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceId; @@ -21,6 +22,7 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.network.VmNic; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.common.validation.group.UpdateVmNic; @@ -169,7 +171,7 @@ allInterfaces.add(getInterface()); VmStatic vm = getVmStaticDAO().get(getVmId()); - if (!pciAndIdeWithinLimit(vm, allInterfaces)) { + if (!pciAndIdeWithinLimit(vm, Entities.<VmNic, VmNetworkInterface> upcast(allInterfaces))) { return false; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java index 5ffe935..0c6fdd1 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java @@ -53,7 +53,7 @@ import org.ovirt.engine.core.dao.StoragePoolDAO; import org.ovirt.engine.core.dao.StoragePoolIsoMapDAO; import org.ovirt.engine.core.dao.VmDAO; -import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; +import org.ovirt.engine.core.dao.network.VmNicDao; import org.ovirt.engine.core.utils.MockConfigRule; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -83,7 +83,7 @@ private StoragePoolIsoMapDAO storagePoolIsoMapDAO; @Mock - private VmNetworkInterfaceDao vmNetworkInterfaceDAO; + private VmNicDao vmNicDAO; @Mock private DiskLunMapDao diskLunMapDAO; @@ -332,7 +332,7 @@ doReturn(storagePoolIsoMapDAO).when(command).getStoragePoolIsoMapDao(); doReturn(storageDomainStaticDAO).when(command).getStorageDomainStaticDao(); doReturn(storagePoolDAO).when(command).getStoragePoolDAO(); - doReturn(vmNetworkInterfaceDAO).when(command).getVmNetworkInterfaceDao(); + doReturn(vmNicDAO).when(command).getVmNicDao(); doReturn(diskLunMapDAO).when(command).getDiskLunMapDao(); doReturn(vmDAO).when(command).getVmDAO(); doNothing().when(command).updateDisksFromDb(); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Entities.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Entities.java index a226689..f809ad0 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Entities.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/Entities.java @@ -1,6 +1,7 @@ package org.ovirt.engine.core.common.businessentities; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -132,4 +133,12 @@ return sb.toString(); } + public static <B, G extends B> List<B> upcast(List<G> entities) { + List<B> baseEntities = new ArrayList<B>(entities.size()); + for (G entity : entities) { + baseEntities.add(entity); + } + + return baseEntities; + } } -- To view, visit http://gerrit.ovirt.org/17225 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib1782b92098c763e0626a5de6cdb6087f986ce94 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
