refactor(api): move /test-hybrid into app_system router

This commit is contained in:
kodi
2026-02-28 11:58:55 +01:00
parent e61f2ccf76
commit 1226b0654e
4 changed files with 32 additions and 29 deletions
+1 -27
View File
@@ -1,4 +1,3 @@
import os
import subprocess import subprocess
from app_images import init_images_router from app_images import init_images_router
from app_files import init_files_router from app_files import init_files_router
@@ -9,7 +8,6 @@ from app_system import init_system_router
from fastapi import FastAPI, HTTPException from fastapi import FastAPI, HTTPException
import requests_unixsocket import requests_unixsocket
from common import ( from common import (
_podman_get_json as _common_podman_get_json,
_systemctl as _common_systemctl, _systemctl as _common_systemctl,
) )
import uvicorn import uvicorn
@@ -32,7 +30,7 @@ def _run_systemctl_action(action: str, unit: str):
# --- ROUTERS --- # --- ROUTERS ---
# Images API lives in dedicated modules to keep this file from growing further. # Images API lives in dedicated modules to keep this file from growing further.
app.include_router(init_system_router(SESSION, PODMAN_API_BASE)) app.include_router(init_system_router(SESSION, PODMAN_API_BASE, WORKLOADS_DIR))
app.include_router(init_images_router(SESSION, PODMAN_API_BASE)) app.include_router(init_images_router(SESSION, PODMAN_API_BASE))
app.include_router(init_files_router(SESSION, PODMAN_API_BASE, WORKLOADS_DIR)) app.include_router(init_files_router(SESSION, PODMAN_API_BASE, WORKLOADS_DIR))
app.include_router(init_networks_router(SESSION, PODMAN_API_BASE)) app.include_router(init_networks_router(SESSION, PODMAN_API_BASE))
@@ -50,30 +48,6 @@ app.include_router(init_pods_router(
)) ))
@app.get("/test-hybrid")
def test_hybrid():
# 1. Check filesystem
try:
bestanden = []
for root, _, files in os.walk(WORKLOADS_DIR):
for f in files:
bestanden.append(os.path.join(root, f))
except Exception as e:
bestanden = f"FS Fout: {str(e)}"
# 2. Check Podman API
try:
api_containers = _common_podman_get_json(SESSION, f"{PODMAN_API_BASE}/libpod/containers/json?all=true")
except Exception as e:
api_containers = f"API Fout: {str(e)}"
return {
"bestanden_gevonden": bestanden if isinstance(bestanden, list) else [],
"api_containers_aantal": len(api_containers) if isinstance(api_containers, list) else -1,
"api_raw_sample": api_containers[0] if isinstance(api_containers, list) and api_containers else api_containers,
}
@app.post("/daemon-reload") @app.post("/daemon-reload")
def api_daemon_reload(): def api_daemon_reload():
try: try:
+26 -1
View File
@@ -1,9 +1,11 @@
import os
import subprocess import subprocess
from fastapi import APIRouter from fastapi import APIRouter
from common import _podman_get_json as _common_podman_get_json
def init_system_router(session, podman_api_base: str) -> APIRouter: def init_system_router(session, podman_api_base: str, workloads_dir: str) -> APIRouter:
router = APIRouter(tags=["system"]) router = APIRouter(tags=["system"])
@router.get("/health") @router.get("/health")
@@ -40,4 +42,27 @@ def init_system_router(session, podman_api_base: str) -> APIRouter:
"systemd_user": {"reachable": systemd_reachable}, "systemd_user": {"reachable": systemd_reachable},
} }
@router.get("/test-hybrid")
def test_hybrid():
# 1. Check filesystem
try:
bestanden = []
for root, _, files in os.walk(workloads_dir):
for f in files:
bestanden.append(os.path.join(root, f))
except Exception as e:
bestanden = f"FS Fout: {str(e)}"
# 2. Check Podman API
try:
api_containers = _common_podman_get_json(session, f"{podman_api_base}/libpod/containers/json?all=true")
except Exception as e:
api_containers = f"API Fout: {str(e)}"
return {
"bestanden_gevonden": bestanden if isinstance(bestanden, list) else [],
"api_containers_aantal": len(api_containers) if isinstance(api_containers, list) else -1,
"api_raw_sample": api_containers[0] if isinstance(api_containers, list) and api_containers else api_containers,
}
return router return router
+4
View File
@@ -83,6 +83,10 @@ header{
box-shadow: var(--shadow); box-shadow: var(--shadow);
overflow:hidden; overflow:hidden;
} }
/* Allow container actions dropdown to render outside the card bounds */
.card--menu-overflow{
overflow: visible;
}
.card.half{min-height: 240px;} .card.half{min-height: 240px;}
.cardHeader{ .cardHeader{
display:flex; align-items:center; justify-content:space-between; display:flex; align-items:center; justify-content:space-between;
+1 -1
View File
@@ -85,7 +85,7 @@
</div> </div>
</div> </div>
<div id="view-containers" class="grid" style="display:none"> <div id="view-containers" class="grid" style="display:none">
<div class="card" style="grid-column: 1 / -1;"> <div class="card card--menu-overflow" style="grid-column: 1 / -1;">
<div class="cardHeader"> <div class="cardHeader">
<div class="cardTitle">Containers</div> <div class="cardTitle">Containers</div>
<div class="flex"> <div class="flex">