-import os
import fnmatch
+import os
import time
-from hook import Hook
from collections import deque
+from six import moves
+
+from hook import Hook
+from vpp_l2 import L2_PORT_TYPE
+
# Sphinx creates auto-generated documentation by importing the python source
# files and collecting the docstrings from them. The NO_VPP_PAPI flag allows
# the vpp_papi_provider.py file to be importable without having to build
# the whole vpp api if the user only wishes to generate the test documentation.
-do_import = True
-try:
- no_vpp_papi = os.getenv("NO_VPP_PAPI")
- if no_vpp_papi == "1":
- do_import = False
-except:
- pass
-if do_import:
+try:
from vpp_papi import VPP
- from vpp_l2 import L2_PORT_TYPE
+except ImportError:
+ if not os.getenv("NO_VPP_PAPI") == 1:
+ raise
+ pass
# from vnet/vnet/mpls/mpls_types.h
MPLS_IETF_MAX_LABEL = 0xfffff
self._expect_stack = []
jsonfiles = []
- install_dir = os.getenv('VPP_TEST_INSTALL_PATH')
+ install_dir = os.getenv('VPP_INSTALL_PATH')
for root, dirnames, filenames in os.walk(install_dir):
for filename in fnmatch.filter(filenames, '*.api.json'):
jsonfiles.append(os.path.join(root, filename))
if hasattr(reply, 'retval') and reply.retval >= 0:
msg = "API call passed unexpectedly: expected negative "\
"return value instead of %d in %s" % \
- (reply.retval, repr(reply))
+ (reply.retval, moves.reprlib.repr(reply))
self.test_class.logger.info(msg)
raise UnexpectedApiReturnValueError(msg)
elif self._expect_api_retval == self._zero:
if hasattr(reply, 'retval') and reply.retval != expected_retval:
msg = "API call failed, expected %d return value instead "\
"of %d in %s" % (expected_retval, reply.retval,
- repr(reply))
+ moves.reprlib.repr(reply))
self.test_class.logger.info(msg)
raise UnexpectedApiReturnValueError(msg)
else:
def map_add_domain(self,
ip6_prefix,
- ip6_prefix_len,
ip6_src,
- ip6_src_prefix_len,
ip4_prefix,
- ip4_prefix_len,
ea_bits_len=0,
psid_offset=0,
psid_length=0,
self.papi.map_add_domain,
{
'ip6_prefix': ip6_prefix,
- 'ip6_prefix_len': ip6_prefix_len,
'ip4_prefix': ip4_prefix,
- 'ip4_prefix_len': ip4_prefix_len,
'ip6_src': ip6_src,
- 'ip6_src_prefix_len': ip6_src_prefix_len,
'ea_bits_len': ea_bits_len,
'psid_offset': psid_offset,
'psid_length': psid_length,
def ip_punt_redirect(self,
rx_sw_if_index,
tx_sw_if_index,
- nh,
- is_ip6=0,
+ address,
is_add=1):
return self.api(self.papi.ip_punt_redirect,
- {'rx_sw_if_index': rx_sw_if_index,
- 'tx_sw_if_index': tx_sw_if_index,
- 'nh': nh,
- 'is_add': is_add,
- 'is_ip6': is_ip6})
+ {'punt': {'rx_sw_if_index': rx_sw_if_index,
+ 'tx_sw_if_index': tx_sw_if_index,
+ 'nh': address},
+ 'is_add': is_add})
+
+ def ip_punt_redirect_dump(self, sw_if_index, is_ipv6=0):
+ return self.api(self.papi.ip_punt_redirect_dump,
+ {'sw_if_index': sw_if_index,
+ 'is_ipv6': is_ipv6})
def bier_table_add_del(self,
bti,
is_tunnel=1,
is_tunnel_ipv6=0,
is_add=1,
- udp_encap=0):
+ udp_encap=0,
+ use_anti_replay=0,
+ use_extended_sequence_number=0):
""" IPSEC SA add/del
:param sad_id: security association ID
:param spi: security param index of the SA in decimal
'is_add': is_add,
'is_tunnel': is_tunnel,
'is_tunnel_ipv6': is_tunnel_ipv6,
- 'udp_encap': udp_encap})
+ 'udp_encap': udp_encap,
+ 'use_extended_sequence_number': use_extended_sequence_number,
+ 'use_anti_replay': use_anti_replay})
def ipsec_spd_add_del_entry(self,
spd_id,
""" GBP recirc Dump """
return self.api(self.papi.gbp_recirc_dump, {})
+ def gbp_ext_itf_add_del(self, is_add, sw_if_index, bd_id, rd_id):
+ """ GBP recirc Add/Del """
+ return self.api(self.papi.gbp_ext_itf_add_del,
+ {'is_add': is_add,
+ 'ext_itf': {
+ 'sw_if_index': sw_if_index,
+ 'bd_id': bd_id,
+ 'rd_id': rd_id}})
+
+ def gbp_ext_itf_dump(self):
+ """ GBP recirc Dump """
+ return self.api(self.papi.gbp_ext_itf_dump, {})
+
def gbp_subnet_add_del(self, is_add, rd_id,
prefix, type,
sw_if_index=0xffffffff,
'sw_if_index': sw_if_index,
'n_srcs': len(saddrs),
'saddrs': saddrs,
- 'gaddr':
- {
- 'address': gaddr
- }
+ 'gaddr': gaddr
}
})
:param max_msg_size: maximum message length (Default value = 480)
"""
return self.api(self.papi.syslog_set_sender,
- {'collector_address': {
- 'address': collector},
- 'src_address': {
- 'address': src},
+ {'collector_address': collector,
+ 'src_address': src,
'collector_port': collector_port,
'vrf_id': vrf_id,
'max_msg_size': max_msg_size})