CSIT-360: Parallel test sets run
[csit.git] / resources / libraries / python / InterfaceUtil.py
index 9ecdb75..11600a1 100644 (file)
@@ -212,6 +212,28 @@ class InterfaceUtil(object):
             return dict()
         return data
 
+    @staticmethod
+    def vpp_get_interface_mac(node, interface=None):
+        """Get MAC address for the given interface from actual interface dump.
+
+        :param node: VPP node to get interface data from.
+        :param interface: Numeric index or name string of a specific interface.
+        :type node: dict
+        :type interface: int or str
+        :return: MAC address.
+        :rtype: str
+        """
+
+        if_data = InterfaceUtil.vpp_get_interface_data(node, interface)
+        mac_data = [str(hex(item))[2:] for item in if_data['l2_address'][:6]]
+        mac_data_nice = []
+        for item in mac_data:
+            if len(item) == 1:
+                item = '0' + item
+            mac_data_nice.append(item)
+        mac = ":".join(mac_data_nice)
+        return mac
+
     @staticmethod
     def vpp_get_interface_ip_addresses(node, interface, ip_version):
         """Get list of IP addresses from an interface on a VPP node.
@@ -847,25 +869,30 @@ class InterfaceUtil(object):
                                                     interface_name=interface)
 
     @staticmethod
-    def assign_interface_to_fib_table(node, interface, table_id):
+    def assign_interface_to_fib_table(node, interface, table_id, ipv6=False):
         """Assign VPP interface to specific VRF/FIB table.
 
         :param node: VPP node where the FIB and interface are located.
         :param interface: Interface to be assigned to FIB.
         :param table_id: VRF table ID.
+        :param ipv6: Assign to IPv6 table. Default False.
         :type node: dict
         :type interface: str or int
         :type table_id: int
+        :type ipv6: bool
         """
         if isinstance(interface, basestring):
             sw_if_index = Topology.get_interface_sw_index(node, interface)
         else:
             sw_if_index = interface
 
+        ipv6 = 'ipv6' if ipv6 else ''
+
         with VatTerminal(node) as vat:
             vat.vat_terminal_exec_cmd_from_template("set_fib_to_interface.vat",
                                                     sw_index=sw_if_index,
-                                                    vrf=table_id)
+                                                    vrf=table_id,
+                                                    ipv6=ipv6)
 
     @staticmethod
     def set_linux_interface_mac(node, interface, mac, namespace=None):