X-Git-Url: http://git.onelab.eu/?p=monitor.git;a=blobdiff_plain;f=findbadpcu.py;h=e3d160ddb3455b2828dc08a9081ffc4945fca426;hp=55422a30231f5cd71e3772517524aecacec177c3;hb=6d46ab9b534b60675a3dcb11fcb664589a3691f8;hpb=5b7ebb918bb8c5c26c34219bf1d32e7c44505110 diff --git a/findbadpcu.py b/findbadpcu.py index 55422a3..e3d160d 100755 --- a/findbadpcu.py +++ b/findbadpcu.py @@ -5,6 +5,9 @@ import sys import string import time import socket +import util.file +import plc +import sets import signal @@ -380,11 +383,20 @@ def main(): # update global round number to force refreshes across all nodes externalState['round'] += 1 - if config.nodelist == None and config.pcuid == None: + if config.site is not None: + api = plc.getAuthAPI() + site = api.GetSites(config.site) + l_nodes = api.GetNodes(site[0]['node_ids'], ['pcu_ids']) + pcus = [] + for node in l_nodes: + pcus += node['pcu_ids'] + l_pcus = [pcu for pcu in sets.Set(pcus)] + + elif config.nodelist == None and config.pcuid == None: print "Calling API GetPCUs() : refresh(%s)" % config.refresh l_pcus = [pcu['pcu_id'] for pcu in l_pcus] elif config.nodelist is not None: - l_pcus = config.getListFromFile(config.nodelist) + l_pcus = util.file.getListFromFile(config.nodelist) l_pcus = [int(pcu) for pcu in l_pcus] elif config.pcuid is not None: l_pcus = [ config.pcuid ] @@ -409,14 +421,18 @@ if __name__ == '__main__': parser.set_defaults(nodelist=None, increment=False, pcuid=None, + site=None, dbname="findbadpcus", cachenodes=False, refresh=False, ) parser.add_option("-f", "--nodelist", dest="nodelist", metavar="FILE", help="Provide the input file for the node list") + parser.add_option("", "--site", dest="site", metavar="FILE", + help="Get all pcus associated with the given site's nodes") parser.add_option("", "--pcuid", dest="pcuid", metavar="id", help="Provide the id for a single pcu") + parser.add_option("", "--cachenodes", action="store_true", help="Cache node lookup from PLC") parser.add_option("", "--dbname", dest="dbname", metavar="FILE",