refactor(api): remove DI callables, routers import common directly

This commit is contained in:
kodi
2026-02-28 10:02:42 +01:00
parent 61b2748854
commit 492edc2ec0
3 changed files with 40 additions and 98 deletions
+15 -16
View File
@@ -4,6 +4,13 @@ import json
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
from common import (
_map_pod_to_unit,
_podman_action_post,
_podman_get_json,
_podman_get_text,
_systemd_then_podman,
)
_SESSION = None
@@ -97,15 +104,7 @@ def init_containers_router(
session,
podman_api_base: str,
workloads_dir: str,
podman_get_json,
podman_get_text,
podman_post,
podman_action_post,
podman_delete,
systemctl_func,
systemd_then_podman,
map_pod_to_unit,
build_pod_to_containers_map,
) -> APIRouter:
router = APIRouter(tags=["containers"])
@@ -203,7 +202,7 @@ def init_containers_router(
return ok
# A) echte containers (runtime)
real = podman_get_json(f"{podman_api_base}/libpod/containers/json?all=true")
real = _podman_get_json(session, f"{podman_api_base}/libpod/containers/json?all=true")
for c in real:
_ensure_container_status_field(c)
@@ -231,7 +230,7 @@ def init_containers_router(
else:
# 2) Extra: zit container in een pod die via systemd (kube/quadlet) draait?
podname = (c.get("PodName") or "").strip()
pod_unit = map_pod_to_unit(podname) if podname else None
pod_unit = _map_pod_to_unit(podname) if podname else None
if pod_unit and _unit_is_active(pod_unit):
c["_dashboard_source"] = "systemd"
@@ -260,16 +259,16 @@ def init_containers_router(
def list_containers():
# Ook hier ?all=true voor gestopte containers
url = f"{podman_api_base}/libpod/containers/json?all=true"
return podman_get_json(url)
return _podman_get_json(session, url)
@router.get("/containers/inspect/{name}")
def inspect_container(name: str):
return podman_get_json(f"{podman_api_base}/libpod/containers/{name}/json")
return _podman_get_json(session, f"{podman_api_base}/libpod/containers/{name}/json")
@router.get("/containers/logs/{name}")
def get_container_logs(name: str):
# We vragen de laatste 100 regels op (tail=100)
txt = podman_get_text(f"{podman_api_base}/libpod/containers/{name}/logs?stdout=true&stderr=true&tail=100")
txt = _podman_get_text(session, f"{podman_api_base}/libpod/containers/{name}/logs?stdout=true&stderr=true&tail=100")
# Podman logs komen vaak met wat binaire metadata, we decoden dit als tekst
return {"logs": txt}
@@ -322,7 +321,7 @@ def init_containers_router(
def get_dashboard():
# Legacy dashboard view (keep shape)
try:
api_containers = podman_get_json(f"{podman_api_base}/libpod/containers/json?all=true")
api_containers = _podman_get_json(session, f"{podman_api_base}/libpod/containers/json?all=true")
except:
api_containers = []
items = []
@@ -357,7 +356,7 @@ def init_containers_router(
return None
def _podman_call(systemd_res):
res = podman_action_post("containers", name, action)
res = _podman_action_post(session, podman_api_base, "containers", name, action)
if res.status_code in (200, 204):
return {"method": "podman", "name": name, "cmd": f"podman {action} {name}", "status_code": res.status_code}
@@ -383,6 +382,6 @@ def init_containers_router(
return {"method": "podman", "name": name, "cmd": f"podman {action} {name}", "status_code": res.status_code}
return systemd_then_podman(_systemd_call, _podman_call)
return _systemd_then_podman(_systemd_call, _podman_call)
return router