diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-01-15 09:50:49 +0000 |
|---|---|---|
| committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-01-15 09:50:49 +0000 |
| commit | 405d3ee7ac909bbf458f522e6539a1f4eacdf7e6 (patch) | |
| tree | c26cb5e86691b1e48f7fe0cd5e0383cae0149d2d /src/conf_mode/vpp_interfaces_loopback.py | |
| parent | 1b6e491537c98d396b25aaf734b66b6ba5413dac (diff) | |
| download | vyos-1x-405d3ee7ac909bbf458f522e6539a1f4eacdf7e6.tar.gz vyos-1x-405d3ee7ac909bbf458f522e6539a1f4eacdf7e6.zip | |
warning: introduce a delay between add() and kernel_add()
Introduce a delay to address instability in the VPP API, which may
fail to create the LCP or establish a connection.
This should be reviewed and resolved in future releases.
This fixes confgurations with included kernel-itnerface (LCP)
And all smoketests
Example:
set interfaces ethernet eth1 address '192.0.2.1/30'
set vpp settings interface eth1 driver 'dpdk'
set vpp interfaces vxlan vxlan10 remote '192.0.2.2'
set vpp interfaces vxlan vxlan10 source-address '192.0.2.1'
set vpp interfaces vxlan vxlan10 vni '10'
set vpp interfaces vxlan vxlan10 kernel-interface 'vpptap10'
Without this delay we get:
vyos@r14# commit
[ vpp interfaces vxlan vxlan10 ]
Traceback (most recent call last):
File "/usr/libexec/vyos/services/vyos-configd", line 139, in run_script
script.apply(c)
File "/usr/libexec/vyos//conf_mode/vpp_interfaces_vxlan.py", line 174, in apply
i.kernel_add()
File "/usr/lib/python3/dist-packages/vyos/vpp/interface/vxlan.py", line 85, in kernel_add
self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
File "/usr/lib/python3/dist-packages/vyos/vpp/control_vpp.py", line 79, in check_retval_wrapper
return_value = decorated_func(cls, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vyos/vpp/control_vpp.py", line 58, in api_safe_wrapper
return decorated_func(cls, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vyos/vpp/control_vpp.py", line 188, in lcp_pair_add
return self.__vpp_api_client.api.lcp_itf_pair_add_del_v2(**api_call_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 129, in __call__
return self._func(**kwargs)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 564, in f
return self._call_vpp(i, msg, multipart, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 853, in _call_vpp
raise VPPIOError(2, "VPP API client: read failed")
vpp_papi.vpp_papi.VPPIOError: [Errno 2] VPP API client: read failed
Diffstat (limited to 'src/conf_mode/vpp_interfaces_loopback.py')
| -rw-r--r-- | src/conf_mode/vpp_interfaces_loopback.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/conf_mode/vpp_interfaces_loopback.py b/src/conf_mode/vpp_interfaces_loopback.py index 56a825ae6..a96c379a1 100644 --- a/src/conf_mode/vpp_interfaces_loopback.py +++ b/src/conf_mode/vpp_interfaces_loopback.py @@ -17,6 +17,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import os +import time from vyos import ConfigError @@ -134,6 +135,9 @@ def apply(config): # Add kernel-interface (LCP) if interface is not exist if 'kernel_interface' in config and not is_interface(kernel_interface): + # Introduce a delay to address instability in the VPP API, which may fail to create the LCP + # or establish a connection. This should be reviewed and resolved in future releases. + time.sleep(2) i.kernel_add() call_dependents() |
