--- /dev/null
+#!/usr/bin/env python
+
+# WARNING - you might need to set your locale before you can run this script
+# e.g.
+# export LANG=en_US.UTF-8
+# nagios.py ...
+
+import sys
+import getopt
+
+from NagiosConfig import NagiosConfig
+
+SERVER="www.planet-lab.org"
+DIRNAME="/etc/nagios"
+
+options='h:o:Os:d:nNv'
+
+usage_string="""Usage : %s [options] plc-id plc-passwd role
+Outputs a nagios config for watching a given set of sites
+Also writes a static HTML page for bookmarking site-centric queries to comon
+Options:
+ -h plc-hostname To provide an alternate plc hostname
+ (defaults to %s)
+ -o e-mail If you provide an e-mail address, all notifications
+ will be sent there. Otherwise, you'll need admin role
+ so that we can determine the respective PI's e-mails
+ -O same as -e with the plc-id as dest. e-mail
+ -s site-file You can provide a list of sites in a separate file
+ expected format is one line per site, site_id first
+ the default is to list all sites
+ -d dirname To specify an alternate output dir
+ (defaults to %s)
+ -n Does not generate the nagios config
+ -N Does not generate the HTML page
+ -v Runs in verbose mode
+"""%(sys.argv[0],SERVER,DIRNAME)
+
+def usage ():
+ print usage_string
+ sys.exit(1)
+
+
+def main ():
+ command = sys.argv[0]
+ argv = sys.argv[1:]
+
+ try:
+ opts,args = getopt.getopt(argv, options)
+ except getopt.GetoptError:
+ print "Unknown option"
+ usage()
+
+ plc_server=SERVER
+ output_mail=None
+ opt_same_email=False
+ site_file=None
+ dirname=DIRNAME
+ opt_nagios = True
+ opt_html = True
+ opt_verbose = False
+
+ for o,a in opts:
+ if o in ['-h']:
+ plc_server = a
+ elif o in ['-o']:
+ output_mail = a
+ elif o in ['-O']:
+ opt_same_email = True
+ elif o in ['-s']:
+ site_file = a
+ elif o in ['-d']:
+ dirname = a
+ elif o in ['-n']:
+ opt_nagios = False
+ elif o in ['-N']:
+ opt_html = False
+ elif o in ['-v']:
+ opt_verbose = True
+ else:
+ print "Unknown option",o
+ usage()
+
+ if not len(args) == 3:
+ usage()
+
+ (plc_id,passwd,role) = args
+ if opt_same_email:
+ output_mail=plc_id
+
+# print plc_server,output_mail,dirname,opt_nagios,opt_html
+# print plc_id,passwd,role,site_file
+
+ print "Connecting to %s and gathering data"%plc_server
+ config = NagiosConfig (plc_server,plc_id,passwd,role)
+ if opt_verbose:
+ config.set_verbose()
+ config.GatherData (output_mail,site_file)
+
+ if opt_nagios:
+ print "Creating nagios config in %s"%dirname
+ config.WriteNagiosConfig (dirname)
+
+ if opt_html:
+ html_page = "%s/comon.html"%dirname
+ config.WriteComonLinks (html_page)
+
+
+####################
+if __name__ == "__main__":
+ main ()
+