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 monitor.common 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():
+ main2(config)
-def main(config):
+def main2(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]
+ 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:
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:
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()
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
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()