[et-mgmt-tools] Cobbler netboot_enable utility
Matt Hyclak
hyclak at math.ohiou.edu
Wed May 23 14:51:29 UTC 2007
On Wed, May 23, 2007 at 10:42:49AM -0400, Matt Hyclak enlightened us:
> I just shared this with Michael on IRC and he suggested I posted it to the
> list, so here it is.
>
> Running koan on a target machine seemed too cumbersome sometimes, so I wrote
> this little app to more or less flip the netboot_enabled bit on a system, so
> that you could run this utility:
>
> cobbler_change_netboot.py enable mysystem
>
> and simply reboot the target machine.
>
> The next logical step, then, is to have the system phone home when it is
> finished reinstalling to flip the bit back to 0. I've done this in the past
> (on a homegrown system) by having the target wget a webpage which was a
> script that changed the status from 'reinstall' to 'installed'. This could
> also be done via some ssh magic.
>
> I would also like to add in some sort of trigger ability much like cobbler
> has to do things like 'puppetca --clean hostname' when preparing for a
> reinstall.
>
> This is a very basic proof of concept of the idea, but to be a good "release
> early, release often" type guy, here it is.
>
This time with an attachment...
Matt
--
Matt Hyclak
Department of Mathematics
Department of Social Work
Ohio University
(740) 593-1263
-------------- next part --------------
#!/usr/bin/env python
from cobbler import api
import getopt, sys
def usage():
print """
Usage: cobbler_change_netboot.py [-hv] COMMAND SYSTEMNAME
"""
def extended_usage():
print """
Usage: cobbler_change_netboot.py [-hv] COMMAND SYSTEMNAME
Options:
-h|--help Print help
-v|--verbose Turns on more verbose messages
Commands:
enable Enables netboot for this system (causes reinstall)
disable Disables netboot for this system (causes default boot)
"""
def vprint(msg):
try:
if verbose:
print msg
except NameError:
pass
try:
opts, args = getopt.getopt(sys.argv[1:], "hv", ["help", "verbose"])
except getopt.GetoptError:
usage()
sys.exit(1)
verbose = 0
for o, a in opts:
if o in ("-h", "--help"):
extended_usage()
sys.exit(0)
if o in ("-v", "--verbose"):
verbose = 1
if len(args) != 2:
usage()
sys.exit(1)
else:
command = args[0]
systemname = args[1]
if command not in ["enable", "disable"]:
extended_usage()
sys.exit(1)
elif (command == "enable"):
netboot = 1
else:
netboot = 0
shoehorn = api.BootAPI()
systems = shoehorn.systems()
found = systems.find(systemname)
if (found):
found.netboot_enabled = netboot
retval = shoehorn.serialize()
syncval = shoehorn.sync()
# vim:tabstop=4
More information about the et-mgmt-tools
mailing list