[PATCH] cobbler buildiso add --systems option and fix --profiles selection.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The attached patch is for the "cobbler buildiso" command
1. It fixes the --profile option so that you can now *really* specify which profiles you wish to include in the kickstart.iso 2. It adds a --systems option to allow you add specific systems to the kickstart.iso

What is the process for having this reviewed and if suitable, merged into cobbler?

Regards

Daveh
diff -Naur cobbler/modules/cli_misc.py.orig cobbler/modules/cli_misc.py
--- cobbler/modules/cli_misc.py.orig	2008-05-29 13:55:38.000000000 +0100
+++ cobbler/modules/cli_misc.py	2008-06-17 21:14:59.000000000 +0100
@@ -246,6 +246,7 @@
     def add_options(self,p,args): 
         p.add_option("--iso",      dest="isoname",  help="(OPTIONAL) output ISO to this path")
         p.add_option("--profiles", dest="profiles", help="(OPTIONAL) use these profiles only")
+        p.add_option("--systems",  dest="systems",  help="(OPTIONAL) use these systems only")
         p.add_option("--tempdir",  dest="tempdir",  help="(OPTIONAL) working directory")
 
     def help_me(self):
@@ -258,6 +259,7 @@
        return self.api.build_iso(
            iso=self.options.isoname,
            profiles=self.options.profiles,
+           systems=self.options.systems,
            tempdir=self.options.tempdir
        )
 
diff -Naur cobbler/action_buildiso.py.orig cobbler/action_buildiso.py
--- cobbler/action_buildiso.py.orig	2008-05-29 10:56:25.000000000 +0100
+++ cobbler/action_buildiso.py	2008-06-18 14:08:51.000000000 +0100
@@ -58,6 +58,7 @@
         self.api         = config.api
         self.distros     = config.distros()
         self.profiles    = config.profiles()
+        self.systems     = config.systems()
         self.distmap     = {}
         self.distctr     = 0
 
@@ -69,7 +70,7 @@
             self.distmap[distname] = str(self.distctr)
             return str(self.distctr)
 
-    def run(self,iso=None,tempdir=None,profiles=None):
+    def run(self,iso=None,tempdir=None,profiles=None,systems=None):
 
         # verify we can find isolinux.bin
 
@@ -107,7 +108,7 @@
                 raise CX(_("Required file not found: %s") % f)
         utils.copyfile(f, os.path.join(isolinuxdir, os.path.basename(f)))
  
-        print _("- copying kernels and initrds")
+        print _("- copying kernels and initrds - for profiles")
         # copy all images in included profiles to images dir
         for x in self.api.profiles():
            use_this = True
@@ -124,18 +125,35 @@
            shutil.copyfile(dist.kernel, os.path.join(isolinuxdir, "%s.krn" % distname))
            shutil.copyfile(dist.initrd, os.path.join(isolinuxdir, "%s.img" % distname))
 
-        # generate isolinux.cfg
+        print _("- copying kernels and initrds - for systems")
+        # copy all images in included profiles to images dir
+        for x in self.api.systems():
+           use_this = False
+           if systems is not None:
+              which_systems = systems.split(",")
+              if use_this in which_systems:
+                 use_this = True
+           y = x.get_conceptual_parent()
+           dist = y.get_conceptual_parent()
+           if dist.name.find("-xen") != -1:
+               continue
+           distname = self.make_shorter(dist.name)
+           # tempdir/isolinux/$distro/vmlinuz, initrd.img
+           # FIXME: this will likely crash on non-Linux breeds
+           shutil.copyfile(dist.kernel, os.path.join(isolinuxdir, "%s.krn" % distname))
+           shutil.copyfile(dist.initrd, os.path.join(isolinuxdir, "%s.img" % distname))
+
         print _("- generating a isolinux.cfg")
         isolinuxcfg = os.path.join(isolinuxdir, "isolinux.cfg")
         cfg = open(isolinuxcfg, "w+")
         cfg.write(HEADER) # fixme, use template
         
+        print _("- generating profile list")
         for x in self.api.profiles():
-            # FIXME
             use_this = True
             if profiles is not None:
                 which_profiles = profiles.split(",")
-                if not use_this in which_profiles:
+                if not x.name in which_profiles:
                     use_this = False
             if use_this:
                 dist = x.get_conceptual_parent()
@@ -160,6 +178,37 @@
                 append_line = append_line + " %s\n" % data["kernel_options"]
                 cfg.write(append_line)
 
+        print _("- generating system list")
+        for x in self.api.systems():
+            use_this = False
+            if systems is not None:
+                which_systems = systems.split(",")
+                if x.name in which_systems:
+                    use_this = True
+            if use_this:
+                y = x.get_conceptual_parent()
+                dist = y.get_conceptual_parent()
+                if dist.name.find("-xen") != -1:
+                    continue
+                data = utils.blender(self.api, True, x)
+                distname = self.make_shorter(dist.name)
+
+                cfg.write("\n")
+                cfg.write("LABEL %s\n" % x.name)
+                cfg.write("  MENU LABEL %s\n" % x.name)
+                cfg.write("  kernel %s.krn\n" % distname)
+
+                if data["kickstart"].startswith("/"):
+                    data["kickstart"] = "http://%s/cblr/svc/op/ks/system/%s"; % (
+                        data["server"],
+                        x.name
+                    )
+
+                append_line = "  append initrd=%s.img" % distname
+                append_line = append_line + " ks=%s " % data["kickstart"]
+                append_line = append_line + " %s\n" % data["kernel_options"]
+                cfg.write(append_line)
+
         print _("- done writing config")        
         cfg.write("\n")
         cfg.write("MENU END\n")
diff -Naur cobbler/api.py.orig cobbler/api.py
--- cobbler/api.py.orig	2008-05-29 15:13:28.000000000 +0100
+++ cobbler/api.py	2008-06-16 16:39:19.000000000 +0100
@@ -422,10 +422,10 @@
         self.log("authorize",[user,resource,arg1,arg2,rc],debug=True)
         return rc
 
-    def build_iso(self,iso=None,profiles=None,tempdir=None):
+    def build_iso(self,iso=None,profiles=None,systems=None,tempdir=None):
         builder = action_buildiso.BuildIso(self._config)
         return builder.run(
-           iso=iso, profiles=profiles, tempdir=tempdir
+           iso=iso, profiles=profiles, systems=systems, tempdir=tempdir
         )
 
     def replicate(self, cobbler_master = None):
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux