Trying to set up config-sync on vyos 2025.08.12-0020-rolling. One router has a bunch of config, the other is newly installed and I'd like to sync the existing config over.
HTTP API is enabled on the new router (.251):
set service https allow-client address '10.xxx.xxx.252' set service https api keys id vyos01-configsync key 'xxxxxxx' set service https api rest set service https certificates certificate 'vyos02.xxx.xx' set service https listen-address '10.xxx.xxx.251' set service https port '10443' set service https tls-version '1.3'
Config-sync configured on the old one (.252):
set service config-sync mode 'load' set service config-sync secondary address '10.xxx.xxx.251' set service config-sync secondary key 'xxxxxx' set service config-sync secondary port '10443' set service config-sync section firewall set service config-sync section nat set service config-sync section policy set service config-sync section qos set service config-sync section service dns set service config-sync section system static-host-mapping
Make a test change and commit (delete an empty firewall list), returns error:
[edit firewall] david@vyos01# delete ipv4 name test [edit firewall] david@vyos01# commit INFO:vyos_config_sync:Config synchronization: Mode=load, Secondary=10.xxx.xxx.251 An error occurred: Expecting value: line 1 column 1 (char 0) ERROR:vyos_config_sync:An error occurred: Expecting value: line 1 column 1 (char 0)
On the secondary, I see a python traceback:
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: INFO: - "POST /configure-section HTTP/1.0" 500 Internal Server Error
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ERROR: Exception in ASGI application
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: Traceback (most recent call last):
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/encoders.py", line 324, in jsonable_encoder
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: data = dict(obj)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: TypeError: 'coroutine' object is not iterable
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: During handling of the above exception, another exception occurred:
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: Traceback (most recent call last):
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/encoders.py", line 329, in jsonable_encoder
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: data = vars(obj)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: TypeError: vars() argument must have __dict__ attribute
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: The above exception was the direct cause of the following exception:
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: Traceback (most recent call last):
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: result = await app( # type: ignore[func-returns-value]
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: return await self.app(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await super().__call__(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await self.middleware_stack(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: raise exc
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await self.app(scope, receive, _send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: raise exc
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await app(scope, receive, sender)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await self.middleware_stack(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await route.handle(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await self.app(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await wrap_app_handling_exceptions(app, request)(scope, receive, send)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: raise exc
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: await app(scope, receive, sender)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: response = await f(request)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/libexec/vyos/services/api/rest/routers.py", line 279, in custom_route_handler
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: raise e
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/libexec/vyos/services/api/rest/routers.py", line 272, in custom_route_handler
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: response: Response = await original_route_handler(request)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/routing.py", line 327, in app
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: content = await serialize_response(
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/routing.py", line 201, in serialize_response
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: return jsonable_encoder(response_content)
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: File "/usr/share/vyos-http-api-tools/lib/python3.11/site-packages/fastapi/encoders.py", line 332, in jsonable_encoder
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: raise ValueError(errors) from e
Aug 12 20:42:15 vyos02 vyos-http-api[13213]: ValueError: [TypeError("'coroutine' object is not iterable"), TypeError('vars() argument must have __dict__ attribute')]I've never tried config-sync before so it's possible I'm configuring it wrong, but this smells like a bug.