Hi, for your review:
Based on talk with Michael on irc, the ability to create menus
for memtest if installed arised, so here is the patch attached for cobbler
0.9x. This is for ticket #94 @ trac
If there is any /boot/memtest* file, it will copy to /tftpboot/
(or whatever the location based on cobbler variables) and then create menu
entries named as "memtest*" filename with kernel "filename".
I didn't wrote a "delete" for copied memtest's for this patch as
even, an old copy of memtest could be useful, if you think that deletion
should be included, please, start blaming :)
Regards
Pablo
--
Pablo Iranzo Gómez
(http://Alufis35.uv.es/~iranzo/)
(PGPKey Available on http://www.uv.es/~iranzop/PGPKey.pgp)
--
Postulado de Boling sobre la Ley de Murphy:
Si se encuentra bien, no se preocupe. Se le pasará
On Tue, 8 Apr 2008, Jennifer Cranfill wrote:
> Michael DeHaan wrote:
> > Michael DeHaan wrote:
> > >
> > > Could we create "rescue" profiles automatically when we do imports?
> > > It would just be a different profile ending in "-rescue" that would
> > > just have "--kopts=rescue" added. Example "DistroName-i386-rescue".
> > > The other thing we /might/ want to do is set up a kickstart template
> > > for that profile (and assign it) that can be used to feed the rescue
> > > image the media information, so you don't have to enter that in
> > > manually.
> > > Presumably that could all be done with modifications to action_import.py
> > >
> > >
> > > If we do something like having a rescue profile, it's just:
> > >
> > > cobbler system edit --name=server1 --profile=F-9-i386-rescue
> > > --netboot-enabled=1
> > > # fix system
> > > cobbler system edit --name=server1 --profile=originalname
> > > --netboot-enabled=0
> > >
> > > The one thing that requires is knowing the proper rescue profile for
> > > server1, so it's possible we could add a --rescueprofile= to the
> > > system and also have a --rescuemode=1/0 like --netboot-enabled if you
> > > think that's useful. That could be interesting.
> > >
> > > That workflow might be like:
> > >
> > > cobbler system edit --name=server1 --rescuemode (rescuemode could
> > > actually set netboot-enabled to 1 for simplicity)
> > > cobbler system edit --name =server1 --workingmode (this could set
> > > netboot enabled back)
> >
> > To clarify syntax a bit more and see if we're on the same page, how
> > about the following?
> >
> > cobbler import --name=F9A --mirror=path
> > # automatically creates F9A-i386, F9A-i386-xen, F9A-i386-rescue as both
> > distros and profiles (action_import.py)
> > # automatically does the equivalent of "cobbler profile edit
> > --name=F9A-i386 --rescueprofile=F9A-i386-rescue"
> >
> > Basically the above would allow any given profile to store the name of
> > /another/ profile that is used for rescue mode.
> > You may ask "why isn't rescue mode part of the distro", and the answer
> > here is that if it's a profile we can take advantage
> > of it also showing up in PXE menus automatically.
> >
> > System syntax could also look like this:
> >
> > cobbler system edit --name=F9A --rescuemode [implies --netboot-enabled=1]
> > cobbler system edit --name=F9A --workingmode [--netboot-enabled=1/0]
> >
> > The commands --rescuemode would toggle netboot-enabled and temporarily
> > set up PXE to point to the rescue profile.
> > The command --workingmode would set it back, but at no time do you have
> > to remember what the proper rescue distro
> > is for a given system -- because it asks the profile for that info.
> >
> > This would be something that would be really easy to incorporate into
> > the web interface as well -- as it would just be a couple of checkboxes.
> >
> > That eventually involves also modifying files like action_sync.py and
> > modules/cli_system.py and item_system.py/item_profile.py -- though
> > nothing too invasive. (And I can help on this...)
>
> That sounds great to me! I like the idea of putting it in the profile.
> I'll start taking a look at the code. Thanks Michael!
>
> --Jennifer
>
> _______________________________________________
> et-mgmt-tools mailing list
> et-mgmt-tools@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/et-mgmt-tools
>
diff --git a/cobbler/action_sync.py b/cobbler/action_sync.py
index 8a0eadf..db78870 100644
--- a/cobbler/action_sync.py
+++ b/cobbler/action_sync.py
@@ -108,6 +108,9 @@ class BootSync:
destpath = os.path.join(self.bootloc, newname)
self.copyfile(path, destpath)
self.copyfile("/var/lib/cobbler/menu.c32", os.path.join(self.bootloc, "menu.c32"))
+ # Copy memtest86 if package is installed on system
+ for memtest in glob.glob('/boot/memtest*'):
+ self.copyfile(memtest,os.path.join(self.bootloc + "/" + os.path.basename(memtest)))
def write_dhcp_file(self):
"""
@@ -818,13 +821,50 @@ class BootSync:
contents = self.write_pxe_file(None,None,profile,distro,False,include_header=False)
if contents is not None:
pxe_menu_items = pxe_menu_items + contents + "\n"
-
- # save the template.
+ for memtestentry in glob.glob(self.bootloc + '/memtest*'):
+ contents = self.write_memtest_pxe(os.path.join("/" + os.path.basename(memtestentry)))
+ pxe_menu_items = pxe_menu_items + contents + "\n"
+
+ # save the template.
metadata = { "pxe_menu_items" : pxe_menu_items }
outfile = os.path.join(self.bootloc, "pxelinux.cfg", "default")
self.apply_template(template_data, metadata, outfile)
template_src.close()
+ def write_memtest_pxe(self,filename):
+ """
+ Write a configuration file for memtest
+ """
+
+ # ---
+ # just some random variables
+ template = None
+ metadata = {}
+ buffer = ""
+
+ # ---
+ template = "/etc/cobbler/pxeprofile.template"
+
+ # ---
+ # store variables for templating
+ metadata["menu_label"] = "MENU LABEL %s" % os.path.basename(filename)
+ metadata["profile_name"] = os.path.basename(filename)
+ metadata["kernel_path"] = os.path.join("/" + os.path.basename(filename))
+ metadata["initrd_path"] = ""
+ metadata["append_line"] = ""
+
+ # ---
+ # get the template
+ template_fh = open(template)
+ template_data = template_fh.read()
+ template_fh.close()
+
+ # ---
+ # return results
+ buffer = self.apply_template(template_data, metadata, None)
+ return buffer
+
+
def write_pxe_file(self,filename,system,profile,distro,is_ia64, include_header=True):
"""
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools