File cobbler-buildiso-list-to-string.patch of Package cobbler.8146

Index: cobbler-2.6.6/cobbler/action_buildiso.py
===================================================================
--- cobbler-2.6.6.orig/cobbler/action_buildiso.py
+++ cobbler-2.6.6/cobbler/action_buildiso.py
@@ -63,6 +63,16 @@ class BuildIso:
         header_src.close()
 
 
+    def get_first_value(self, koptvalue):
+        """
+        Some kopt values can be string or list but we can handle only 1 value
+        Return the string or the first value of the list
+        """
+        if type(koptvalue) == list:
+            return len(koptvalue) and koptvalue[0] or ""
+        return koptvalue
+
+
     def add_remaining_kopts(self,koptdict):
         """
         Add remaining kernel_options to append_line
@@ -165,11 +175,8 @@ class BuildIso:
                  if data.has_key("proxy") and data["proxy"] != "":
                      append_line += " proxy=%s" % data["proxy"]
                  if data["kernel_options"].has_key("install"):
-                     v = data["kernel_options"]["install"]
-                     if isinstance(v, list):
-                         v = v[0]
-                     if v:
-                         append_line += " install=%s" % v
+                     v = self.get_first_value(data["kernel_options"]["install"])
+                     append_line += " install=%s" % v
                      del data["kernel_options"]["install"]
                  else:
                      append_line += " install=http://%s:%s/cblr/links/%s" % (
@@ -222,14 +229,14 @@ class BuildIso:
                 if data.has_key("proxy") and data["proxy"] != "":
                     append_line += " proxy=%s" % data["proxy"]
                 if data["kernel_options"].has_key("install") and data["kernel_options"]["install"] != "":
-                    append_line += " install=%s" % data["kernel_options"]["install"]
+                    append_line += " install=%s" % self.get_first_value(data["kernel_options"]["install"])
                     del data["kernel_options"]["install"]
                 else:
                     append_line += " install=http://%s:%s/cblr/links/%s" % (
                         data["server"], self.api.settings().http_port, dist.name
                     )
                 if data["kernel_options"].has_key("autoyast") and data["kernel_options"]["autoyast"] != "":
-                    append_line += " autoyast=%s" % data["kernel_options"]["autoyast"]
+                    append_line += " autoyast=%s" % self.get_first_value(data["kernel_options"]["autoyast"])
                     del data["kernel_options"]["autoyast"]
                 else:
                     append_line += " autoyast=%s" % data["kickstart"]
@@ -268,51 +275,51 @@ class BuildIso:
              my_int = None;  my_ip = None; my_mask = None; my_gw = None; my_dns = None
              if dist.breed in ["suse", "redhat"]:
                 if data["kernel_options"].has_key("netmask") and data["kernel_options"]["netmask"] != "":
-                   my_mask = data["kernel_options"]["netmask"]
+                   my_mask = self.get_first_value(data["kernel_options"]["netmask"])
                    del data["kernel_options"]["netmask"]
                 if data["kernel_options"].has_key("gateway") and data["kernel_options"]["gateway"] != "":
-                   my_gw = data["kernel_options"]["gateway"]
+                   my_gw = self.get_first_value(data["kernel_options"]["gateway"])
                    del data["kernel_options"]["gateway"]
 
              if dist.breed == "redhat":
                 if data["kernel_options"].has_key("ksdevice") and data["kernel_options"]["ksdevice"] != "":
-                   my_int = data["kernel_options"]["ksdevice"]
+                   my_int = self.get_first_value(data["kernel_options"]["ksdevice"])
                    if my_int == "bootif":
                       my_int = None
                    del data["kernel_options"]["ksdevice"]
                 if data["kernel_options"].has_key("ip") and data["kernel_options"]["ip"] != "":
-                   my_ip = data["kernel_options"]["ip"]
+                   my_ip = self.get_first_value(data["kernel_options"]["ip"])
                    del data["kernel_options"]["ip"]
                 if data["kernel_options"].has_key("dns") and data["kernel_options"]["dns"] != "":
-                   my_dns = data["kernel_options"]["dns"]
+                   my_dns = self.get_first_value(data["kernel_options"]["dns"])
                    del data["kernel_options"]["dns"]
 
              if dist.breed == "suse":
                 if data["kernel_options"].has_key("netdevice") and data["kernel_options"]["netdevice"] != "":
-                   my_int = data["kernel_options"]["netdevice"]
+                   my_int = self.get_first_value(data["kernel_options"]["netdevice"])
                    del data["kernel_options"]["netdevice"]
                 if data["kernel_options"].has_key("hostip") and data["kernel_options"]["hostip"] != "":
-                   my_ip = data["kernel_options"]["hostip"]
+                   my_ip = self.get_first_value(data["kernel_options"]["hostip"])
                    del data["kernel_options"]["hostip"]
                 if data["kernel_options"].has_key("nameserver") and data["kernel_options"]["nameserver"] != "":
-                   my_dns = data["kernel_options"]["nameserver"]
+                   my_dns = self.get_first_value(data["kernel_options"]["nameserver"])
                    del data["kernel_options"]["nameserver"]
 
              if dist.breed in ["ubuntu","debian"]:
                 if data["kernel_options"].has_key("netcfg/choose_interface") and data["kernel_options"]["netcfg/choose_interface"] != "":
-                   my_int = data["kernel_options"]["netcfg/choose_interface"]
+                   my_int = self.get_first_value(data["kernel_options"]["netcfg/choose_interface"])
                    del data["kernel_options"]["netcfg/choose_interface"]
                 if data["kernel_options"].has_key("netcfg/get_ipaddress") and data["kernel_options"]["netcfg/get_ipaddress"] != "":
-                   my_ip = data["kernel_options"]["netcfg/get_ipaddress"]
+                   my_ip = self.get_first_value(data["kernel_options"]["netcfg/get_ipaddress"])
                    del data["kernel_options"]["netcfg/get_ipaddress"]
                 if data["kernel_options"].has_key("netcfg/get_netmask") and data["kernel_options"]["netcfg/get_netmask"] != "":
-                   my_mask = data["kernel_options"]["netcfg/get_netmask"]
+                   my_mask = self.get_first_value(data["kernel_options"]["netcfg/get_netmask"])
                    del data["kernel_options"]["netcfg/get_netmask"]
                 if data["kernel_options"].has_key("netcfg/get_gateway") and data["kernel_options"]["netcfg/get_gateway"] != "":
-                   my_gw = data["kernel_options"]["netcfg/get_gateway"]
+                   my_gw = self.get_first_value(data["kernel_options"]["netcfg/get_gateway"])
                    del data["kernel_options"]["netcfg/get_gateway"]
                 if data["kernel_options"].has_key("netcfg/get_nameservers") and data["kernel_options"]["netcfg/get_nameservers"] != "":
-                   my_dns = data["kernel_options"]["netcfg/get_nameservers"]
+                   my_dns = self.get_first_value(data["kernel_options"]["netcfg/get_nameservers"])
                    del data["kernel_options"]["netcfg/get_nameservers"]
 
              # if no kernel_options overrides are present find the management interface