import os
import time
-from collections import deque
import queue
from six import moves, iteritems
-from vpp_papi import VPPApiClient, mac_pton
+from config import config
+from vpp_papi import VPPApiClient
from hook import Hook
-from vpp_ip_route import MPLS_IETF_MAX_LABEL, MPLS_LABEL_INVALID
+from vpp_papi_exceptions import CliFailedCommandError, CliSyntaxError,\
+ UnexpectedApiReturnValueError
#
# Dictionary keyed on message name to override default values for
'vxlan_add_del_tunnel': {'mcast_sw_if_index': 4294967295, 'is_add': 1,
'decap_next_index': 4294967295,
'instance': 4294967295, },
- 'vxlan_gpe_add_del_tunnel': {'mcast_sw_if_index': 4294967295, 'is_add': 1,
- 'protocol': 3, },
'want_bfd_events': {'enable_disable': 1, },
'want_igmp_events': {'enable': 1, },
'want_interface_events': {'enable_disable': 1, },
return ", ".join(f"{k}={v}" for k, v in d.items())
-class CliFailedCommandError(Exception):
- """ cli command failed."""
-
-
-class CliSyntaxError(Exception):
- """ cli command had a syntax error."""
-
-
-class UnexpectedApiReturnValueError(Exception):
- """ exception raised when the API return value is unexpected """
- pass
-
-
class VppPapiProvider(object):
"""VPP-api provider using vpp-papi
# install_dir is a class attribute. We need to set it before
# calling the constructor.
- VPPApiClient.apidir = os.getenv('VPP_INSTALL_PATH')
+ VPPApiClient.apidir = config.vpp_install_dir
self.vpp = VPPApiClient(logger=test_class.logger,
read_timeout=read_timeout,
reply.retval,
moves.reprlib.repr(reply))
self.test_class.logger.info(msg)
- raise UnexpectedApiReturnValueError(msg)
+ raise UnexpectedApiReturnValueError(reply.retval, msg)
elif self._expect_api_retval == self._zero:
if hasattr(reply, 'retval') and reply.retval != expected_retval:
msg = "%s(%s) failed, expected %d return value instead " \
expected_retval, reply.retval,
repr(reply))
self.test_class.logger.info(msg)
- raise UnexpectedApiReturnValueError(msg)
+ raise UnexpectedApiReturnValueError(reply.retval, msg)
else:
raise Exception("Internal error, unexpected value for "
"self._expect_api_retval %s" %
'is_ip6': is_ip6
}})
- def vxlan_gpe_add_del_tunnel(
- self,
- src_addr,
- dst_addr,
- mcast_sw_if_index=0xFFFFFFFF,
- is_add=1,
- is_ipv6=0,
- encap_vrf_id=0,
- decap_vrf_id=0,
- protocol=3,
- vni=0):
- """
-
- :param local:
- :param remote:
- :param is_add: (Default value = 1)
- :param is_ipv6: (Default value = 0)
- :param encap_vrf_id: (Default value = 0)
- :param decap_vrf_id: (Default value = 0)
- :param mcast_sw_if_index: (Default value = 0xFFFFFFFF)
- :param protocol: (Default value = 3)
- :param vni: (Default value = 0)
-
- """
- return self.api(self.papi.vxlan_gpe_add_del_tunnel,
- {'is_add': is_add,
- 'is_ipv6': is_ipv6,
- 'local': src_addr,
- 'remote': dst_addr,
- 'mcast_sw_if_index': mcast_sw_if_index,
- 'encap_vrf_id': encap_vrf_id,
- 'decap_vrf_id': decap_vrf_id,
- 'protocol': protocol,
- 'vni': vni})
-
- def vxlan_gbp_tunnel_dump(self, sw_if_index=0xffffffff):
- return self.api(self.papi.vxlan_gbp_tunnel_dump,
- {'sw_if_index': sw_if_index})
-
def pppoe_add_del_session(
self,
client_ip,
return self.api(self.papi.punt_socket_deregister,
{'punt': reg})
- def gbp_endpoint_dump(self):
- """ GBP endpoint Dump """
- return self.api(self.papi.gbp_endpoint_dump, {})
-
- def gbp_recirc_dump(self):
- """ GBP recirc Dump """
- return self.api(self.papi.gbp_recirc_dump, {})
-
- def gbp_ext_itf_dump(self):
- """ GBP recirc Dump """
- return self.api(self.papi.gbp_ext_itf_dump, {})
-
- def gbp_subnet_dump(self):
- """ GBP Subnet Dump """
- return self.api(self.papi.gbp_subnet_dump, {})
-
- def gbp_contract_dump(self):
- """ GBP contract Dump """
- return self.api(self.papi.gbp_contract_dump, {})
-
- def gbp_vxlan_tunnel_dump(self):
- """ GBP VXLAN tunnel add/del """
- return self.api(self.papi.gbp_vxlan_tunnel_dump, {})
-
def igmp_enable_disable(self, sw_if_index, enable, host):
""" Enable/disable IGMP on a given interface """
return self.api(self.papi.igmp_enable_disable,