Gustavo Frederico Temple Pedrosa has uploaded a new change for review.

Change subject: core: [Fix] PCI limit in add balloon and sound
......................................................................

core: [Fix] PCI limit in add balloon and sound

Change-Id: I39fb7374426b67b64be2436b56197fcb6bfe3759
Signed-off-by: Gustavo Pedrosa <gustavo.pedr...@eldorado.org.br>
---
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/UpdateVmTemplateCommand.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/utils/VmDeviceUtils.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java
10 files changed, 54 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/22573/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 8d651f8..4abe025 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
@@ -110,6 +110,8 @@
                 allVmDisks,
                 isVirtioScsiControllerAttached(getVmId()),
                 hasWatchdog(getVmId()),
+                isBalloonEnabled(getVmId()),
+                isSoundDeviceEnabled(getVmId()),
                 getReturnValue().getCanDoActionMessages());
     }
 
@@ -117,6 +119,14 @@
         return VmDeviceUtils.isVirtioScsiControllerAttached(vmId);
     }
 
+    protected boolean isBalloonEnabled(Guid vmId) {
+        return VmDeviceUtils.isBalloonEnabled(vmId);
+    }
+
+    protected boolean isSoundDeviceEnabled(Guid vmId) {
+        return VmDeviceUtils.isSoundDeviceEnabled(vmId);
+    }
+
     protected boolean hasWatchdog(Guid vmId) {
         return VmDeviceUtils.hasWatchdog(vmId);
     }
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 8e83341..30500df 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
@@ -290,6 +290,8 @@
                                 getVmDisks(),
                                 isVirtioScsiEnabled(),
                                 hasWatchdog(),
+                                getParameters().isBalloonEnabled(),
+                                getParameters().isSoundDeviceEnabled(),
                                 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 921bef7..23f903a 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
@@ -399,6 +399,8 @@
                 allDisks,
                 isVirtioScsiEnabled(),
                 hasWatchdog(),
+                getParameters().isBalloonEnabled(),
+                getParameters().isSoundDeviceEnabled(),
                 getReturnValue().getCanDoActionMessages());
     }
 
@@ -550,8 +552,7 @@
     }
 
     protected boolean hasWatchdog() {
-        return getParameters().getWatchdog() != null ? true :
-            VmDeviceUtils.hasWatchdog(getVmId());
+        return getParameters().getWatchdog() != null;
     }
 
 }
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 6a55c6f..5163055 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
@@ -175,6 +175,8 @@
             if (!checkPciAndIdeLimit(vm.getNumOfMonitors(), allVmInterfaces, 
allVmDisks,
                     VmDeviceUtils.isVirtioScsiControllerAttached(vm.getId()),
                     VmDeviceUtils.hasWatchdog(vm.getId()),
+                    VmDeviceUtils.isBalloonEnabled(vm.getId()),
+                    VmDeviceUtils.isSoundDeviceEnabled(vm.getId()),
                     getReturnValue().getCanDoActionMessages())) {
                 return false;
             }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java
index e811aed..3fde8eb 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java
@@ -128,6 +128,8 @@
                             new 
ArrayList<DiskImageBase>(getParameters().getVmTemplateData().getDiskList()),
                             
VmDeviceUtils.isVirtioScsiControllerAttached(getParameters().getVmTemplateData().getId()),
                             
hasWatchdog(getParameters().getVmTemplateData().getId()),
+                            
VmDeviceUtils.isBalloonEnabled(getParameters().getVmTemplateData().getId()),
+                            getParameters().isSoundDeviceEnabled(),
                             getReturnValue().getCanDoActionMessages())) {
                 returnValue = false;
             }
@@ -137,8 +139,7 @@
     }
 
     protected boolean hasWatchdog(Guid templateId) {
-        return getParameters().getWatchdog() != null ? true :
-            VmDeviceUtils.hasWatchdog(templateId);
+        return getParameters().getWatchdog() != null;
     }
 
     @Override
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 caae206..b3f7d58 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
@@ -113,6 +113,8 @@
      * @param disks
      * @param virtioScsiEnabled
      * @param hasWatchdog
+     * @param isBalloonEnabled
+     * @param isSoundDeviceEnabled
      * @param messages
      * @return a boolean
      */
@@ -121,6 +123,8 @@
             List<T> disks,
             boolean virtioScsiEnabled,
             boolean hasWatchdog,
+            boolean isBalloonEnabled,
+            boolean isSoundDeviceEnabled,
             ArrayList<String> messages) {
         boolean result = true;
         // this adds: monitors + 2 * (interfaces with type rtl_pv) + (all other
@@ -148,6 +152,12 @@
         // VmWatchdog controller requires one PCI slot
         pciInUse += hasWatchdog ? 1 : 0;
 
+        // Balloon controller requires one PCI slot
+        pciInUse += isBalloonEnabled ? 1 : 0;
+
+        // Sound device controller requires one PCI slot
+        pciInUse += isSoundDeviceEnabled ? 1 : 0;
+
         if (pciInUse > MAX_PCI_SLOTS) {
             result = false;
             
messages.add(VdcBllMessages.ACTION_TYPE_FAILED_EXCEEDED_MAX_PCI_SLOTS.name());
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 df34cfe..2371855 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
@@ -65,6 +65,8 @@
                 new ArrayList<DiskImageBase>(getVmTemplate().getDiskList()),
                     VmDeviceUtils.isVirtioScsiControllerAttached(getVmId()),
                     VmDeviceUtils.hasWatchdog(getVmId()),
+                    VmDeviceUtils.isBalloonEnabled(getVmId()),
+                    VmDeviceUtils.isSoundDeviceEnabled(getVmId()),
                     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 4f3e041..f2775f0 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
@@ -79,6 +79,8 @@
         return checkPciAndIdeLimit(vm.getNumOfMonitors(), allInterfaces, 
allDisks,
                 VmDeviceUtils.isVirtioScsiControllerAttached(getVmId()),
                 VmDeviceUtils.hasWatchdog(getVmId()),
+                VmDeviceUtils.isBalloonEnabled(getVmId()),
+                VmDeviceUtils.isSoundDeviceEnabled(getVmId()),
                 getReturnValue().getCanDoActionMessages());
     }
 
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 54157d9..c965046 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
@@ -1011,6 +1011,24 @@
         return !getWatchdogs(vmId).isEmpty();
     }
 
+    public static boolean isBalloonEnabled(Guid vmId) {
+        return !getBalloonDevices(vmId).isEmpty();
+    }
+
+    public static boolean isSoundDeviceEnabled(Guid vmId) {
+        return !getSoundDevices(vmId).isEmpty();
+    }
+
+    public static List<VmDevice> getSoundDevices(Guid vmId) {
+        return 
DbFacade.getInstance().getVmDeviceDao().getVmDeviceByVmIdAndType(vmId,
+                VmDeviceGeneralType.SOUND);
+    }
+
+    public static List<VmDevice> getBalloonDevices(Guid vmId) {
+        return 
DbFacade.getInstance().getVmDeviceDao().getVmDeviceByVmIdAndType(vmId,
+                VmDeviceGeneralType.BALLOON);
+    }
+
     public static List<VmDevice> getWatchdogs(Guid vmId) {
         return 
DbFacade.getInstance().getVmDeviceDao().getVmDeviceByVmIdAndType(vmId,
                 VmDeviceGeneralType.WATCHDOG);
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 6f601d4..ea89f8c 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
@@ -324,6 +324,8 @@
         
doReturn(mockSnapshotValidator()).when(command).getSnapshotsValidator();
         
doReturn(false).when(command).isVirtioScsiControllerAttached(any(Guid.class));
         doReturn(false).when(command).hasWatchdog(any(Guid.class));
+        doReturn(false).when(command).isBalloonEnabled(any(Guid.class));
+        doReturn(false).when(command).isSoundDeviceEnabled(any(Guid.class));
         SimpleDependecyInjector.getInstance().bind(OsRepository.class, 
osRepository);
     }
 


-- 
To view, visit http://gerrit.ovirt.org/22573
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I39fb7374426b67b64be2436b56197fcb6bfe3759
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Gustavo Frederico Temple Pedrosa <gustavo.pedr...@eldorado.org.br>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to