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

Reply via email to