diff --git a/pyproject.toml b/pyproject.toml index 41a2cb3..20bd0fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ classifiers = [ ] dependencies = [ "ansi2html", - "fastapi", + "fastapi>=0.93", "gunicorn", "httpx", "jinja2", diff --git a/src/runboat/app.py b/src/runboat/app.py index 11c317d..20f052e 100644 --- a/src/runboat/app.py +++ b/src/runboat/app.py @@ -1,23 +1,27 @@ +from collections.abc import AsyncGenerator +from contextlib import asynccontextmanager + from fastapi import FastAPI from . import __version__, api, controller, k8s, webhooks, webui + +@asynccontextmanager +async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: + await k8s.load_kube_config() + await controller.controller.start() + yield + await controller.controller.stop() + + app = FastAPI( - title="Runboat", description="Runbot on Kubernetes ☸️", version=__version__ + title="Runboat", + description="Runbot on Kubernetes ☸️", + version=__version__, + lifespan=lifespan, ) app.include_router(api.router, prefix="/api/v1", tags=["api"]) app.include_router(webhooks.router, tags=["webhooks"]) app.include_router(webui.router, tags=["webui"]) webui.mount(app) - - -@app.on_event("startup") -async def startup() -> None: - await k8s.load_kube_config() - await controller.controller.start() - - -@app.on_event("shutdown") -async def shutdown() -> None: - await controller.controller.stop()