diff options
author | Vratko Polak <vrpolak@cisco.com> | 2020-03-11 12:46:44 +0100 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2020-03-17 15:59:28 +0000 |
commit | 11e9514af6e6d9e993b469fae3ce6671c3d3e536 (patch) | |
tree | 54169921ce49ebf6db03c47d6cec7b30aa6b42fa /resources/libraries/python/NodePath.py | |
parent | 54ff8d827f0aa3c689e26583952d04d86be503e7 (diff) |
NodePath: Make path computation deterministic
In Python3, set operations seem to result in indeterministic order.
+ Remove verbose logging from topology.py
Change-Id: I47cc90637a0b2969e1686b4216b7d8fe4fe2aaab
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'resources/libraries/python/NodePath.py')
-rw-r--r-- | resources/libraries/python/NodePath.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/resources/libraries/python/NodePath.py b/resources/libraries/python/NodePath.py index e97bde87ad..6f08be491b 100644 --- a/resources/libraries/python/NodePath.py +++ b/resources/libraries/python/NodePath.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. +# Copyright (c) 2020 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -120,10 +120,11 @@ class NodePath: f"No link between {node1[u'host']} and {node2[u'host']}" ) + # Not using set operations, as we need deterministic order. if always_same_link: - l_set = set(links).intersection(self._links) + l_set = [link for link in links if link in self._links] else: - l_set = set(links).difference(self._links) + l_set = [link for link in links if link not in self._links] if not l_set: raise RuntimeError( f"No free link between {node1[u'host']} and " @@ -131,9 +132,9 @@ class NodePath: ) if not l_set: - link = links.pop() + link = links[0] else: - link = l_set.pop() + link = l_set[0] self._links.append(link) interface1 = topo.get_interface_by_link_name(node1, link) |