Daniel Erez has uploaded a new change for review.

Change subject: core: use OsInfo instead of config value
......................................................................

core: use OsInfo instead of config value

Use OsInfo query instead of VirtIoScsiUnsupportedOsList config value:
* Added isOsSupportedForVirtIoScsi method to VmValidationUtils.
* Modified DiskValidator -> isOsSupportedForVirtIoScsi accordingly.
* Removed unused ConfigValues.VirtIoScsiUnsupportedOsList.

Change-Id: Idf434c5b7907f413399890a4b2e7d9f63f2bce9a
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VmValidationUtils.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/config/ConfigValues.java
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
5 files changed, 25 insertions(+), 28 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/22216/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskValidator.java
index eda08a0..58d8be0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskValidator.java
@@ -11,12 +11,8 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.VmDevice;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.common.osinfo.OsRepository;
 import org.ovirt.engine.core.common.utils.Pair;
-import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.VmDAO;
@@ -66,13 +62,8 @@
      * Validates that the OS is supported for Virtio-SCSI interface.
      */
     public ValidationResult isOsSupportedForVirtIoScsi(VM vm) {
-        //TODO move this config val to osinfo
-        final List<String> unsupportedOSs = Config.<List<String>> 
getValue(ConfigValues.VirtIoScsiUnsupportedOsList);
-        String vmOs = 
SimpleDependecyInjector.getInstance().get(OsRepository.class).getUniqueOsNames().get(vm.getVmOsId());
-        for (String os : unsupportedOSs) {
-            if (os.equalsIgnoreCase(vmOs)) {
-                return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_GUEST_OS_VERSION_IS_NOT_SUPPORTED);
-            }
+        if (!VmValidationUtils.isOsSupportedForVirtIoScsi(vm.getVmOsId(), 
vm.getVdsGroupCompatibilityVersion())) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_GUEST_OS_VERSION_IS_NOT_SUPPORTED);
         }
         return ValidationResult.VALID;
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VmValidationUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VmValidationUtils.java
index f4cb0c9..1fe71ee 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VmValidationUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VmValidationUtils.java
@@ -1,9 +1,12 @@
 package org.ovirt.engine.core.bll.validator;
 
 import org.ovirt.engine.core.common.businessentities.ArchitectureType;
+import org.ovirt.engine.core.common.businessentities.DiskInterface;
 import org.ovirt.engine.core.common.osinfo.OsRepository;
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.compat.Version;
+
+import java.util.ArrayList;
 
 public class VmValidationUtils {
 
@@ -33,6 +36,18 @@
     }
 
     /**
+     * Check if the OS type support VirtIO-SCSI.
+     *
+     * @param osId The OS identifier.
+     *
+     * @return If the OS type is supported.
+     */
+    public static boolean isOsSupportedForVirtIoScsi(int osId, Version 
clusterVersion) {
+        ArrayList<String> diskInterfaces = 
SimpleDependecyInjector.getInstance().get(OsRepository.class).getDiskInterfaces(osId,
 clusterVersion);
+        return diskInterfaces.contains(DiskInterface.VirtIO_SCSI.toString());
+    }
+
+    /**
      * Get the configured minimum VM memory size allowed.
      *
      * @return The minimum VM memory size allowed (as per configuration).
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 de3ad44..8bb9e86 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
@@ -69,9 +69,7 @@
             mockConfig(ConfigValues.MaxBlockDiskSize, MAX_BLOCK_SIZE),
             mockConfig(ConfigValues.FreeSpaceCriticalLowInGB, 
FREE_SPACE_CRITICAL_LOW_IN_GB),
             mockConfig(ConfigValues.ShareableDiskEnabled, 
Version.v3_1.toString(), true),
-            mockConfig(ConfigValues.VirtIoScsiEnabled, 
Version.v3_3.toString(), true),
-            mockConfig(ConfigValues.VirtIoScsiUnsupportedOsList,
-                    Arrays.asList("WindowsXP", "RHEL5", "RHEL5x64", "RHEL4", 
"RHEL4x64", "RHEL3", "RHEL3x64"))
+            mockConfig(ConfigValues.VirtIoScsiEnabled, 
Version.v3_3.toString(), true)
             );
 
     @Mock
@@ -325,6 +323,7 @@
         doReturn(true).when(command).checkImageConfiguration();
         
doReturn(mockSnapshotValidator()).when(command).getSnapshotsValidator();
         
doReturn(false).when(command).isVirtioScsiControllerAttached(any(Guid.class));
+        SimpleDependecyInjector.getInstance().bind(OsRepository.class, 
osRepository);
     }
 
     /**
@@ -641,13 +640,8 @@
         VM vm = mockVm();
         vm.setVdsGroupCompatibilityVersion(Version.v3_3);
 
-        //  mock osrepo
-        SimpleDependecyInjector.getInstance().bind(OsRepository.class, 
osRepository);
-        HashMap<Integer, String> uniqueOsNames = new HashMap<Integer, 
String>();
-        uniqueOsNames.put(7, "RHEL5");
-        when(osRepository.getUniqueOsNames()).thenReturn(uniqueOsNames);
-
-        vm.setVmOs(7);
+        when(osRepository.getDiskInterfaces(any(Integer.class), 
any(Version.class))).thenReturn(
+            new ArrayList<>(Arrays.asList("VirtIO")));
 
         DiskValidator diskValidator = spyDiskValidator(disk);
         
doReturn(true).when(diskValidator).isVirtioScsiControllerAttached(any(Guid.class));
@@ -713,6 +707,9 @@
         VM vm = mockVm();
         vm.setVdsGroupCompatibilityVersion(Version.v3_3);
 
+        when(osRepository.getDiskInterfaces(any(Integer.class), 
any(Version.class))).thenReturn(
+                new ArrayList<>(Arrays.asList("VirtIO_SCSI")));
+
         DiskValidator diskValidator = spyDiskValidator(disk);
         
doReturn(true).when(diskValidator).isVirtioScsiControllerAttached(any(Guid.class));
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index c292842..9a49e7b 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -1412,12 +1412,6 @@
     @DefaultValueAttribute("false")
     VirtIoScsiEnabled,
 
-    @Reloadable
-    @TypeConverterAttribute(java.util.List.class)
-    
@DefaultValueAttribute("WindowsXP,RHEL5,RHEL5x64,RHEL4,RHEL4x64,RHEL3,RHEL3x64")
-    @OptionBehaviourAttribute(behaviour = 
OptionBehaviour.CommaSeparatedStringArray)
-    VirtIoScsiUnsupportedOsList,
-
     @TypeConverterAttribute(String.class)
     @DefaultValueAttribute("/usr/bin/vdsm-tool service-restart vdsmd")
     SshSoftFencingCommand,
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index 6bd9fb3..feb93a1 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -201,7 +201,6 @@
 select fn_db_add_config_value('VirtIoScsiEnabled','false','3.1');
 select fn_db_add_config_value('VirtIoScsiEnabled','false','3.2');
 select fn_db_add_config_value('VirtIoScsiEnabled','true','3.3');
-select 
fn_db_add_config_value('VirtIoScsiUnsupportedOsList','WindowsXP,RHEL5,RHEL5x64,RHEL4,RHEL4x64,RHEL3,RHEL3x64','general');
 select fn_db_add_config_value('NormalizedMgmgNetworkEnabled','false','3.0');
 select fn_db_add_config_value('NormalizedMgmgNetworkEnabled','false','3.1');
 select fn_db_add_config_value('NormalizedMgmgNetworkEnabled','false','3.2');
@@ -911,6 +910,7 @@
 select fn_db_delete_config_value('AverageToPeakRatio','general');
 select fn_db_delete_config_value('AverageToBurstRatio','general');
 select fn_db_delete_config_value('DocsURL','general');
+select fn_db_delete_config_value('VirtIoScsiUnsupportedOsList','general');
 
------------------------------------------------------------------------------------
 --                  Split config section
 -- The purpose of this section is to treat config option that was once


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idf434c5b7907f413399890a4b2e7d9f63f2bce9a
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <de...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to