Skip to content

[Bug]: Не работает синхронизация с Remnawave 3 #10

Description

@kanewi11

Версия

v1.0.7

Способ установки

install.sh

Описание проблемы

Изначально устанваливал когда панель Remnawave была версии 2.*. После обновления панели Remnawave до версии 3.3.2 ошибка по моделям Pydantic

Шаги для воспроизведения

  1. Установить панель Remnawave версии 3.3.*
  2. Настроить интеграцию с ней
  3. Запустить синхронизацию пользователей.

Ожидаемое поведение

Пользователи должны были обновиться

Логи

`INFO:     172.18.0.4:47556 - "POST /users/sync HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/app/.venv/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 416, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.scope, self.receive, self.send
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/app/.venv/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 63, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/fastapi/applications.py", line 1163, in __call__
    await super().__call__(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/applications.py", line 90, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/app/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/middleware/cors.py", line 96, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/app/.venv/lib/python3.13/site-packages/starlette/middleware/cors.py", line 154, in simple_response
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/app/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/routing.py", line 660, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 2685, in app
    await route.handle(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 1766, in handle
    await self.original_router.handle(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 2740, in handle
    await included_router._handle_selected(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 1786, in _handle_selected
    await original_route.handle(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 1265, in handle
    await app(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 151, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/app/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/app/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 137, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 691, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/app/.venv/lib/python3.13/site-packages/fastapi/routing.py", line 345, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/src/users/router.py", line 54, in sync_from_remnawave
    res = await Users.sync_with_remnawave()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/src/users/service.py", line 82, in sync_with_remnawave
    rw_users = await getAllUsers()
               ^^^^^^^^^^^^^^^^^^^
  File "/app/src/rw/sdk.py", line 42, in getAllUsers
    response = await sdk.users.get_all_users(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/app/.venv/lib/python3.13/site-packages/remnawave/rapid/decorators.py", line 43, in wrapper
    return api._handle_response(response, response_class=response_class)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/remnawave/rapid/client.py", line 129, in _handle_response
    return response_class.model_validate(data["response"])
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/pydantic/main.py", line 732, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        obj,
        ^^^^
    ...<5 lines>...
        by_name=by_name,
        ^^^^^^^^^^^^^^^^
    )
    ^
pydantic_core._pydantic_core.ValidationError: 15 validation errors for GetAllUsersResponseDto
users.0.uuid
  Field required [type=missing, input_value={'id': 29, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.1.uuid
  Field required [type=missing, input_value={'id': 28, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.2.uuid
  Field required [type=missing, input_value={'id': 27, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.3.uuid
  Field required [type=missing, input_value={'id': 26, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.4.uuid
  Field required [type=missing, input_value={'id': 25, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.5.uuid
  Field required [type=missing, input_value={'id': 24, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.6.uuid
  Field required [type=missing, input_value={'id': 23, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.7.uuid
  Field required [type=missing, input_value={'id': 22, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.8.uuid
  Field required [type=missing, input_value={'id': 21, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.9.uuid
  Field required [type=missing, input_value={'id': 20, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.10.uuid
  Field required [type=missing, input_value={'id': 19, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.11.uuid
  Field required [type=missing, input_value={'id': 18, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.12.uuid
  Field required [type=missing, input_value={'id': 14, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.13.uuid
  Field required [type=missing, input_value={'id': 13, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing
users.14.uuid
  Field required [type=missing, input_value={'id': 12, 'shortUuid': '...irstConnectedAt': None}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing`

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions