From: Claudio-Daniel Freire Date: Tue, 27 Sep 2011 02:01:25 +0000 (+0200) Subject: Filter blacklisted nodes in util.getNodes X-Git-Tag: nepi-3.0.0~215 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=dd4a0eb64c70abec8748b065ee940735d50cf953;p=nepi.git Filter blacklisted nodes in util.getNodes --- diff --git a/src/nepi/testbeds/planetlab/util.py b/src/nepi/testbeds/planetlab/util.py index dbe80183..133f3af7 100644 --- a/src/nepi/testbeds/planetlab/util.py +++ b/src/nepi/testbeds/planetlab/util.py @@ -31,6 +31,24 @@ def getAPI(user, pass_): import plcapi return plcapi.PLCAPI(username=user, password=pass_) +def filterBlacklist(candidates): + blpath = environ.homepath('plblacklist') + + try: + bl = open(blpath, "r") + except: + return candidates + + try: + blacklist = set( + map(int, + map(str.strip, bl.readlines()) + ) + ) + return [ x for x in candidates if x not in blacklist ] + finally: + bl.close() + def getNodes(api, num, **constraints): # Now do the backtracking search for a suitable solution # First with existing slice nodes @@ -45,7 +63,7 @@ def getNodes(api, num, **constraints): nodes.append(node) node = nodes[0] - candidates = node.find_candidates() + candidates = filterBlacklist(node.find_candidates()) reqs = [candidates] * num def pickbest(fullset, nreq, node=nodes[0]): @@ -60,8 +78,10 @@ def getNodes(api, num, **constraints): solution = resourcealloc.alloc(reqs, sample=pickbest) # Do assign nodes + runner = ParallelRun(maxthreads=4) for node, node_id in zip(nodes, solution): - node.assign_node_id(node_id) + runner.put(node.assign_node_id, node_id) + runner.join() return nodes