FIX: ip scale needs sw_if_index in VAT command
[csit.git] / resources / libraries / python / IPUtil.py
index 0c4356b..17ba75d 100644 (file)
@@ -154,6 +154,21 @@ class IPUtil(object):
         PapiExecutor.run_cli_cmd(node, 'show ip6 fib')
         PapiExecutor.run_cli_cmd(node, 'show ip6 fib summary')
 
+    @staticmethod
+    def vpp_get_ip_tables_prefix(node, address):
+        """Get dump of all IP FIB tables on a VPP node.
+
+        :param node: VPP node.
+        :type node: dict
+        """
+        ip = ip_address(unicode(address))
+
+        PapiExecutor.run_cli_cmd(
+            node, 'show {ip_ver} fib {addr}/{addr_len}'.format(
+                ip_ver='ip6' if ip.version == 6 else 'ip',
+                addr=ip,
+                addr_len=ip.max_prefixlen))
+
     @staticmethod
     def get_interface_vrf_table(node, interface, ip_version='ipv4'):
         """Get vrf ID for the given interface.
@@ -549,7 +564,7 @@ class IPUtil(object):
 
         if count > 100:
             gateway = kwargs.get("gateway", '')
-
+            interface = kwargs.get("interface", '')
             vrf = kwargs.get("vrf", None)
             multipath = kwargs.get("multipath", False)
 
@@ -559,6 +574,9 @@ class IPUtil(object):
                     network=network,
                     prefix_length=prefix_len,
                     via='via {}'.format(gateway) if gateway else '',
+                    sw_if_index='sw_if_index {}'.format(
+                        InterfaceUtil.get_interface_index(node, interface))
+                    if interface else '',
                     vrf='vrf {}'.format(vrf) if vrf else '',
                     count='count {}'.format(count) if count else '',
                     multipath='multipath' if multipath else '')