diff --git a/cobbler/action_buildiso.py b/cobbler/action_buildiso.py index 7b047cf..c5a1618 100644 --- a/cobbler/action_buildiso.py +++ b/cobbler/action_buildiso.py @@ -86,7 +86,7 @@ class BuildIso: return str(self.distctr) - def generate_netboot_iso(self,imagesdir,isolinuxdir,profiles=None,systems=None,exclude_dns=None): + def generate_netboot_iso(self,imagesdir,isolinuxdir,profiles=None,systems=None,exclude_dns=None, menutemplate=None): self.logger.info("copying kernels and initrds for profiles") # copy all images in included profiles to images dir for profile in self.api.profiles(): @@ -131,7 +131,19 @@ class BuildIso: self.logger.info("generating a isolinux.cfg") isolinuxcfg = os.path.join(isolinuxdir, "isolinux.cfg") cfg = open(isolinuxcfg, "w+") - cfg.write(HEADER) # fixme, use template + # amended to use a template file. + # I suggest /etc/cobbler/isolinux.cfg.template + if menutemplate is not None: + self.logger.info("using menu template %s") + try: + menuheader = open(menutemplate).read() + except: + self.logger.info("could not read template %s, using defaults" % menutemplate) + menuheader = HEADER + else: + menuheader = HEADER + + cfg.write(menuheader) # fixme, use template self.logger.info("generating profile list") #sort the profiles @@ -352,7 +364,7 @@ class BuildIso: return - def run(self,iso=None,tempdir=None,profiles=None,systems=None,distro=None,standalone=None,source=None,exclude_dns=None): + def run(self,iso=None,tempdir=None,profiles=None,systems=None,distro=None,standalone=None,source=None,exclude_dns=None, menutemplate=None): # the distro option is for stand-alone builds only if not standalone and distro is not None: @@ -424,7 +436,7 @@ class BuildIso: if standalone: self.generate_standalone_iso(imagesdir,isolinuxdir,distro,source) else: - self.generate_netboot_iso(imagesdir,isolinuxdir,profiles,systems,exclude_dns) + self.generate_netboot_iso(imagesdir,isolinuxdir,profiles,systems,exclude_dns,menutemplate) # removed --quiet cmd = "mkisofs -o %s -r -b isolinux/isolinux.bin -c isolinux/boot.cat" % iso diff --git a/cobbler/api.py b/cobbler/api.py index 214ddfc..f96c307 100644 --- a/cobbler/api.py +++ b/cobbler/api.py @@ -749,10 +749,10 @@ class BootAPI: # ========================================================================== - def build_iso(self,iso=None,profiles=None,systems=None,tempdir=None,distro=None,standalone=None,source=None, exclude_dns=None, logger=None): + def build_iso(self,iso=None,profiles=None,systems=None,tempdir=None,distro=None,standalone=None,source=None, exclude_dns=None, logger=None, menutemplate=None): builder = action_buildiso.BuildIso(self._config, logger=logger) return builder.run( - iso=iso, profiles=profiles, systems=systems, tempdir=tempdir, distro=distro, standalone=standalone, source=source, exclude_dns=exclude_dns + iso=iso, profiles=profiles, systems=systems, tempdir=tempdir, distro=distro, standalone=standalone, source=source, exclude_dns=exclude_dns, menutemplate=menutemplate ) # ========================================================================== diff --git a/cobbler/remote.py b/cobbler/remote.py index 3b17493..178161c 100644 --- a/cobbler/remote.py +++ b/cobbler/remote.py @@ -152,6 +152,7 @@ class CobblerXMLRPCInterface: self.options.get("standalone",False), self.options.get("source",None), self.options.get("exclude_dns",False), + self.options.get("menutemplate",None), self.logger ) def on_done(self):