Hello,

  Follow attached a patch which allows multiple keys when setting
kernel_options or kernel_post_options kickstart profile.  I created  a
test spacewalk-java RPM package and it worked as expected.

  Thank you.

 Cheers,
mmello

-- 
Marcelo Moreira de Mello
RHCA RHCSS RHCVA 
Software Maintenance Engineer/SEG           

gpg id: 2048R/FDB110E5
gpg fingerprint: 3BE7 EF71 4DD7 6812 D309  8F18 BD42 D095 FDB1 10E5

From: Marcelo Moreira de Mello <mme...@redhat.com>
Date: Mon, 29 Aug 2011 16:06:00 -0300
Subject: [PATCH] 672652 - fixed allowing duplicate key for
 kernel_post_options and   kernel_options

    editing kickstart profile:

        Kernel Options: console=tty0 console=ttyS0,9600n8

    result:

        Kernel Options: console=ttyS0,9600n8

    Thanks Alessadro Lazarotti <alessandr...@gmail.com> for help.
---
 java/code/src/org/cobbler/CobblerObject.java |   28 +++++++++++++++++--------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/java/code/src/org/cobbler/CobblerObject.java 
b/java/code/src/org/cobbler/CobblerObject.java
index 025fae9..647dbfa 100644
--- a/java/code/src/org/cobbler/CobblerObject.java
+++ b/java/code/src/org/cobbler/CobblerObject.java
@@ -19,6 +19,7 @@ import com.redhat.rhn.common.util.StringUtil;
 
 import org.apache.commons.lang.StringUtils;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
@@ -335,11 +336,15 @@ public abstract class CobblerObject {
 
     private String convertOptionsMap(Map<String, Object> map) {
         StringBuilder string = new StringBuilder();
-        for (Object key : map.keySet()) {
-            if (StringUtils.isEmpty((String)map.get(key))) {
+        for (String key : map.keySet()) {
+            if (map.get(key) == null) {
                 string.append(key + " ");
-            }
-            else {
+            } else if(map.get(key) instanceof List<?>){
+                List<String> values = (List)map.get(key);
+                for (String value : values) {
+                    string.append(key + "=" + value + " ");
+                }
+            } else {
                 string.append(key + "=" + map.get(key) + " ");
             }
         }
@@ -372,7 +377,7 @@ public abstract class CobblerObject {
     private Map<String, Object> parseKernelOpts(String kernelOpts) {
         Map<String, Object> toRet = new HashMap<String, Object>();
 
-        if (StringUtils.isEmpty(kernelOpts)) {
+        if (kernelOpts == null || kernelOpts.equals("")) {
             return toRet;
         }
 
@@ -380,10 +385,15 @@ public abstract class CobblerObject {
         for (String option : options) {
             String[] split = option.split("=");
             if (split.length == 1) {
-                toRet.put(split[0], "");
-            }
-            else if (split.length == 2) {
-                toRet.put(split[0], split[1]);
+                toRet.put(split[0], null);
+            } else if (split.length == 2) {
+                if (toRet.containsKey(split[0])) {
+                    List<String> list = (List)toRet.get(split[0]);
+                    list.add(split[1]);
+                    toRet.put(split[0], list);
+                } else {
+                    toRet.put(split[0],new 
ArrayList<String>(Arrays.asList(split[1])));
+                }
             }
         }
         return toRet;
-- 
1.7.6

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to