X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodebad.py;h=5543f903d5fa15c2795ee6826be0d90e6ce55d41;hb=da913fbd1629fc4669b186915df8ff3a340482d3;hp=8d7650cbb6d94a3a0f997a6e5f61290aae7a1be0;hpb=b548c69db3d1f302b4d0d08377f0231eb3c4fd58;p=monitor.git diff --git a/nodebad.py b/nodebad.py index 8d7650c..5543f90 100755 --- a/nodebad.py +++ b/nodebad.py @@ -4,35 +4,27 @@ import os import sys import string import time +from datetime import datetime,timedelta - -import database -import comon -import threadpool -import syncplcdb from nodequery import verify,query_to_dict,node_select + 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 monitor import config +from monitor.wrapper import plc,plccache +from monitor.const import MINUP +from monitor.database import FindbadNodeRecord, HistoryNodeRecord + +from monitor.model import * -import plc api = plc.getAuthAPI() -from unified_model import * -from const import MINUP round = 1 count = 0 def main(config): - l_nodes = syncplcdb.create_plcdb() - l_plcnodes = database.dbLoad("l_plcnodes") + l_plcnodes = plccache.l_nodes l_nodes = get_nodeset(config) checkAndRecordState(l_nodes, l_plcnodes) @@ -49,20 +41,18 @@ def checkAndRecordState(l_nodes, l_plcnodes): if not d_node: continue - try: - pf = HistoryNodeRecord.by_hostname(nodename) - except: - pf = HistoryNodeRecord(hostname=nodename) - + pf = HistoryNodeRecord.findby_or_create(hostname=nodename) pf.last_checked = datetime.now() try: # Find the most recent record - noderec = FindbadNodeRecord.select(FindbadNodeRecord.q.hostname==nodename, - orderBy='date_checked').reversed()[0] + noderec = FindbadNodeRecord.query.filter(FindbadNodeRecord.hostname==nodename).order_by(FindbadNodeRecord.date_checked.desc()).first() + #print "NODEREC: ", noderec.date_checked except: - # or create an empty one. - noderec = FindbadNodeRecord(hostname=nodename) + print "COULD NOT FIND %s" % nodename + import traceback + print traceback.print_exc() + continue node_state = noderec.observed_status if noderec.plc_node_stats: @@ -86,10 +76,15 @@ def checkAndRecordState(l_nodes, l_plcnodes): count += 1 print "%d %35s %s since(%s)" % (count, nodename, 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 HistoryNodeRecord.query.count() + return True if __name__ == '__main__': - import parser as parsermodule + from monitor import parser as parsermodule parser = parsermodule.getParser(['nodesets']) parser.set_defaults(filename=None, node=None, nodeselect=False, nodegroup=None, cachenodes=False) parser = parsermodule.getParser(['defaults'], parser)