X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack_observer%2Ftoposort.py;h=ad1797e24f9796bead83dbaaf6a0c389a2b39190;hb=05af1ce7d9e949e0c25646090c4bf48edcb29536;hp=a2c9389690f734bfe252a1168c3b0d42bd412258;hpb=a358f0fb280d3da6938575be3d9c5d4a4a7e3f7a;p=plstackapi.git diff --git a/planetstack/openstack_observer/toposort.py b/planetstack/openstack_observer/toposort.py index a2c9389..ad1797e 100644 --- a/planetstack/openstack_observer/toposort.py +++ b/planetstack/openstack_observer/toposort.py @@ -45,19 +45,18 @@ def toposort(g, steps=None): try: for m in g[n]: if (m in unmarked): - if (m not in stack): - add = False - stack.insert(0,m) - else: - # Should not happen, if so there's a loop - print 'Loop at %s'%m + add = False + stack.insert(0,m) except KeyError: pass if (add): - if (n in steps): + if (n in steps and n not in order): order.append(n) item = stack.pop(0) - unmarked.remove(item) + try: + unmarked.remove(item) + except ValueError: + pass noorder = list(set(steps) - set(order)) return order + noorder