Re: Idea for Cobbler pxe rescue mode? (MEMTEST)

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

 



	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

[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