Welle 1 · Nachschliff: Proxmox-Kachel zählt die Gäste wie die Homelab-Karte, der eigene Container heißt lesbar
„8 von 8 Gästen an“ neben „7 Gäste“: Die Kachel zählte den eigenen Container (Etikett mc2) mit, die Karte nicht. In „Sicherungen je Gerät“ heißt er „Homelab Orchestrator (dieser Container)“ statt homelab-orchestrator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
371dcc7ce3
commit
f2bffc7203
@@ -13,6 +13,7 @@ höchstens alle zwei Minuten gefragt.
|
||||
import logging
|
||||
|
||||
from services.homelab import adguard, apps, arcane, zertifikate
|
||||
from services.homelab.inventar import EIGENES_ETIKETT
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
NPM = {"npmplus", "nginxproxymanager"}
|
||||
@@ -36,7 +37,9 @@ def _npm(vmid: int) -> dict | None:
|
||||
def fuer_bericht(bericht: dict) -> dict[str, dict]:
|
||||
"""Ziel-ID → Kennzahl. Ein Fehler bei einem Gerät kostet nur dessen Zahl."""
|
||||
zahlen: dict[str, dict] = {}
|
||||
gaeste = [g for g in bericht.get("gaeste") or [] if isinstance(g, dict) and "vmid" in g]
|
||||
# Der eigene Container (Etikett „mc2“) zählt nicht mit — wie überall, wo die Geräte des Homelabs stehen.
|
||||
gaeste = [g for g in bericht.get("gaeste") or [] if isinstance(g, dict) and "vmid" in g
|
||||
and EIGENES_ETIKETT not in (g.get("etiketten") or [])]
|
||||
if gaeste:
|
||||
laufend = sum(1 for g in gaeste if g.get("status") == "running")
|
||||
zahlen["pve"] = {"text": f"{laufend} von {len(gaeste)} Gästen an"}
|
||||
|
||||
@@ -375,8 +375,10 @@ def _je_geraet(bericht: dict, ziele: dict, fehlend: set[str], ohne: set[int], pr
|
||||
zuletzt = max([t for z in ziele.values() if (t := (z.get("neueste") or {}).get(vmid))], default=None)
|
||||
pruefungen = [d["geprueft"] for d in details if d.get("geprueft")]
|
||||
eigene_probe = ((probe or {}).get("gaeste") or {}).get(vmid)
|
||||
eigener = EIGENES_ETIKETT in (g.get("etiketten") or [])
|
||||
zeilen.append({
|
||||
"ziel": _zid(g), "name": _name(g), "vmid": g["vmid"], "auftrag": g["vmid"] not in ohne,
|
||||
"ziel": _zid(g), "name": "Homelab Orchestrator (dieser Container)" if eigener else _name(g),
|
||||
"vmid": g["vmid"], "auftrag": g["vmid"] not in ohne,
|
||||
"zuletzt": zuletzt, "frisch": bool(zuletzt) and g["vmid"] not in ohne and _zid(g) not in fehlend,
|
||||
"geprueft": max(pruefungen, key=lambda p: (p["zeit"], p["sicherung"]), default=None),
|
||||
"defekt": sorted({t for d in details for t in d.get("defekt") or []}),
|
||||
|
||||
Reference in New Issue
Block a user