Francesco Romani has uploaded a new change for review.

Change subject: core: enable hyperv optimization on windows
......................................................................

core: enable hyperv optimization on windows

On VDSM side, we are catching-up with HyperV
enligthenment support and recommended settings.

Some of them are grouped under the 'hypervEnable'
toggle and it is required to be explicitely enable
for various reasons, the first one is they may be not
completely transparent to not-windows guests.

This patch automaticcaly enables these optimizations
for windows guests.

Change-Id: I01d50a539347211a6729cfb86922d60a6244d495
Bug-Url: https://bugzilla.redhat.com/1110305
Relates-To: https://bugzilla.redhat.com/1107835
Relates-To: https://bugzilla.redhat.com/1083529
Signed-off-by: Francesco Romani <from...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
M 
backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
M packaging/conf/osinfo-defaults.properties
6 files changed, 29 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/30188/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
index 0701038..f8a951c 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
@@ -255,4 +255,11 @@
      */
     boolean isSingleQxlDeviceEnabled(int osId);
 
+    /**
+     * Checks if is recommended enable the HyperV optimizations
+     * @param osId
+     * @param version
+     * @return an boolean
+     */
+    public boolean isHypervEnabled(int osId, Version version);
 }
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
index 64c32b0..093ede8 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
@@ -408,6 +408,11 @@
     }
 
     @Override
+    public boolean isHypervEnabled(int osId, Version version) {
+        return getBoolean(getValueByVersion(idToUnameLookup.get(osId), 
"devices.hyperv.enabled", version), false);
+    }
+
+    @Override
     public int getOsIdByUniqueName(String uniqueOsName) {
         for (Map.Entry<Integer, String> entry : getUniqueOsNames().entrySet()) 
{
             if (entry.getValue().equals(uniqueOsName)) {
diff --git 
a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java
 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java
index c9f7d04..8d16db7 100644
--- 
a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java
+++ 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/OsRepositoryImplTest.java
@@ -58,6 +58,7 @@
         preferences.node("/os/rhel8/derivedFrom").put("value", "rhel7");
         preferences.node("/os/windows_8/id").put("value", "20");
         preferences.node("/backwardCompatibility").put("Windows8", "20");
+        preferences.node("/os/windows_7/devices/hyperv/enabled").put("value", 
"true");
         OsRepositoryImpl.INSTANCE.init(preferences);
     }
 
@@ -233,4 +234,14 @@
         assertEquals(20, 
OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("Windows8"));
         assertEquals(20, 
OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("windows_8"));
     }
+
+    @Test
+    public void testHyperVLinux() throws Exception {
+        
assertFalse(OsRepositoryImpl.INSTANCE.isHypervEnabled(OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("rhel7"),
 Version.v3_5));
+    }
+
+    @Test
+    public void testHyperVWindows() throws Exception {
+        
assertTrue(OsRepositoryImpl.INSTANCE.isHypervEnabled(OsRepositoryImpl.INSTANCE.getOsIdByUniqueName("windows_7"),
 Version.v3_5));
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index ceddc2b..5df1593 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -269,6 +269,7 @@
     public static final String sysprepInf = "sysprepInf"; // for the binary sys
     public static final String spiceFileTransferEnable = "fileTransferEnable";
     public static final String spiceCopyPasteEnable = "copyPasteEnable";
+    public static final String hypervEnable = "hypervEnable";
                                                           // prep
     public static final String Boot = "boot"; // Optional
     public static final String BootOrder = "bootOrder";
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
index 7ec210d..df2325a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
@@ -156,6 +156,10 @@
             createInfo.put(VdsProperties.spiceCopyPasteEnable,
                 Boolean.toString(vm.isSpiceCopyPasteEnabled()));
         }
+
+        if (osRepository.isHypervEnabled(vm.getVmOsId(), 
vm.getVdsGroupCompatibilityVersion())) {
+            createInfo.put(VdsProperties.hypervEnable, "true");
+        }
     }
 
     private void addCpuPinning(final String compatibilityVersion) {
diff --git a/packaging/conf/osinfo-defaults.properties 
b/packaging/conf/osinfo-defaults.properties
index bf579b7..f0937dc 100644
--- a/packaging/conf/osinfo-defaults.properties
+++ b/packaging/conf/osinfo-defaults.properties
@@ -155,6 +155,7 @@
 os.windows_xp.devices.diskInterfaces.value.3.4 = IDE, VirtIO
 os.windows_xp.devices.diskInterfaces.value.3.5 = IDE, VirtIO
 os.windows_xp.family.value = windows
+os.windows_xp.devices.hyperv.enabled.value = true
 
 
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I01d50a539347211a6729cfb86922d60a6244d495
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Francesco Romani <from...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to