Roy Golan has uploaded a new change for review. Change subject: core: Fail Add/Update Vm when CPU is unsupported ......................................................................
core: Fail Add/Update Vm when CPU is unsupported Change-Id: Id1d22994c59b16d1d71d2315882d41454079bf32 Bug-Url: https://bugzilla.redhat.com/1096851 Signed-off-by: Roy Golan <[email protected]> --- 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/CpuFlagsManagerHandler.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java 5 files changed, 41 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/32926/1 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 33232a7..9ada74a 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 @@ -79,6 +79,7 @@ import org.ovirt.engine.core.common.utils.customprop.VmPropertiesUtils; import org.ovirt.engine.core.common.validation.group.CreateVm; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.PermissionDAO; import org.ovirt.engine.core.dao.VmDynamicDAO; @@ -520,6 +521,21 @@ return false; } + if (!osRepository.isCpuSupported( + vmFromParams.getVmOsId(), + getVdsGroup().getcompatibility_version(), + CpuFlagsManagerHandler.getCpuIdByNameAndVersion( + getVdsGroup().getcpu_name(), + getVdsGroup().getcompatibility_version()))) { + failCanDoAction( + VdcBllMessages.CPU_TYPE_UNSUPPORTED_FOR_THE_GUEST_OS, + "$unsupportedCpus", + osRepository.getUnsupportedCpus().get( + new Pair<Integer, Version>( + vmFromParams.getVmOsId(), + getVdsGroup().getcompatibility_version())).toString()); + } + // Check if the display type is supported if (!VmHandler.isDisplayTypeSupported(getParameters().getVmStaticData().getOsId(), vmFromParams.getDefaultDisplayType(), diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java index 8f7b924..e757397 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java @@ -105,6 +105,10 @@ return null; } + public static String getCpuIdByNameAndVersion(String cpuName, Version version) { + return GetVDSVerbDataByCpuName(cpuName, version); + } + private static class CpuFlagsManager { private List<ServerCpu> _intelCpuList; private List<ServerCpu> _amdCpuList; 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 5b2a6be..91471be 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 @@ -423,6 +423,21 @@ return false; } + if (!osRepository.isCpuSupported( + vmFromParams.getVmOsId(), + getVdsGroup().getcompatibility_version(), + CpuFlagsManagerHandler.getCpuIdByNameAndVersion( + getVdsGroup().getcpu_name(), + getVdsGroup().getcompatibility_version()))) { + failCanDoAction( + VdcBllMessages.CPU_TYPE_UNSUPPORTED_FOR_THE_GUEST_OS, + "$unsupportedCpus", + osRepository.getUnsupportedCpus().get( + new Pair<Integer, Version>( + vmFromParams.getVmOsId(), + getVdsGroup().getcompatibility_version())).toString()); + } + if (vmFromParams.getSingleQxlPci() && !VmHandler.isSingleQxlDeviceLegal(vmFromParams.getDefaultDisplayType(), vmFromParams.getOs(), diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java index f95ca61..6836f88 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java @@ -1058,7 +1058,9 @@ // Kdump detection KDUMP_DETECTION_NOT_ENABLED_FOR_VDS(ErrorType.BAD_PARAMETERS), - KDUMP_DETECTION_NOT_CONFIGURED_ON_VDS(ErrorType.BAD_PARAMETERS); + KDUMP_DETECTION_NOT_CONFIGURED_ON_VDS(ErrorType.BAD_PARAMETERS), + + CPU_TYPE_UNSUPPORTED_FOR_THE_GUEST_OS(ErrorType.BAD_PARAMETERS); private ErrorType messageType; diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java index 460f230..ccaae53 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java @@ -3379,4 +3379,7 @@ @DefaultStringValue("Cannot ${action} ${type}. Plugged and unlinked VM network interface with external network is not supported.") String PLUGGED_UNLINKED_VM_INTERFACE_WITH_EXTERNAL_NETWORK_IS_NOT_SUPPORTED(); + + @DefaultStringValue("The guest OS doesn't support the following CPUs ${unsupportedCpus}. Its possible to change the cluster cpu or set a different one per VM") + String CPU_TYPE_UNSUPPORTED_FOR_THE_GUEST_OS(); } -- To view, visit http://gerrit.ovirt.org/32926 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id1d22994c59b16d1d71d2315882d41454079bf32 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Roy Golan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
