Fix on-work-request-completed if invalid token is sent
debusine.client on-work-request-completed exits with a backtrace (see below). I've checked on Bookworm branch only.
Update: debusine.client is receiving:
'{"type": "connection_rejected", "reason": "No token header, token not associated to a user or not enabled"}' when connecting to:
ws://SERVER/api/ws/1.0/work-request/on-completed/.
For other operations:
carles@pinux:[on-work-request-completed]~/git/debusine$ python3 -m debusine.client --server exoscale show-work-request 1
Server rejected connection: HTTP 403. Token (178b67d943867bbe57450fedbd930fb5c11e5fcad80d0a36f0c9497aa8cce6fe) is invalid or disabled
carles@pinux:[on-work-request-completed]~/git/debusine$
This is correct (I've been removing tokens in the server while testing something else). What's not correct is showing the backtrace to the user:
carles@pinux:[worker-str]~/git/debusine$ python3 -m debusine.client --server exoscale on-work-request-completed echo
Requesting ws://89.145.160.104/api/ws/1.0/work-request/on-completed/
Connected! Waiting for notifications
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/carles/git/debusine/debusine/client/__main__.py", line 24, in <module>
entry_point()
File "/home/carles/git/debusine/debusine/client/__main__.py", line 20, in entry_point
main.execute()
File "/home/carles/git/debusine/debusine/client/cli.py", line 245, in execute
self._on_work_request_completed(
File "/home/carles/git/debusine/debusine/client/cli.py", line 472, in _on_work_request_completed
debusine.on_work_request_completed(
File "/home/carles/git/debusine/debusine/client/debusine.py", line 443, in on_work_request_completed
asyncio.run(
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/carles/git/debusine/debusine/client/debusine.py", line 380, in _wait_and_execute
await do_wait_for_messages(session)
File "/usr/lib/python3/dist-packages/tenacity/_asyncio.py", line 88, in async_wrapped
return await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/tenacity/_asyncio.py", line 47, in __call__
do = self.iter(retry_state=retry_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/tenacity/__init__.py", line 314, in iter
return fut.result()
^^^^^^^^^^^^
File "/usr/lib/python3.11/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/usr/lib/python3/dist-packages/tenacity/_asyncio.py", line 50, in __call__
result = await fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/carles/git/debusine/debusine/client/debusine.py", line 361, in do_wait_for_messages
OnWorkRequestCompleted.parse_obj(msg.json())
File "/usr/lib/python3/dist-packages/pydantic/main.py", line 527, in parse_obj
return cls(**obj)
^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pydantic/main.py", line 342, in __init__
raise validation_error
pydantic.error_wrappers.ValidationError: 3 validation errors for OnWorkRequestCompleted
work_request_id
field required (type=value_error.missing)
completed_at
field required (type=value_error.missing)
result
field required (type=value_error.missing)
carles@pinux:[worker-str]~/git/debusine$
Edited by Carles Pina i Estany