13 from nodequery import verify,query_to_dict,node_select
14 from datetime import datetime,timedelta
17 from sqlobject import connectionForURI,sqlhub
18 connection = connectionForURI(config.sqlobjecturi)
19 sqlhub.processConnection = connection
20 from infovacuum.model.findbadrecord import *
21 from infovacuum.model.historyrecord import *
24 api = plc.getAuthAPI()
25 from unified_model import *
26 from const import MINUP
30 l_nodes = syncplcdb.create_plcdb()
31 l_plcsites = database.dbLoad("l_plcsites")
34 l_sites = [config.site]
36 l_sites = [site['login_base'] for site in l_plcsites]
38 checkAndRecordState(l_sites, l_plcsites)
40 def getnodesup(nodelist):
44 noderec = FindbadNodeRecord.select(FindbadNodeRecord.q.hostname==node['hostname'],
45 orderBy='date_checked').reversed()[0]
46 if noderec.observed_status == "BOOT":
52 def checkAndRecordState(l_sites, l_plcsites):
54 lb2hn = database.dbLoad("plcdb_lb2hn")
55 for sitename in l_sites:
57 for site in l_plcsites:
58 if site['login_base'] == sitename:
66 pf = HistorySiteRecord.by_loginbase(sitename)
68 pf = HistorySiteRecord(loginbase=sitename)
70 pf.last_checked = datetime.now()
72 pf.slices_used = len(d_site['slice_ids'])
73 pf.nodes_total = len(lb2hn[sitename])
74 pf.nodes_up = getnodesup(lb2hn[sitename])
76 if pf.nodes_up >= MINUP:
77 if pf.status != "good": pf.last_changed = datetime.now()
80 if pf.status != "down": pf.last_changed = datetime.now()
84 print "%d %15s slices(%2s) nodes(%2s) up(%2s) %s" % (count, sitename, pf.slices_used,
85 pf.nodes_total, pf.nodes_up, pf.status)
89 if __name__ == '__main__':
90 import parser as parsermodule
92 parser = parsermodule.getParser()
93 parser.set_defaults(filename=None, node=None, site=None,
94 nodeselect=False, nodegroup=None, cachenodes=False)
96 parser.add_option("", "--site", dest="site", metavar="login_base",
97 help="Provide a single site to operate on")
98 parser.add_option("", "--sitelist", dest="sitelist", metavar="file.list",
99 help="Provide a list of files to operate on")
101 config = parsermodule.parse_args(parser)
105 except Exception, err:
107 print traceback.print_exc()
108 print "Exception: %s" % err