feat(admin): Backend-Wechsel + Gateway-Neustart aus dem Admin-Panel — Plan-Schritt 3
- admin_llm: switch_backend() mit strikter Allowlist (backend ∈ {ollama,llamacpp},
Modell gegen 'ollama list' + Format-Regex), detached (Self-Restart-sicher),
niemals shell=True. restart_gateway_detached() für systemd-User-Dienst.
- switch-llm.sh: flock-Lock gegen parallele Backend-Wechsel (Exit 75).
- Endpunkte POST /api/admin/llm/backend (422 bei ungültig) und
POST /api/admin/gateway/restart (require_admin).
- Status-Tab: Steuerung (Backend-Dropdown + Modell, Wechseln/Neustart) mit
Poll bis das Gateway wieder antwortet; Hinweis auf systemd-Voraussetzung.
- Tests: Auth + Allowlist (Shell-Metazeichen/unbekanntes Modell -> 422). 165 grün.
- Doku §7.5.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
97ae0a5d34
commit
5b6f0f8ef2
7 changed files with 219 additions and 6 deletions
|
|
@ -17,6 +17,16 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
ENV_FILE="$ROOT_DIR/.env"
|
||||
|
||||
# Lock gegen parallele Backend-Wechsel (z. B. zwei Admin-Klicks gleichzeitig).
|
||||
# flock haelt das Lock fuer die gesamte Laufzeit dieses Skripts; ein zweiter
|
||||
# Aufruf scheitert sofort mit Exit 75 (-> Endpoint meldet "läuft bereits").
|
||||
LOCK_FILE="${LOCK_FILE:-/tmp/va-llm-switch.lock}"
|
||||
exec 9>"$LOCK_FILE"
|
||||
if ! flock -n 9; then
|
||||
echo "[!] Ein Backend-Wechsel laeuft bereits (Lock: $LOCK_FILE)." >&2
|
||||
exit 75
|
||||
fi
|
||||
|
||||
OLLAMA_BASE_URL="${OLLAMA_BASE_URL:-http://127.0.0.1:11434/v1}"
|
||||
OLLAMA_MODEL="${OLLAMA_MODEL:-gemma3:latest}"
|
||||
LLAMACPP_BASE_URL="${LLAMACPP_BASE_URL:-http://127.0.0.1:8001/v1}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue