Flowminder / FlowKit

FlowKit: Flowminder CDR analytics toolkit
https://flowminder.github.io/FlowKit/
Mozilla Public License 2.0
86 stars 20 forks source link

FlowAPI: 500 error on GET /api/0/spec/openapi.json #6686

Closed jc-harrison closed 4 days ago

jc-harrison commented 4 days ago

In FlowAPI 1.27.0:

ERROR in app: Exception on request GET /api/0/spec/openapi.json
Traceback (most recent call last):
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/quart/app.py", line 1403, in handle_request
    return await self.full_dispatch_request(request_context)
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/quart/app.py", line 1441, in full_dispatch_request
    result = await self.handle_user_exception(error)
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/quart/app.py", line 1029, in handle_user_exception
    raise error
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/quart/app.py", line 1439, in full_dispatch_request
    result = await self.dispatch_request(request_context)
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/quart/app.py", line 1535, in dispatch_request
    return await self.ensure_async(handler)(**request_.view_args)  # type: ignore
  File "/FlowKit-1.27.0/flowapi/flowapi/api_spec.py", line 86, in get_api_spec
    spec = await get_spec(request.socket, request.request_id)
  File "/FlowKit-1.27.0/flowapi/flowapi/api_spec.py", line 49, in get_spec
    *schema_to_scopes(spec.to_dict()),
  File "/FlowKit-1.27.0/flowapi/flowapi/permissions.py", line 134, in schema_to_scopes
    resolved_queries = ResolvingParser(spec_string=dumps(schema)).specification[
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/prance/__init__.py", line 285, in __init__
    BaseParser.__init__(self, url=url, spec_string=spec_string, lazy=lazy, **kwargs)
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/prance/__init__.py", line 110, in __init__
    self.backend = self.options.get("backend", default_validation_backend())
  File "/root/.local/share/virtualenvs/flowapi-EpSznUqu/lib/python3.8/site-packages/prance/util/__init__.py", line 63, in default_validation_backend
    raise RuntimeError(
RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator".
greenape commented 4 days ago

I'm guessing that it was https://github.com/Flowminder/FlowKit/commit/5fc9275ce6feab0d3b1f5225f12af62be4b2a61e and clearly we should've caught that with a test

jc-harrison commented 4 days ago

Should be caught by https://github.com/Flowminder/FlowKit/blob/master/integration_tests/tests/flowapi_tests/test_api_spec.py (which runs flowapi outside docker), so we must be getting a mismatch between the integration tests env and the env in the FlowAPI image.

jc-harrison commented 4 days ago

Looks like this is due to https://github.com/Flowminder/FlowKit/issues/6006 again