aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/topology.py
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python/topology.py')
-rw-r--r--resources/libraries/python/topology.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/resources/libraries/python/topology.py b/resources/libraries/python/topology.py
index a5c67d313c..c02991fbde 100644
--- a/resources/libraries/python/topology.py
+++ b/resources/libraries/python/topology.py
@@ -278,11 +278,12 @@ class Topology(object):
:return: Interface name of the interface connected to the given link.
:rtype: str
"""
- return Topology._get_interface_by_key_value(node, "vpp_sw_index", sw_index)
+ return Topology._get_interface_by_key_value(node, "vpp_sw_index",
+ sw_index)
@staticmethod
def get_interface_sw_index(node, iface_key):
- """Get VPP sw_if_index for the interface.
+ """Get VPP sw_if_index for the interface using interface key.
:param node: Node to get interface sw_if_index on.
:param iface_key: Interface key from topology file, or sw_index.
@@ -300,6 +301,26 @@ class Topology(object):
return None
@staticmethod
+ def get_interface_sw_index_by_name(node, iface_name):
+ """Get VPP sw_if_index for the interface using interface name.
+
+ :param node: Node to get interface sw_if_index on.
+ :param iface_name: Interface name.
+ :type node: dict
+ :type iface_name: str
+ :return: Return sw_if_index or None if not found.
+ :raises TypeError: If provided interface name is not a string.
+ """
+ try:
+ if isinstance(iface_name, basestring):
+ iface_key = Topology.get_interface_by_name(node, iface_name)
+ return node['interfaces'][iface_key].get('vpp_sw_index')
+ else:
+ raise TypeError("Interface name must be a string.")
+ except (KeyError, ValueError):
+ return None
+
+ @staticmethod
def get_interface_mtu(node, iface_key):
"""Get interface MTU.
@@ -514,7 +535,7 @@ class Topology(object):
if filt == interface['model']:
link_names.append(interface['link'])
elif (filter_list is not None) and ('model' not in interface):
- logger.trace("Cannot apply filter on interface: {}" \
+ logger.trace("Cannot apply filter on interface: {}"
.format(str(interface)))
else:
link_names.append(interface['link'])
@@ -534,8 +555,8 @@ class Topology(object):
:param filter_list_node2: Link filter criteria for node2.
:type node1: dict
:type node2: dict
- :type filter_list1: list of strings
- :type filter_list2: list of strings
+ :type filter_list_node1: list of strings
+ :type filter_list_node2: list of strings
:return: List of strings that represent connecting link names.
:rtype: list
"""
@@ -578,7 +599,8 @@ class Topology(object):
else:
return connecting_links[0]
- @keyword('Get egress interfaces name on "${node1}" for link with "${node2}"')
+ @keyword('Get egress interfaces name on "${node1}" for link with '
+ '"${node2}"')
def get_egress_interfaces_name_for_nodes(self, node1, node2):
"""Get egress interfaces on node1 for link with node2.