"""Create bidirectional cross-connect between 2 interfaces on vpp node.
:param node: Node to add bidirectional cross-connect
- :param interface1: first interface
- :param interface2: second interface
+ :param interface1: first interface name or sw_if_index
+ :param interface2: second interface name or sw_if_index
:type node: dict
- :type interface1: str
- :type interface2: str
+ :type interface1: str or int
+ :type interface2: str or int
"""
- sw_iface1 = Topology().get_interface_sw_index(node, interface1)
- sw_iface2 = Topology().get_interface_sw_index(node, interface2)
- vat = VatTerminal(node)
- vat.vat_terminal_exec_cmd_from_template('l2_xconnect.vat',
- interface1=sw_iface1,
- interface2=sw_iface2)
- vat.vat_terminal_exec_cmd_from_template('l2_xconnect.vat',
- interface1=sw_iface2,
- interface2=sw_iface1)
- vat.vat_terminal_close()
+
+ if isinstance(interface1, basestring):
+ sw_iface1 = Topology().get_interface_sw_index(node, interface1)
+ else:
+ sw_iface1 = interface1
+
+ if isinstance(interface2, basestring):
+ sw_iface2 = Topology().get_interface_sw_index(node, interface2)
+ else:
+ sw_iface2 = interface2
+
+ with VatTerminal(node) as vat:
+ vat.vat_terminal_exec_cmd_from_template('l2_xconnect.vat',
+ interface1=sw_iface1,
+ interface2=sw_iface2)
+ vat.vat_terminal_exec_cmd_from_template('l2_xconnect.vat',
+ interface1=sw_iface2,
+ interface2=sw_iface1)