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