cbd0adca91
Stateful FastAPI lab with contract packs, Compose/Helm, Docker Hub release targets, and Pulumi coverage across all Engine series (GET/POST/PUT/DELETE/HEAD).
23 lines
703 B
Python
23 lines
703 B
Python
"""FastAPI dependencies for oVirt routes."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import Request
|
|
|
|
from app.db.pool import AsyncpgDatabase
|
|
from app.ovirt.auth import AuthContext, resolve_request_auth
|
|
from app.ovirt.errors import OVirtError
|
|
|
|
|
|
def get_db(request: Request) -> AsyncpgDatabase:
|
|
db = getattr(request.app.state, "database", None)
|
|
if db is None:
|
|
raise OVirtError("ServiceUnavailable", "Database not ready", status_code=503)
|
|
return db # type: ignore[return-value]
|
|
|
|
|
|
async def require_auth(request: Request) -> AuthContext:
|
|
db = get_db(request)
|
|
async with db.pool.acquire() as conn:
|
|
return await resolve_request_auth(conn, dict(request.headers))
|