X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sitebad.py;h=781cab666f8a0e4d4d80d7863667ab3132814c85;hb=8e65cdcaaf08982f5f744297c009359ec74d31b5;hp=48ac79c435abf050ad650a0e166108fe3de13337;hpb=6f2351e4b44590221425fa9b4bfa77c92db49b6a;p=monitor.git diff --git a/sitebad.py b/sitebad.py index 48ac79c..781cab6 100755 --- a/sitebad.py +++ b/sitebad.py @@ -7,24 +7,23 @@ import time from datetime import datetime,timedelta from monitor import database -from monitor.pcu import reboot +from pcucontrol import reboot from monitor import parser as parsermodule from monitor import config -from monitor.database import HistorySiteRecord, FindbadNodeRecord -from monitor.wrapper import plc +from monitor.database.info.model import HistorySiteRecord, FindbadNodeRecord, session +from monitor.wrapper import plc, plccache from monitor.const import MINUP from nodecommon import * from nodequery import verify,query_to_dict,node_select -import syncplcdb -from unified_model import * +from monitor.model import * api = plc.getAuthAPI() def main(config): - l_nodes = syncplcdb.create_plcdb() - l_plcsites = database.dbLoad("l_plcsites") + l_nodes = plccache.l_nodes + l_plcsites = plccache.l_sites if config.site: l_sites = [config.site] @@ -33,6 +32,19 @@ def main(config): checkAndRecordState(l_sites, l_plcsites) +def getnewsite(nodelist): + new = True + for node in nodelist: + try: + noderec = FindbadNodeRecord.query.filter(FindbadNodeRecord.hostname==node['hostname']).order_by(FindbadNodeRecord.date_checked.desc()).first() + if noderec is not None and \ + noderec.plc_node_stats['last_contact'] != None: + new = False + except: + import traceback + print traceback.print_exc() + return new + def getnodesup(nodelist): up = 0 for node in nodelist: @@ -49,7 +61,7 @@ def getnodesup(nodelist): def checkAndRecordState(l_sites, l_plcsites): count = 0 - lb2hn = database.dbLoad("plcdb_lb2hn") + lb2hn = plccache.plcdb_lb2hn for sitename in l_sites: d_site = None for site in l_plcsites: @@ -63,9 +75,12 @@ def checkAndRecordState(l_sites, l_plcsites): pf = HistorySiteRecord.findby_or_create(loginbase=sitename) pf.last_checked = datetime.now() + pf.slices_total = d_site['max_slices'] pf.slices_used = len(d_site['slice_ids']) pf.nodes_total = len(lb2hn[sitename]) pf.nodes_up = getnodesup(lb2hn[sitename]) + pf.new = getnewsite(lb2hn[sitename]) + pf.enabled = d_site['enabled'] if pf.nodes_up >= MINUP: if pf.status != "good": pf.last_changed = datetime.now() @@ -77,7 +92,10 @@ def checkAndRecordState(l_sites, l_plcsites): count += 1 print "%d %15s slices(%2s) nodes(%2s) up(%2s) %s" % (count, sitename, pf.slices_used, pf.nodes_total, pf.nodes_up, pf.status) + pf.flush() + print HistorySiteRecord.query.count() + session.flush() return True