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