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