commit of tools I use, but are not documented or guaranteed to work for anyone
[monitor.git] / getconf.py
diff --git a/getconf.py b/getconf.py
new file mode 100755 (executable)
index 0000000..802eced
--- /dev/null
@@ -0,0 +1,114 @@
+#!/usr/bin/python
+
+import auth
+import plc
+import sys
+import os
+
+def getconf(hostname):
+       api = plc.PLC(auth.auth, auth.plc)
+       n = api.GetNodes(hostname)
+       filename = "bootcd-alpha/" + hostname + ".txt"
+       if not os.path.exists(filename):
+               f = open("bootcd-alpha/" + hostname + ".txt", 'w')
+               f.write( api.AdmGenerateNodeConfFile(n[0]['node_id']) )
+               f.close()
+               print os.system("cd bootcd-alpha; ./build.sh -f %s.txt -t iso -o /plc/data/var/www/html/bootcds/%s.iso &> /dev/null" % ( hostname, hostname))
+               print os.system("cd bootcd-alpha; ./build.sh -f %s.txt -t usb_partition -o /plc/data/var/www/html/bootcds/%s-partition.usb &> /dev/null" % ( hostname, hostname))
+       else:
+               # assume that the images have already been generated..
+               pass
+
+       args = {}
+       args['url_list']  = "   http://pl-virtual-03.cs.princeton.edu/bootcds/%s-partition.usb\n" % hostname
+       args['url_list'] += "   http://pl-virtual-03.cs.princeton.edu/bootcds/%s.iso" % hostname
+       #print "http://pl-virtual-03.cs.princeton.edu/bootcds/%s.usb\n" % hostname
+
+       return args
+
+if __name__ == '__main__':
+       from config import config as cfg
+       from optparse import OptionParser
+       parser = OptionParser()
+       parser.set_defaults(media='both')
+       parser.add_option("", "--media", dest="media", metavar="usb, iso, both", 
+                                               help="""Which media to generate the message for.""")
+
+       config = cfg(parser)
+       config.parse_args()
+
+       ret = {'url_list' : ''} 
+       for i in config.args:
+               conf = getconf(i)
+               ret['url_list'] += conf['url_list']
+               ret['hostname'] = i
+
+       if config.media == "both":
+               print """
+Hello,
+
+Here are links to both the ISO CD image, and partitioned, USB image for the
+DC7800 and others.  These are based on the new 4.2 BootImage, and are the most
+up-to-date software for PlanetLab nodes.
+
+%(url_list)s
+
+All that is necessary is to raw-write these images to a usb stick or CD-ROM, and
+then boot from them.  If using USB, please use a command like:
+
+   dd if=%(hostname)s.usb of=/dev/sdX
+
+Where sdX is your USB device.  It is not necessary to run any other formatting
+commands for these images, because they already include a MBR, partition
+table, and fs.
+
+Please let me know if you have any trouble.
+
+Thank you,
+
+""" % ret
+
+       elif config.media == "cd":
+               print """
+Hello,
+
+Here are links to the ISO CD image(s) for your machines.  These are based on
+the new 4.2 BootImage, and are the most up-to-date software for PlanetLab
+nodes.
+
+%(url_list)s
+
+All that is necessary is to burn these images to a CD-ROM, and
+then boot from them.  
+
+Please let me know if you have any trouble.
+
+Thank you,
+
+""" % ret
+
+       elif config.media == "usb":
+               print """
+Hello,
+
+Here are links to the partitioned, USB images for the DC7800 and others.  
+These are based on the new 4.2 BootImage, and are the most
+up-to-date software for PlanetLab nodes.
+
+%(url_list)s
+
+All that is necessary is to raw-write these images to a usb stick, and
+then boot from them.  Please use a command like:
+
+   dd if=%(hostname)s.usb of=/dev/sdX
+
+Where sdX is your direct, USB device.  Do not use a partition on the usb
+image, or the boot will fail.  It is not necessary to run any other formatting
+commands for these images, because they already include a MBR, partition
+table, and fs.
+
+Please let me know if you have any trouble.
+
+Thank you,
+
+""" % ret