import threading
import monitor
-from monitor.pcu import reboot
+from pcucontrol import reboot
from monitor import config
-from monitor.database import FindbadPCURecordSync, FindbadPCURecord
+from monitor.database.info.model import FindbadPCURecordSync, FindbadPCURecord, session
+from monitor import database
from monitor import util
-from monitor.wrapper import plc
+from monitor.wrapper import plc, plccache
from nodequery import pcu_select
plc_lock = threading.Lock()
except:
try:
#print "GetPCU from file %s" % pcuname
- l_pcus = database.dbLoad("pculist")
+ l_pcus = plccache.l_pcus
for i in l_pcus:
if i['pcu_id'] == pcuname:
l_pcu = i
l_node = plc.getNodes(node_ids, ['hostname', 'last_contact', 'node_id', 'ports'])
except:
try:
- plc_nodes = database.dbLoad("l_plcnodes")
+ plc_nodes = plccache.l_plcnodes
for n in plc_nodes:
if n['node_id'] in node_ids:
l_node.append(n)
d_site = d_site[0]
except:
try:
- plc_sites = database.dbLoad("l_plcsites")
+ plc_sites = plccache.l_plcsites
for site in plc_sites:
if site['site_id'] == site_id:
d_site = site
fbrec = FindbadPCURecord(
date_checked=datetime.fromtimestamp(values['date_checked']),
+ round=fbsync.round,
plc_pcuid=pcu_id,
plc_pcu_stats=values['plc_pcu_stats'],
dns_status=values['dnsmatch'],
reboot_trial_status="%s" % values['reboot'],
)
fbnodesync.round = global_round
+
+ fbnodesync.flush()
+ fbsync.flush()
+ fbrec.flush()
+
count += 1
print "%d %s %s" % (count, nodename, values)
for pcuname in l_pcus:
pcu_id = int(pcuname)
fbnodesync = FindbadPCURecordSync.findby_or_create(plc_pcuid=pcu_id, if_new_set={'round' : 0})
+ fbnodesync.flush()
node_round = fbnodesync.round
- if node_round < global_round:
+ if node_round < global_round or config.force:
# recreate node stats when refreshed
#print "%s" % nodename
req = threadpool.WorkRequest(collectPingAndSSH, [pcuname, cohash], {},
print FindbadPCURecordSync.query.count()
print FindbadPCURecord.query.count()
+ session.flush()
def main():
global global_round
- l_pcus = monitor.database.if_cached_else_refresh(1, config.refresh, "pculist", lambda : plc.GetPCUs())
+ # monitor.database.if_cached_else_refresh(1, config.refresh, "pculist", lambda : plc.GetPCUs())
+ l_pcus = plccache.l_pcus
cohash = {}
fbsync = FindbadPCURecordSync.findby_or_create(plc_pcuid=0, if_new_set={'round' : global_round})
global_round += 1
fbsync.round = global_round
+ fbsync.flush()
+
if config.site is not None:
api = plc.getAuthAPI()
site = api.GetSites(config.site)
dbname="findbadpcus",
cachenodes=False,
refresh=False,
+ force=False,
)
parser.add_option("-f", "--nodelist", dest="nodelist", metavar="FILE",
help="Provide the input file for the node list")
help="Refresh the cached values")
parser.add_option("-i", "--increment", action="store_true", dest="increment",
help="Increment round number to force refresh or retry")
+ parser.add_option("", "--force", action="store_true", dest="force",
+ help="Force probe without incrementing global 'round'.")
parser = parsermodule.getParser(['defaults'], parser)
config = parsermodule.parse_args(parser)
try: