span: add feature (rx only) (VPP-185)
[vpp.git] / test / vpp_papi_provider.py
index 261a0f4..2148e94 100644 (file)
@@ -69,7 +69,8 @@ class VppPapiProvider(object):
         return reply
 
     def cli(self, cli):
-        """Execute a CLI, calling the before/after hooks appropriately
+        """
+        Execute a CLI, calling the before/after hooks appropriately.
 
         :param cli: CLI to execute
         :returns: CLI output
@@ -79,9 +80,18 @@ class VppPapiProvider(object):
         cli += '\n'
         r = vpp_papi.cli_inband(len(cli), cli)
         self.hook.after_cli(cli)
-        if(hasattr(r, 'reply')):
+        if hasattr(r, 'reply'):
             return r.reply[0].decode().rstrip('\x00')
 
+    def ppcli(self, cli):
+        """
+        Helping method to print CLI command in case of info logging level.
+
+        :param cli: CLI to execute
+        :returns: CLI output
+        """
+        return cli + "\n" + self.cli(cli)
+
     def show_version(self):
         """ """
         return vpp_papi.show_version()
@@ -106,6 +116,18 @@ class VppPapiProvider(object):
             args = (0, b'')
         return self.api(vpp_papi.sw_interface_dump, args)
 
+    def sw_interface_set_table(self, sw_if_index, is_ipv6, table_id):
+        """
+          Set the IPvX Table-id for the Interface
+
+        :param sw_if_index:
+        :param is_ipv6:
+        :param table_id:
+
+        """
+        return self.api(vpp_papi.sw_interface_set_table,
+                        (sw_if_index, is_ipv6, table_id))
+
     def sw_interface_add_del_address(self, sw_if_index, addr, addr_len,
                                      is_ipv6=0, is_add=1, del_all=0):
         """
@@ -121,6 +143,17 @@ class VppPapiProvider(object):
         return self.api(vpp_papi.sw_interface_add_del_address,
                         (sw_if_index, is_add, is_ipv6, del_all, addr_len, addr))
 
+    def sw_interface_enable_disable_mpls(self, sw_if_index,
+                                         is_enable=1):
+        """
+        Enable/Disable MPLS on the interface
+        :param sw_if_index:
+        :param is_enable:  (Default value = 1)
+
+        """
+        return self.api(vpp_papi.sw_interface_set_mpls_enable,
+                        (sw_if_index, is_enable))
+
     def sw_interface_ra_suppress(self, sw_if_index):
         suppress = 1
         managed = 0
@@ -254,6 +287,13 @@ class VppPapiProvider(object):
         """
         return self.api(vpp_papi.create_vlan_subif, (sw_if_index, vlan))
 
+    def create_loopback(self, mac=''):
+        """
+
+        :param mac: (Optional)
+        """
+        return self.api(vpp_papi.create_loopback, (mac,))
+
     def ip_add_del_route(
             self,
             dst_address,
@@ -329,3 +369,45 @@ class VppPapiProvider(object):
              dst_address_length,
              dst_address,
              next_hop_address))
+
+    def ip_neighbor_add_del(self,
+                            sw_if_index,
+                            mac_address,
+                            dst_address,
+                            vrf_id=0,
+                            is_add=1,
+                            is_ipv6=0,
+                            is_static=0,
+                            ):
+        """ Add neighbor MAC to IPv4 or IPv6 address.
+
+        :param sw_if_index:
+        :param mac_address:
+        :param dst_address:
+        :param vrf_id:  (Default value = 0)
+        :param is_add:  (Default value = 1)
+        :param is_ipv6:  (Default value = 0)
+        :param is_static:  (Default value = 0)
+        """
+
+        return self.api(
+            vpp_papi.ip_neighbor_add_del,
+            (vrf_id,
+             sw_if_index,
+             is_add,
+             is_ipv6,
+             is_static,
+             mac_address,
+             dst_address
+             )
+        )
+
+    def sw_interface_span_enable_disable(self, sw_if_index_from, sw_if_index_to, enable=1):
+        """
+
+        :param sw_if_index_from:
+        :param sw_if_index_to:
+        :param enable
+
+        """
+        return self.api(vpp_papi.sw_interface_span_enable_disable, (sw_if_index_from, sw_if_index_to, enable ))