rename to default value.
[monitor.git] / nodeinfo.py
index 9458cf2..84d8ae0 100755 (executable)
@@ -1,22 +1,20 @@
 #!/usr/bin/python
 
 import plc
-import auth
-api = plc.PLC(auth.auth, auth.plc)
+api = plc.getAuthAPI()
 
-import soltesz
+import database
 import reboot
 
 import time
 from model import *
 from nodecommon import *
 
-import config as configmodule
+import util.file
 
-from config import config as cfg
-from optparse import OptionParser
+import parser as parsermodule
 
-parser = OptionParser()
+parser = parsermodule.getParser()
 parser.set_defaults(node=None, 
                                        findbad=False,
                                        endrecord=False)
@@ -28,35 +26,8 @@ parser.add_option("", "--findbad", dest="findbad", action="store_true",
                                        help="Re-run findbad on the nodes we're going to check before acting.")
 parser.add_option("", "--bootcd", dest="bootcd", action="store_true",
                                        help="A stock help message for fetching a new BootCD from the PLC GUI.")
-config = cfg(parser)
-config.parse_args()
-
-def diff_time(timestamp):
-       now = time.time()
-       if timestamp == None:
-               return "unknown"
-       diff = now - timestamp
-       # return the number of seconds as a difference from current time.
-       t_str = ""
-       if diff < 60: # sec in min.
-               t = diff
-               t_str = "%s sec ago" % t
-       elif diff < 60*60: # sec in hour
-               t = diff // (60)
-               t_str = "%s min ago" % int(t)
-       elif diff < 60*60*24: # sec in day
-               t = diff // (60*60)
-               t_str = "%s hours ago" % int(t)
-       elif diff < 60*60*24*7: # sec in week
-               t = diff // (60*60*24)
-               t_str = "%s days ago" % int(t)
-       elif diff < 60*60*24*30: # approx sec in month
-               t = diff // (60*60*24*7)
-               t_str = "%s weeks ago" % int(t)
-       elif diff > 60*60*24*30: # approx sec in month
-               t = diff // (60*60*24*7*30)
-               t_str = "%s months ago" % int(t)
-       return t_str
+config = parsermodule.parse_args(parser)
+
 
 def plc_print_nodeinfo(plcnode):
        url = "https://www.planet-lab.org/db/nodes/index.php?nodepattern="
@@ -142,11 +113,15 @@ def pcu_print_info(pcuinfo, hostname):
                        print "\t telnet %s" % (reboot.pcu_name(pcuinfo))
                if pcuinfo['portstatus']['80'] == "open" or \
                        pcuinfo['portstatus']['443'] == "open":
-                       print "\t http://%s" % (reboot.pcu_name(pcuinfo))
+                       print "\t https://%s" % (reboot.pcu_name(pcuinfo))
+                       print "\t import %s.png" % (reboot.pcu_name(pcuinfo))
+                       print """\t mutt -s "crash for %s" -a %s.png sapanb@cs.princeton.edu < /dev/null""" % (hostname, reboot.pcu_name(pcuinfo))
                if pcuinfo['portstatus']['443'] == "open":
                        print "\t racadm.py -r %s -u %s -p '%s'" % (pcuinfo['ip'], pcuinfo['username'], pcuinfo['password'])
                        print "\t cmdhttps/locfg.pl -s %s -f iloxml/Reset_Server.xml -u %s -p '%s' | grep MESSAGE" % \
                                (reboot.pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password'])
+                       print "\t cmdhttps/locfg.pl -s %s -f iloxml/License.xml -u %s -p '%s' | grep MESSAGE" % \
+                               (reboot.pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password'])
                if pcuinfo['portstatus']['16992'] == "open":
                        print "\t ./cmdamt/remoteControl -A -verbose 'http://%s:16992/RemoteControlService' -user admin -pass '%s'" % (reboot.pcu_name(pcuinfo), pcuinfo['password'])
 
@@ -154,11 +129,14 @@ if config.findbad:
        # rerun findbad with the nodes in the given nodes.
        import os
        file = "findbad.txt"
-       configmodule.setFileFromList(file, config.args)
+       util.file.setFileFromList(file, config.args)
        os.system("./findbad.py --cachenodes --debug=0 --dbname=findbad --increment --nodelist %s" % file)
 
-fb = soltesz.dbLoad("findbad")
-act_all = soltesz.dbLoad("act_all")
+fb = database.dbLoad("findbad")
+try:
+       act_all = database.dbLoad("act_all")
+except:
+       act_all = {}
 
 for node in config.args:
        config.node = node
@@ -171,7 +149,7 @@ for node in config.args:
 
        if fb_nodeinfo['pcu'] == "PCU":
                pcu = reboot.get_pcu_values(fb_nodeinfo['plcnode']['pcu_ids'][0])
-               pcu_print_info(pcu, config.node)
+               if pcu: pcu_print_info(pcu, config.node)
 
        if config.node in act_all and len(act_all[config.node]) > 0:
                header = [True]
@@ -190,7 +168,7 @@ for node in config.args:
                        #rec['stage'] = "monitor-end-record"
                        #rec['time'] = time.time() - 7*60*60*24
                        #act_all[config.node].insert(0,rec)
-                       #soltesz.dbDump("act_all", act_all)
+                       #database.dbDump("act_all", act_all)
 
                for act_nodeinfo in act_all[config.node]:
                        act_print_nodeinfo(act_nodeinfo, header)