X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=pcubad.py;h=e13accc2f5a0321398f3494d9881492983891307;hb=da913fbd1629fc4669b186915df8ff3a340482d3;hp=38cf8974bf6cbe48ed9c12b20fb39b900d0b59b5;hpb=b548c69db3d1f302b4d0d08377f0231eb3c4fd58;p=monitor.git diff --git a/pcubad.py b/pcubad.py index 38cf897..e13accc 100755 --- a/pcubad.py +++ b/pcubad.py @@ -4,34 +4,26 @@ import os import sys import string import time +from datetime import datetime,timedelta -from reboot import pcu_name +from monitor import database +from monitor.pcu import reboot +from monitor import parser as parsermodule +from monitor import config +from monitor.database import HistoryPCURecord, FindbadPCURecord +from monitor.wrapper import plc,plccache +from monitor.const import MINUP -import database -import comon -import threadpool -import syncplcdb -from nodequery import verify,query_to_dict,node_select -import parser as parsermodule from nodecommon import * -from datetime import datetime,timedelta -import config - -from sqlobject import connectionForURI,sqlhub -connection = connectionForURI(config.sqlobjecturi) -sqlhub.processConnection = connection -from infovacuum.model_findbadrecord import * -from infovacuum.model_historyrecord import * +from nodequery import verify,query_to_dict,node_select +from monitor.model import * -import plc api = plc.getAuthAPI() -from unified_model import * -from const import MINUP - def main(config): - l_plcpcus = database.if_cached_else_refresh(1, 1, "pculist", lambda : plc.GetPCUs()) + #l_plcpcus = database.if_cached_else_refresh(1, 1, "pculist", lambda : plc.GetPCUs()) + l_plcpcus = plccache.l_pcus l_pcus = None if config.pcu: @@ -47,7 +39,7 @@ def main(config): checkAndRecordState(l_pcus, l_plcpcus) -hn2lb = database.dbLoad("plcdb_hn2lb") +hn2lb = plccache.plcdb_hn2lb def checkAndRecordState(l_pcus, l_plcpcus): count = 0 @@ -61,18 +53,17 @@ def checkAndRecordState(l_pcus, l_plcpcus): if not d_pcu: continue - try: - pf = HistoryPCURecord.by_pcuid(d_pcu['pcu_id']) - except: - pf = HistoryPCURecord(plc_pcuid=pcuname) - + pf = HistoryPCURecord.findby_or_create(plc_pcuid=d_pcu['pcu_id']) pf.last_checked = datetime.now() try: # Find the most recent record - pcurec = FindbadPCURecord.select(FindbadPCURecord.q.plc_pcuid==pcuname, - orderBy='date_checked').reversed()[0] + pcurec = FindbadPCURecord.query.filter(FindbadPCURecord.plc_pcuid==pcuname).order_by(FindbadPCURecord.date_checked.desc()).first() + print "NODEREC: ", pcurec.date_checked except: + print "COULD NOT FIND FB record for %s" % reboot.pcu_name(pcu) + import traceback + print traceback.print_exc() # don't have the info to create a new entry right now, so continue. continue @@ -97,7 +88,12 @@ def checkAndRecordState(l_pcus, l_plcpcus): pf.status = "error" count += 1 - print "%d %35s %s since(%s)" % (count, pcu_name(d_pcu), pf.status, diff_time(time.mktime(pf.last_changed.timetuple()))) + print "%d %35s %s since(%s)" % (count, reboot.pcu_name(d_pcu), pf.status, diff_time(time.mktime(pf.last_changed.timetuple()))) + + # NOTE: this commits all pending operations to the DB. Do not remove, or + # replace with another operations that also commits all pending ops, such + # as session.commit() or flush() or something + print HistoryPCURecord.query.count() return True