Shahar Havivi has uploaded a new change for review.

Change subject: engine: RFE: set locale language and keyboard via Sysprep
......................................................................

engine: RFE: set locale language and keyboard via Sysprep

Change-Id: Ica4e2edf34a49c907ba32fa0a14bf6a4e4527cf4
Signed-off-by: Shahar Havivi <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInit.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommand.java
D 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommandParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java
M packaging/conf/sysprep/sysprep.w7
A packaging/dbscripts/upgrade/03_05_0060_vm_init_add_sysprep_locale.sql
7 files changed, 96 insertions(+), 57 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/24838/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInit.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInit.java
index 03d1beb..8323487 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInit.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmInit.java
@@ -23,7 +23,20 @@
     private boolean passwordAlreadyStored;
     private String customScript;
 
+    private String setupUiLanguageUiLanguage;
+    private String inputLocale;
+    private String uiLanguage;
+    private String systemLocale;
+    private String userLocale;
+
+    private static final String DEFALUT_LOCALE = "en_US";
+
     public VmInit() {
+        setupUiLanguageUiLanguage = DEFALUT_LOCALE;
+        inputLocale = DEFALUT_LOCALE;
+        uiLanguage = DEFALUT_LOCALE;
+        systemLocale = DEFALUT_LOCALE;
+        userLocale = DEFALUT_LOCALE;
     }
 
     public void setCustomScript(String customScript) {
@@ -125,4 +138,44 @@
     public void setPasswordAlreadyStored(boolean passwordAlreadyStored) {
         this.passwordAlreadyStored = passwordAlreadyStored;
     }
+
+    public String getSetupUiLanguageUiLanguage() {
+        return setupUiLanguageUiLanguage;
+    }
+
+    public void setSetupUiLanguageUiLanguage(String setupUiLanguageUiLanguage) 
{
+        this.setupUiLanguageUiLanguage = setupUiLanguageUiLanguage;
+    }
+
+    public String getInputLocale() {
+        return inputLocale;
+    }
+
+    public void setInputLocale(String inputLocale) {
+        this.inputLocale = inputLocale;
+    }
+
+    public String getUiLanguage() {
+        return uiLanguage;
+    }
+
+    public void setUiLanguage(String uiLanguage) {
+        this.uiLanguage = uiLanguage;
+    }
+
+    public String getSystemLocale() {
+        return systemLocale;
+    }
+
+    public void setSystemLocale(String systemLocale) {
+        this.systemLocale = systemLocale;
+    }
+
+    public String getUserLocale() {
+        return userLocale;
+    }
+
+    public void setUserLocale(String userLocale) {
+        this.userLocale = userLocale;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
index f6be592..a9b9e6a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
@@ -16,7 +16,6 @@
 import org.ovirt.engine.core.vdsbroker.vdsbroker.CreateVDSCommand;
 import 
org.ovirt.engine.core.vdsbroker.vdsbroker.CreateVmFromCloudInitVDSCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.CreateVmFromSysPrepVDSCommand;
-import 
org.ovirt.engine.core.vdsbroker.vdsbroker.CreateVmFromSysPrepVDSCommandParameters;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSGenericException;
 
 public class CreateVmVDSCommand<P extends CreateVmVDSCommandParameters> 
extends VdsIdVDSCommandBase<P> {
@@ -63,19 +62,14 @@
 
     private CreateVDSCommand<?> initCreateVDSCommand(VM vm) throws Exception {
         if (vm.isSysprepUsed()) {
-            String domain = (vm.getVmInit() != null && 
vm.getVmInit().getDomain() != null) ?
-                    vm.getVmInit().getDomain() : "";
-            String hostName = (vm.getVmInit() != null && 
vm.getVmInit().getHostname() != null) ?
-                    vm.getVmInit().getHostname() : vm.getName();
+
             // use answer file to run after sysprep.
-            CreateVmFromSysPrepVDSCommandParameters createVmFromSysPrepParam =
-                    new CreateVmFromSysPrepVDSCommandParameters(
+            CreateVmVDSCommandParameters createVmFromSysPrepParam =
+                    new CreateVmVDSCommandParameters(
                             getVdsId(),
-                            vm,
-                            hostName,
-                            domain);
+                            vm);
             
createVmFromSysPrepParam.setSysPrepParams(getParameters().getSysPrepParams());
-            return new 
CreateVmFromSysPrepVDSCommand<CreateVmFromSysPrepVDSCommandParameters>(createVmFromSysPrepParam);
+            return new 
CreateVmFromSysPrepVDSCommand<CreateVmVDSCommandParameters>(createVmFromSysPrepParam);
         }
         else if (vm.isCloudInitUsed()) {
             return new 
CreateVmFromCloudInitVDSCommand<CreateVmVDSCommandParameters>(getParameters());
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommand.java
index ce344dd..862e052 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommand.java
@@ -1,14 +1,14 @@
 package org.ovirt.engine.core.vdsbroker.vdsbroker;
 
+import org.ovirt.engine.core.common.vdscommands.CreateVmVDSCommandParameters;
 
-public class CreateVmFromSysPrepVDSCommand<P extends 
CreateVmFromSysPrepVDSCommandParameters>
+
+public class CreateVmFromSysPrepVDSCommand<P extends 
CreateVmVDSCommandParameters>
         extends CreateVDSCommand<P> {
     public CreateVmFromSysPrepVDSCommand(P parameters) {
         super(parameters);
         String sysPrepContent =
                 SysprepHandler.getSysPrep(parameters.getVm(),
-                        parameters.getHostName(),
-                        parameters.getDomain(),
                         parameters.getSysPrepParams());
 
         if (!"".equals(sysPrepContent)) {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommandParameters.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommandParameters.java
deleted file mode 100644
index 5cabff9..0000000
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVmFromSysPrepVDSCommandParameters.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.ovirt.engine.core.vdsbroker.vdsbroker;
-
-import org.ovirt.engine.core.common.businessentities.VM;
-import org.ovirt.engine.core.common.vdscommands.CreateVmVDSCommandParameters;
-import org.ovirt.engine.core.compat.Guid;
-
-public class CreateVmFromSysPrepVDSCommandParameters extends 
CreateVmVDSCommandParameters {
-    private String _hostName;
-    private String _domain;
-
-    public CreateVmFromSysPrepVDSCommandParameters(Guid vdsId, VM vm, String 
hostName, String domain) {
-        super(vdsId, vm);
-        _hostName = hostName;
-        _domain = domain;
-    }
-
-    public String getHostName() {
-        return _hostName;
-    }
-
-    public String getDomain() {
-        return _domain;
-    }
-
-    @Override
-    public String toString() {
-        return String.format("%s, hostName=%s, domain=%s", super.toString(), 
getHostName(), getDomain());
-    }
-}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java
index 9807734..46858e3 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java
@@ -60,10 +60,15 @@
         passwordPerDomain = Config.<DomainsPasswordMap> 
getValue(ConfigValues.AdUserPassword);
     }
 
-    public static String getSysPrep(VM vm, String hostName, String domain, 
SysPrepParams sysPrepParams) {
+    public static String getSysPrep(VM vm, SysPrepParams sysPrepParams) {
         String sysPrepContent = "";
         sysPrepContent = LoadFile(osRepository.getSysprepPath(vm.getVmOsId(), 
null));
         sysPrepContent = replace(sysPrepContent, "$ProductKey$", 
osRepository.getProductKey(vm.getVmOsId(), null));
+
+        String domain = (vm.getVmInit() != null && vm.getVmInit().getDomain() 
!= null) ?
+                vm.getVmInit().getDomain() : "";
+        String hostName = (vm.getVmInit() != null && 
vm.getVmInit().getHostname() != null) ?
+                vm.getVmInit().getHostname() : vm.getName();
 
         if (sysPrepContent.length() > 0) {
 
@@ -75,6 +80,14 @@
 
             sysPrepContent = replace(sysPrepContent, "$TimeZone$", timeZone);
             sysPrepContent = replace(sysPrepContent, "$OrgName$", 
Config.<String> getValue(ConfigValues.OrganizationName));
+
+            if (vm.getVmInit() != null) {
+                sysPrepContent = replace(sysPrepContent, 
"$SetupUiLanguageUiLanguage$", vm.getVmInit().getSetupUiLanguageUiLanguage());
+                sysPrepContent = replace(sysPrepContent, "$InputLocale$", 
vm.getVmInit().getInputLocale());
+                sysPrepContent = replace(sysPrepContent, "$UiLanguage$", 
vm.getVmInit().getUiLanguage());
+                sysPrepContent = replace(sysPrepContent, "$SystemLocale$", 
vm.getVmInit().getSystemLocale());
+                sysPrepContent = replace(sysPrepContent, "$UserLocale$", 
vm.getVmInit().getUserLocale());
+            }
         }
 
         return sysPrepContent;
diff --git a/packaging/conf/sysprep/sysprep.w7 
b/packaging/conf/sysprep/sysprep.w7
index 8172033..d2eb471 100644
--- a/packaging/conf/sysprep/sysprep.w7
+++ b/packaging/conf/sysprep/sysprep.w7
@@ -18,12 +18,12 @@
         </component>
         <component name="Microsoft-Windows-International-Core-WinPE" 
processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" 
language="neutral" versionScope="nonSxS" 
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
             <SetupUILanguage>
-                <UILanguage>en-US</UILanguage>
+                <UILanguage>$UILanguage$</UILanguage>
             </SetupUILanguage>
-            <InputLocale>en-US</InputLocale>
-            <UILanguage>en-US</UILanguage>
-            <SystemLocale>en-US</SystemLocale>
-            <UserLocale>en-US</UserLocale>
+            <InputLocale>$InputLocale$</InputLocale>
+            <UILanguage>$UILanguage$</UILanguage>
+            <SystemLocale>$SystemLocale$</SystemLocale>
+            <UserLocale>$UserLocale$</UserLocale>
         </component>
     </settings>
     <settings pass="specialize">
@@ -49,10 +49,10 @@
             <TimeZone>$TimeZone$</TimeZone>
         </component>
         <component name="Microsoft-Windows-International-Core" 
processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" 
language="neutral" versionScope="nonSxS" 
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
-            <InputLocale>en-US</InputLocale>
-            <UserLocale>en-US</UserLocale>
-            <SystemLocale>en-US</SystemLocale>
-            <UILanguage>en-US</UILanguage>
+            <InputLocale>$InputLocale$</InputLocale>
+            <UserLocale>$UserLocale$</UserLocale>
+            <SystemLocale>$SystemLocale$</SystemLocale>
+            <UILanguage>$UILanguage$</UILanguage>
         </component>
     </settings>
     <settings pass="oobeSystem">
@@ -81,10 +81,10 @@
             </OOBE>
         </component>
         <component name="Microsoft-Windows-International-Core" 
processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" 
language="neutral" versionScope="nonSxS" 
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
-            <InputLocale>en-US</InputLocale>
-            <UserLocale>en-US</UserLocale>
-            <SystemLocale>en-US</SystemLocale>
-            <UILanguage>en-US</UILanguage>
+            <InputLocale>$InputLocale$</InputLocale>
+            <UserLocale>$UserLocale$</UserLocale>
+            <SystemLocale>$SystemLocale$</SystemLocale>
+            <UILanguage>$UILanguage$</UILanguage>
         </component>
     </settings>
     <cpi:offlineImage cpi:source="wim:d:/sources/install.wim#Windows 7 
ENTERPRISE" xmlns:cpi="urn:schemas-microsoft-com:cpi"/>
diff --git 
a/packaging/dbscripts/upgrade/03_05_0060_vm_init_add_sysprep_locale.sql 
b/packaging/dbscripts/upgrade/03_05_0060_vm_init_add_sysprep_locale.sql
new file mode 100644
index 0000000..6ff59f7
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_0060_vm_init_add_sysprep_locale.sql
@@ -0,0 +1,8 @@
+-- ----------------------------------------------------------------------
+-- Adding setup language options for Windows Sysprep
+-- ----------------------------------------------------------------------
+alter table vm_init add column setup_ui_language_ui_language VARCHAR(256) 
DEFAULT NULL;
+alter table vm_init add column input_locale VARCHAR(256) DEFAULT NULL;
+alter table vm_init add column ui_language VARCHAR(256) DEFAULT NULL;
+alter table vm_init add column system_locale VARCHAR(256) DEFAULT NULL;
+alter table vm_init add column user_locale VARCHAR(256) DEFAULT NULL;


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica4e2edf34a49c907ba32fa0a14bf6a4e4527cf4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to