homelab: alte Kernel per Knopf entfernen; Systemplatte des Proxmox-Hosts im Blick
User-Wunsch 25.09.: Auf dem Host lagen 25 Kernel (~23 GB), 20 davon hält apt für entbehrlich (19,7 GB). - Ausführer: host.kernel_alt/kernel_bleiben aus apt-get -s autoremove (nur Kernel, nie laufender, nächster oder festgepinnter), host.systemplatte; neue Aktion kernel_aufraeumen bestimmt die Liste selbst und purgt. - Homelab-Teil: Lauf „kernel“ (Ergebnis aufgeraeumt), POST /api/homelab/ziele/pve/kernel-aufraeumen, Vorschlag mit Knopf, Wächter für die Systemplatte (80/90 %). - Oberfläche: Kachel Systemplatte, Knopf „Alte Kernel entfernen“ mit Rückfrage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
28888890ec
commit
7a456c8efa
@@ -148,6 +148,8 @@ def _ausfuehrer_spielen(stopp: threading.Event, neue_version: str, protokoll: li
|
||||
text = ""
|
||||
if auftrag["aktion"] == "snapshot":
|
||||
text = "snapshot=mc2-20260924-190000"
|
||||
elif auftrag["aktion"] == "kernel_aufraeumen":
|
||||
text = "entfernt=20\nfrei=18300000000\nRemoving proxmox-kernel-6.17.2-1-pve-signed …"
|
||||
elif auftrag["aktion"] == "bericht":
|
||||
neu = json.loads(json.dumps(BERICHT))
|
||||
next(g for g in neu["gaeste"] if g["vmid"] == 104)["app"]["version"] = neue_version
|
||||
@@ -451,3 +453,33 @@ def test_neuer_kernel_heisst_neustart(daten):
|
||||
host = {b["id"]: b for b in next(z for z in inventar.ziele()["ziele"] if z["id"] == "pve")["bausteine"]}
|
||||
assert host["neustart"]["grund"] == "Neuer Kernel 7.0.14-19-pve ist installiert, es läuft noch 7.0.14-12-pve."
|
||||
assert host["neustart"]["aktion"]["label"] == "Jetzt neu starten"
|
||||
|
||||
|
||||
def test_alte_kernel_nur_auf_knopfdruck(ausfuehrer):
|
||||
"""25.09.2026: 25 Kernel auf dem Host, 20 davon hielt apt für entbehrlich."""
|
||||
starten, protokoll, meldungen, verlauf = ausfuehrer
|
||||
starten("1.27.3")
|
||||
lauf = _auf_ende(updates.starten("pve", "kernel")["lauf"])
|
||||
assert (lauf["ergebnis"], protokoll) == ("aufgeraeumt", ["kernel_aufraeumen", "bericht"])
|
||||
assert meldungen[-1] == ("Proxmox-Host: 20 alte Kernel entfernt, 18,3 GB frei geworden.", False)
|
||||
assert verlauf[-1][2:4] == ("pve", "aufgeraeumt")
|
||||
from services.homelab import protokoll as prot
|
||||
assert prot._lauf(lauf, lambda *a: None) is None or True # Titel-Zweig existiert (kein KeyError)
|
||||
|
||||
|
||||
def test_ausfuehrer_waehlt_alte_kernel_selbst():
|
||||
a = _ausfuehrer_modul()
|
||||
simulation = """NOTE: This is only a simulation!
|
||||
Reading package lists...
|
||||
The following packages will be REMOVED:
|
||||
proxmox-kernel-6.14.11-2-pve-signed proxmox-kernel-7.0.14-12-pve-signed libfoo1
|
||||
Remv proxmox-kernel-6.14.11-2-pve-signed [6.14.11-2]
|
||||
Remv proxmox-kernel-7.0.14-12-pve-signed [7.0.14-12]
|
||||
Remv proxmox-kernel-7.0.14-5-pve-signed [7.0.14-5]
|
||||
Remv proxmox-kernel-6.17 [6.17.13-21]
|
||||
Remv libfoo1 [1.2-3]
|
||||
Remv pve-kernel-6.8.12-4-pve [6.8.12-4]
|
||||
"""
|
||||
behalten = {"7.0.14-12-pve", "7.0.14-19-pve"}
|
||||
assert a.alte_kernel(simulation, behalten) == [
|
||||
"proxmox-kernel-6.14.11-2-pve-signed", "proxmox-kernel-7.0.14-5-pve-signed", "pve-kernel-6.8.12-4-pve"]
|
||||
|
||||
Reference in New Issue
Block a user