X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=pcubad.py;h=59dfe7ae38ed991c78ddf2b5b36b5e76391988f6;hb=refs%2Fheads%2F2.0;hp=5d14475f793e7fc8383756f17788ec7a1ad72887;hpb=ceacc2c6b09245cf360dc8f2afecc702d7540553;p=monitor.git diff --git a/pcubad.py b/pcubad.py index 5d14475..59dfe7a 100755 --- a/pcubad.py +++ b/pcubad.py @@ -31,13 +31,20 @@ def main2(config): l_pcus = None if config.site is not None: - site = api.GetSites(config.site) - l_nodes = api.GetNodes(site[0]['node_ids'], ['pcu_ids']) + site = plccache.GetSitesByName([config.site]) + l_nodes = plccache.GetNodesByIds(site[0]['node_ids']) pcus = [] for node in l_nodes: pcus += node['pcu_ids'] # clear out dups. l_pcus = [pcu for pcu in sets.Set(pcus)] + + elif config.node: + node = plccache.GetNodeByName(config.node) + pcus = node['pcu_ids'] + # clear out dups. + l_pcus = [pcu for pcu in sets.Set(pcus)] + elif config.pcu: for pcu in l_plcpcus: if ( pcu['hostname'] is not None and config.pcu in pcu['hostname'] ) or \ @@ -63,7 +70,7 @@ def check_pcu_state(rec, pcu): pcu.status = 'offline' pcu.last_changed = datetime.now() - if ( pcu_state == 0 or pcu_state == "0" ) and changed_lessthan(pcu.last_changed, 0.5) and pcu.status != 'online': + if ( pcu_state == 0 or pcu_state == "0" ) and pcu.status not in [ 'online', 'good' ]: print "changed status from %s to online" % pcu.status pcu.status = 'online' pcu.last_changed = datetime.now() @@ -104,10 +111,11 @@ def checkAndRecordState(l_pcus, l_plcpcus): try: # Find the most recent record - pcurec = FindbadPCURecord.query.filter(FindbadPCURecord.plc_pcuid==pcuname).order_by(FindbadPCURecord.date_checked.desc()).first() + pcurec = FindbadPCURecord.query.filter(FindbadPCURecord.plc_pcuid==pcuname).first() except: print "COULD NOT FIND FB record for %s" % reboot.pcu_name(d_pcu) import traceback + email_exception() print traceback.print_exc() # don't have the info to create a new entry right now, so continue. continue @@ -131,11 +139,13 @@ def checkAndRecordState(l_pcus, l_plcpcus): if __name__ == '__main__': parser = parsermodule.getParser() - parser.set_defaults(filename=None, pcu=None, site=None, pcuselect=False, pcugroup=None, cachepcus=False) + parser.set_defaults(filename=None, pcu=None, node=None, site=None, pcuselect=False, pcugroup=None, cachepcus=False) parser.add_option("", "--pcu", dest="pcu", metavar="hostname", help="Provide a single pcu to operate on") parser.add_option("", "--site", dest="site", metavar="sitename", help="Provide a single sitename to operate on") + parser.add_option("", "--node", dest="node", metavar="nodename", + help="Provide a single node to operate on") parser.add_option("", "--pculist", dest="pculist", metavar="file.list", help="Provide a list of files to operate on") @@ -145,6 +155,6 @@ if __name__ == '__main__': main2(config) except Exception, err: import traceback - print traceback.print_exc() + traceback.print_exc() print "Exception: %s" % err sys.exit(0)