#!/usr/bin/python
-import soltesz
-from config import config
-from optparse import OptionParser
+from monitor import database
+from monitor import config
import string
-#from HyperText.HTML import A, BR, IMG, TABLE, TR, TH, TD, EM, quote_body
-#from HyperText.Documents import Document
-
import sys
categories = {}
return cmpMap(l1,l2,'state', map)
def cmpCategoryVal(v1, v2):
- map = array_to_priority_map([ None, 'ALPHA', 'PROD', 'OLDBOOTCD', 'UNKNOWN', 'FORCED', 'ERROR', ])
+ map = array_to_priority_map([ None, 'ALPHA', 'PROD', 'OLDPROD', 'OLDBOOTCD', 'UNKNOWN', 'FORCED', 'ERROR', ])
return cmpValMap(v1,v2,map)
def cmpCategory(l1, l2):
- map = array_to_priority_map([ 'ALPHA', 'PROD', 'OLDBOOTCD', 'UNKNOWN', 'ERROR', ])
+ map = array_to_priority_map([ 'ALPHA', 'PROD', 'OLDPROD', 'OLDBOOTCD', 'UNKNOWN', 'ERROR', ])
return cmpMap(l1,l2,'category', map)
def cmpPCU(l1, l2):
#print "state: %s<br>" % pcu_state(vals['plcnode']['pcu_ids'][0])
#print "color: %s<br>" % pcu_colorMap[pcu_state(vals['plcnode']['pcu_ids'][0])]
bgcolor = "bgcolor='%s'" % pcu_colorMap[pcu_state(vals['plcnode']['pcu_ids'][0])]
- url = "<a href='/cgi-bin/printbadpcus.php#id%s'>PCU</a>" % vals['plcnode']['pcu_ids'][0]
+ url = "<a href='/cgi-bin/monitor/printbadpcus.php?id=%s'>PCU</a>" % vals['plcnode']['pcu_ids'][0]
r_str += "<td nowrap %s>%s</td>" % (bgcolor, url)
else:
r_str += "<td nowrap %s>%s</td>" % (bgcolor, f)
def main(sitefilter, catfilter, statefilter, comonfilter, nodeonlyfilter):
global fb
+ import os
+ import datetime
+ if nodeonlyfilter == None:
+ print "<html><body>\n"
+
+ try:
+ mtime = os.stat("/var/lib/monitor-server/production.findbad.pkl")[-2]
+ print "Last Updated: %s GMT" % datetime.datetime.fromtimestamp(mtime)
+ except:
+ pass
- db = soltesz.dbLoad(config.dbname)
- fb = soltesz.dbLoad("findbadpcus")
+
+ db = database.dbLoad(config.dbname)
+ fb = database.dbLoad("findbadpcus")
## Field widths used for printing
maxFieldLengths = { 'nodename' : -45,
if comonfilter != None: cmf = re.compile(comonfilter)
else: cmf = None
+
+ output_str = ""
#l_loginbase = bysite.keys()
#l_loginbase.sort()
if nodeonlyfilter == None:
- print "<table width=80% border=1>"
+ output_str += "<table width=80% border=1>"
prev_sitestring = ""
for row in d2:
continue
if nodeonlyfilter != None:
- print vals['nodename']
+ output_str += vals['nodename']
continue
site_string = row['site_string']
if site_string != prev_sitestring:
- print "<tr><td bgcolor=lightblue nowrap>"
- print site_string
- print "</td>"
+ output_str += "<tr><td bgcolor=lightblue nowrap>"
+ output_str += site_string
+ output_str += "</td>"
else:
- print "<tr><td> </td>"
+ output_str += "<tr><td> </td>"
prev_sitestring = site_string
vals['reboot'] = vals['reboot'].replace(" ", "_")
if 'nodename' in vals:
- url = "<a href='https://www.planet-lab.org/db/nodes/index.php?nodepattern=%s'>%s</a>" % (vals['nodename'], vals['nodename'])
+ url = "<a href='https://%s/db/nodes/index.php?nodepattern=%s'>%s</a>" % (config.MONITOR_HOSTNAME, vals['nodename'], vals['nodename'])
vals['nodename'] = url
try:
print >>sys.stderr, vals
s = fields_to_html(str_fields, vals)
- print s
+ output_str += s
- print "\n</tr>"
+ output_str += "\n</tr>"
if nodeonlyfilter == None:
- print "</table>"
- print "<table>"
+ output_str += "</table>"
keys = categories.keys()
keys.sort()
+ print "<table>"
for cat in keys:
print "<tr>"
print "<th nowrap align=left>Total %s</th>" % cat
if nodeonlyfilter == None:
print "</table>"
+ print output_str
+ if nodeonlyfilter == None:
+ print "</body></html>\n"
+
if __name__ == '__main__':
else:
mynodeonly = None
- parser = OptionParser()
- parser.set_defaults(cmpdays=False,
- comon="sshstatus",
- fields="nodename,ping,ssh,pcu,category,state,comonstats,kernel,bootcd",
- dbname="findbad", # -070724-1",
- cmpping=False,
- cmpdns=False,
- cmploginbase=False,
- cmpssh=False,
- cmpcategory=False,
- cmpstate=False)
- parser.add_option("", "--fields", dest="fields", help="")
- parser.add_option("", "--dbname", dest="dbname", help="")
- parser.add_option("", "--days", dest="cmpdays", action="store_true", help="")
- parser.add_option("", "--ping", dest="cmpping", action="store_true", help="")
- parser.add_option("", "--dns", dest="cmpdns", action="store_true", help="")
- parser.add_option("", "--ssh", dest="cmpssh", action="store_true", help="")
- parser.add_option("", "--loginbase",dest="cmploginbase",action="store_true", help="")
- parser.add_option("", "--category", dest="cmpcategory", action="store_true", help="")
- parser.add_option("", "--kernel", dest="cmpkernel", action="store_true", help="")
- parser.add_option("", "--state", dest="cmpstate", action="store_true", help="")
- parser.add_option("", "--comon", dest="comon", help="")
- config = config(parser)
- config.parse_args()
+ config.cmpdays=False
+ config.comon="sshstatus"
+ config.fields="nodename,ping,ssh,pcu,category,state,kernel,bootcd"
+ config.dbname="findbad"
+ config.cmpping=False
+ config.cmpdns=False
+ config.cmploginbase=False
+ config.cmpssh=False
+ config.cmpcategory=False
+
print "Content-Type: text/html\r\n"
- if mynodeonly == None:
- print "<html><body>\n"
if len(sys.argv) > 1:
if sys.argv[1] == "ssherror":
ssherror = True
main(myfilter, mycategory, mystate, mycomon,mynodeonly)
- if mynodeonly == None:
- print "</body></html>\n"