X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FNodePath.py;h=8ee29b234d383325c9a55430af2b4e93fa00b8a9;hp=bbc6d31811bb70e1d21ed2d52124f6116c4f0d24;hb=3d279e4d68bbd94024bf739e71c872f18822a65d;hpb=8c12ff59f1a5e750151f5eb0e806dcc80e91c3c2 diff --git a/resources/libraries/python/NodePath.py b/resources/libraries/python/NodePath.py index bbc6d31811..8ee29b234d 100644 --- a/resources/libraries/python/NodePath.py +++ b/resources/libraries/python/NodePath.py @@ -55,16 +55,20 @@ class NodePath(object): def __init__(self): self._nodes = [] + self._nodes_filter = [] self._links = [] self._path = [] self._path_iter = [] - def append_node(self, node): + def append_node(self, node, filter_list=None): """Append node to the path. :param node: Node to append to the path. + :param filter_list: Filter criteria list. :type node: dict + :type filter_list: list of strings """ + self._nodes_filter.append(filter_list) self._nodes.append(node) def append_nodes(self, *nodes): @@ -81,6 +85,7 @@ class NodePath(object): def clear_path(self): """Clear path.""" self._nodes = [] + self._nodes_filter = [] self._links = [] self._path = [] self._path_iter = [] @@ -103,7 +108,11 @@ class NodePath(object): topo = Topology() node1 = nodes[idx] node2 = nodes[idx + 1] - links = topo.get_active_connecting_links(node1, node2) + n1_list = self._nodes_filter[idx] + n2_list = self._nodes_filter[idx + 1] + links = topo.get_active_connecting_links(node1, node2, + filter_list_node1=n1_list, + filter_list_node2=n2_list) if not links: raise RuntimeError('No link between {0} and {1}'.format( node1['host'], node2['host'])) @@ -134,7 +143,7 @@ class NodePath(object): def next_interface(self): """Path interface iterator. - :return: Interface and node or None if not next interface. + :returns: Interface and node or None if not next interface. :rtype: tuple (str, dict) .. note:: Call compute_path before. @@ -147,7 +156,7 @@ class NodePath(object): def first_interface(self): """Return first interface on the path. - :return: Interface and node. + :returns: Interface and node. :rtype: tuple (str, dict) .. note:: Call compute_path before. @@ -159,7 +168,7 @@ class NodePath(object): def last_interface(self): """Return last interface on the path. - :return: Interface and node. + :returns: Interface and node. :rtype: tuple (str, dict) .. note:: Call compute_path before. @@ -171,7 +180,7 @@ class NodePath(object): def first_ingress_interface(self): """Return first ingress interface on the path. - :return: Interface and node. + :returns: Interface and node. :rtype: tuple (str, dict) .. note:: Call compute_path before. @@ -183,7 +192,7 @@ class NodePath(object): def last_egress_interface(self): """Return last egress interface on the path. - :return: Interface and node. + :returns: Interface and node. :rtype: tuple (str, dict) .. note:: Call compute_path before.