diff --git a/gns3server/api/server.py b/gns3server/api/server.py index 0eda056a..1529c065 100644 --- a/gns3server/api/server.py +++ b/gns3server/api/server.py @@ -25,6 +25,7 @@ from fastapi import FastAPI, Request from starlette.exceptions import HTTPException as StarletteHTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse +from sqlalchemy.exc import SQLAlchemyError from uvicorn.main import Server as UvicornServer from gns3server.controller.controller_error import ( @@ -160,6 +161,15 @@ async def http_exception_handler(request: Request, exc: StarletteHTTPException): ) +@app.exception_handler(SQLAlchemyError) +async def sqlalchemry_error_handler(request: Request, exc: SQLAlchemyError): + log.error(f"Controller database error: {exc}") + return JSONResponse( + status_code=500, + content={"message": "Database error detected, please check logs to find details"}, + ) + + @app.middleware("http") async def add_extra_headers(request: Request, call_next): start_time = time.time()