Tomas Jelinek has uploaded a new change for review. Change subject: core: Sysprep can not handle values with dollar ......................................................................
core: Sysprep can not handle values with dollar The values which are replaced in SysprepHandler can not contain a dollar '$' sign. Fixed by creating a new QuotaReplacementStringBuilderCompat which calls Matcher.quoteReplacement on the new text when replacing. Created also a test class for it (QuotaReplacementStringBuilderCompatTest). Change-Id: I6e93afea963c3f69cbabaf413ffebb5c7a7e0b51 Signed-off-by: Tomas Jelinek <[email protected]> --- A backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompat.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SysprepHandler.java A backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompatTest.java 3 files changed, 42 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/7545/1 diff --git a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompat.java b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompat.java new file mode 100644 index 0000000..89c3c32 --- /dev/null +++ b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompat.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.compat; + +import java.util.regex.Matcher; + +public class QuotaReplacementStringBuilderCompat extends StringBuilderCompat { + + @Override + public void replace(String oldText, String newText) { + super.replace(oldText, Matcher.quoteReplacement(newText)); + } +} 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 f21b583..641ea7a 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 @@ -10,6 +10,7 @@ import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigUtil; import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.compat.QuotaReplacementStringBuilderCompat; import org.ovirt.engine.core.compat.StringBuilderCompat; import org.ovirt.engine.core.compat.TimeZoneInfo; import org.ovirt.engine.core.dal.dbbroker.generic.DomainsPasswordMap; @@ -63,7 +64,7 @@ } public static String GetSysPrep(VM vm, String hostName, String domain, SysPrepParams sysPrepParams) { - StringBuilderCompat sysPrepContent = new StringBuilderCompat(); + StringBuilderCompat sysPrepContent = new QuotaReplacementStringBuilderCompat(); switch (vm.getStaticData().getos()) { case WindowsXP: sysPrepContent.append(LoadFile(Config.<String> GetValue(ConfigValues.SysPrepXPPath))); diff --git a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompatTest.java b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompatTest.java new file mode 100644 index 0000000..2ef361a --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/compat/QuotaReplacementStringBuilderCompatTest.java @@ -0,0 +1,29 @@ +package org.ovirt.engine.core.compat; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +public class QuotaReplacementStringBuilderCompatTest { + + private QuotaReplacementStringBuilderCompat tested; + + @Before + public void setup() { + tested = new QuotaReplacementStringBuilderCompat(); + tested.append("AdminPassword=$AdminPassword$"); + } + + @Test + public void containsDollar() { + tested.replace("$AdminPassword$", "$user$name$"); + assertEquals("AdminPassword=$user$name$", tested.toString()); + } + + @Test + public void doesNotContainDollar() { + tested.replace("$AdminPassword$", "someUserName"); + assertEquals("AdminPassword=someUserName", tested.toString()); + } +} -- To view, visit http://gerrit.ovirt.org/7545 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6e93afea963c3f69cbabaf413ffebb5c7a7e0b51 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
