HC Test: address and cleanup test failures
[csit.git] / resources / libraries / python / InterfaceUtil.py
index 16acdf3..793f908 100644 (file)
@@ -260,7 +260,9 @@ class InterfaceUtil(object):
          Note: A single interface may have multiple IP addresses assigned.
          :rtype: list
         """
-        sw_if_index = InterfaceUtil.get_sw_if_index(node, interface)
+
+        sw_if_index = Topology.convert_interface_reference(
+            node, interface, "sw_if_index")
 
         with VatTerminal(node) as vat:
             response = vat.vat_terminal_exec_cmd_from_template(
@@ -847,6 +849,29 @@ class InterfaceUtil(object):
                 sw_if_index=sw_if_index)
         return data[0]
 
+    @staticmethod
+    def get_interface_vrf_table(node, interface):
+        """Get vrf ID for the given interface.
+
+        :param node: VPP node.
+        :param interface: Name or sw_if_index of a specific interface.
+        :type node: dict
+        :type interface: str or int
+        :returns: vrf ID of the specified interface.
+        :rtype: int
+        """
+
+        if isinstance(interface, basestring):
+            sw_if_index = InterfaceUtil.get_sw_if_index(node, interface)
+        else:
+            sw_if_index = interface
+
+        with VatTerminal(node) as vat:
+            data = vat.vat_terminal_exec_cmd_from_template(
+                "interface_vrf_dump.vat",
+                sw_if_index=sw_if_index)
+        return data[0]["vrf_id"]
+
     @staticmethod
     def get_sw_if_index(node, interface_name):
         """Get sw_if_index for the given interface from actual interface dump.
@@ -950,10 +975,14 @@ class InterfaceUtil(object):
         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,
-                                                    ipv6=ipv6)
+            ret = vat.vat_terminal_exec_cmd_from_template(
+                "set_fib_to_interface.vat",
+                sw_index=sw_if_index, vrf=table_id, ipv6=ipv6)
+
+        if ret[0]["retval"] != 0:
+            raise RuntimeError('Unable to assign interface to FIB node {}.'
+                               .format(node))
+
 
     @staticmethod
     def set_linux_interface_mac(node, interface, mac, namespace=None):