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

Reply via email to