X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodeinfo.py;h=ac0b762f8b4955e90a92544cb678d126863cf02c;hb=4a073a361fbf578a505a4439b33685cfab7ca37f;hp=30838f1a494eef81643da8fcaae307ad49fdcc2f;hpb=944d143a6528c4157b71f51ed480aec806cbaa06;p=monitor.git diff --git a/nodeinfo.py b/nodeinfo.py index 30838f1..ac0b762 100755 --- a/nodeinfo.py +++ b/nodeinfo.py @@ -1,20 +1,19 @@ #!/usr/bin/python -import plc +from monitor.wrapper import plc, plccache api = plc.getAuthAPI() from monitor import * -#import database -import reboot +from monitor import util +from monitor import parser as parsermodule -import time -from model import * -from nodecommon import * -from unified_model import node_end_record, PersistFlags - -import util.file +from monitor.database.info.model import * +from monitor import reboot -import parser as parsermodule +import time +from monitor.model import * +from monitor.common import * +#from monitor.model import node_end_record, PersistFlags parser = parsermodule.getParser() parser.set_defaults(node=None, @@ -45,15 +44,18 @@ def plc_print_nodeinfo(plcnode): diff_time(plcnode['last_contact']), plcnode['key']) def fb_print_nodeinfo(fbnode): - pf = PersistFlags(fbnode['hostname'], 1, db='node_persistflags') - fbnode['last_change'] = diff_time(pf.last_changed) + pf = HistoryNodeRecord.get_by(hostname= fbnode['hostname']) + try: + fbnode['last_change'] = diff_time(pf.last_changed) + except: + fbnode['last_change'] = diff_time(time.time()) print " Checked: ", if 'checked' in fbnode: print "%11.11s " % diff_time(fbnode['checked']) else: print "Unknown" print "\t state | ssh | pcu | bootcd | category | last change | kernel" - if fbnode['bootcd']: + if 'bootcd' in fbnode and fbnode['bootcd']: fbnode['bootcd'] = fbnode['bootcd'].split()[-1] else: fbnode['bootcd'] = "unknown" @@ -61,9 +63,11 @@ def fb_print_nodeinfo(fbnode): fbnode['state'] = color_boot_state(get_current_state(fbnode)) else: fbnode['state'] = "none" - if len(fbnode['kernel'].split()) > 2: + if 'kernel' in fbnode and len(fbnode['kernel'].split()) > 2: fbnode['kernel'] = fbnode['kernel'].split()[2] - print "\t %(state)5s | %(ssh)5.5s | %(pcu)5.5s | %(bootcd)6.6s | %(category)8.8s | %(last_change)11s | %(kernel)s" % fbnode + else: + fbnode['kernel'] = "" + print "\t %(state)5s | %(ssh_status)5.5s | %(bootcd)6.6s | %(observed_category)8.8s | %(last_change)11s | %(kernel)s" % fbnode def act_print_nodeinfo(actnode, header): if header[0]: @@ -76,8 +80,7 @@ def act_print_nodeinfo(actnode, header): if 'rt' in actnode and 'Status' in actnode['rt']: print "\t %5.5s %5.5s | %8.8s | %15.15s | %s" % \ (actnode['rt']['Status'], actnode['rt']['id'][7:], - actnode['category'], actnode['action'][0], - actnode['msg_format'][:-1]) + actnode['category'], actnode['action'][0], actnode['info'][1:]) else: if type(actnode['action']) == type([]): action = actnode['action'][0] @@ -100,6 +103,7 @@ def act_print_nodeinfo(actnode, header): def pcu_print_info(pcuinfo, hostname): print " Checked: ", + pcuinfo.update(pcuinfo['plc_pcu_stats']) if 'checked' in pcuinfo: print "%11.11s " % diff_time(pcuinfo['checked']) else: @@ -110,23 +114,23 @@ def pcu_print_info(pcuinfo, hostname): (pcuinfo['username'], pcuinfo['password'], pcuinfo[hostname], pcuinfo['pcu_id'], reboot.pcu_name(pcuinfo), pcuinfo['model']) - if 'portstatus' in pcuinfo and pcuinfo['portstatus'] != {} and pcuinfo['portstatus'] != None: - if pcuinfo['portstatus']['22'] == "open": + if 'port_status' in pcuinfo and pcuinfo['port_status'] != {} and pcuinfo['port_status'] != None: + if pcuinfo['port_status']['22'] == "open": print "\t ssh -o PasswordAuthentication=yes -o PubkeyAuthentication=no %s@%s" % (pcuinfo['username'], reboot.pcu_name(pcuinfo)) - if pcuinfo['portstatus']['23'] == "open": + if pcuinfo['port_status']['23'] == "open": print "\t telnet %s" % (reboot.pcu_name(pcuinfo)) - if pcuinfo['portstatus']['80'] == "open" or \ - pcuinfo['portstatus']['443'] == "open": + if pcuinfo['port_status']['80'] == "open" or \ + pcuinfo['port_status']['443'] == "open": 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": + if pcuinfo['port_status']['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": + if pcuinfo['port_status']['16992'] == "open": print "\t ./cmdamt/remoteControl -A -verbose 'http://%s:16992/RemoteControlService' -user admin -pass '%s'" % (reboot.pcu_name(pcuinfo), pcuinfo['password']) if config.findbad: @@ -139,17 +143,17 @@ if config.findbad: for node in config.args: config.node = node - fb = database.dbLoad("findbad") - plc_nodeinfo = api.GetNodes({'hostname': config.node}, None)[0] - fb_nodeinfo = fb['nodes'][config.node]['values'] - + plc_nodeinfo = plccache.GetNodeByName(config.node) + fb_noderec = FindbadNodeRecord.get_latest_by(hostname=node) + fb_nodeinfo = fb_noderec.to_dict() plc_print_nodeinfo(plc_nodeinfo) + fb_nodeinfo['hostname'] = node fb_print_nodeinfo(fb_nodeinfo) - if fb_nodeinfo['pcu'] == "PCU": - pcu = reboot.get_pcu_values(fb_nodeinfo['plcnode']['pcu_ids'][0]) - if pcu: pcu_print_info(pcu, config.node) + if fb_nodeinfo['plc_pcuid'] > 0: + pcu = FindbadPCURecord.get_latest_by(plc_pcuid=fb_nodeinfo['plc_pcuid']) + if pcu: pcu_print_info(pcu.to_dict(), config.node) try: act_all = database.dbLoad("act_all")