Hi
If anyone interested in previous memtest removals for patch is
attached (instead of the preceding patch)
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 Wed, 9 Apr 2008, Pablo Iranzo Gómez wrote:
>
> 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..eafb2e9 100644
--- a/cobbler/action_sync.py
+++ b/cobbler/action_sync.py
@@ -109,6 +109,14 @@ class BootSync:
self.copyfile(path, destpath)
self.copyfile("/var/lib/cobbler/menu.c32", os.path.join(self.bootloc, "menu.c32"))
+ #Remove previously copied memtest to keep system installed version (¿current?)
+ for oldmemtest in glob.glob(os.path.join(self.bootloc + "/memtest*")):
+ os.remove(oldmemtest)
+
+ # 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):
"""
DHCP files are written when manage_dhcp is set in
@@ -818,13 +826,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