X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sitebad.py;h=f8524f00040def47074c6a681a068999e6db14e6;hb=4df3989d4aee44cb6e36169ac69ba097436f7b15;hp=2c1628aace9752ba495b12508c1792374fb00f99;hpb=da913fbd1629fc4669b186915df8ff3a340482d3;p=monitor.git diff --git a/sitebad.py b/sitebad.py index 2c1628a..f8524f0 100755 --- a/sitebad.py +++ b/sitebad.py @@ -7,31 +7,49 @@ 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.database.info.model import HistorySiteRecord, FindbadNodeRecord, session from monitor.wrapper import plc, plccache from monitor.const import MINUP -from nodecommon import * +from monitor.common import * from nodequery import verify,query_to_dict,node_select from monitor.model import * api = plc.getAuthAPI() +def main(): + main2(config) -def main(config): +def main2(config): l_nodes = plccache.l_nodes l_plcsites = plccache.l_sites if config.site: l_sites = [config.site] + elif config.sitelist: + site_list = config.sitelist.split(',') + l_sites = site_list else: l_sites = [site['login_base'] for site in l_plcsites] 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: @@ -62,9 +80,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() @@ -76,7 +97,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 @@ -89,13 +113,13 @@ if __name__ == '__main__': parser.add_option("", "--site", dest="site", metavar="login_base", help="Provide a single site to operate on") - parser.add_option("", "--sitelist", dest="sitelist", metavar="file.list", - help="Provide a list of files to operate on") + parser.add_option("", "--sitelist", dest="sitelist", + help="Provide a list of sites separated by ','") config = parsermodule.parse_args(parser) try: - main(config) + main2(config) except Exception, err: import traceback print traceback.print_exc()