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
