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

Reply via email to