Feature: Node-übergreifender Auto-Update-Scheduler für VM/CT (eigenes System, Modal mit Zeit pro Node) #174
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Ein eigenes, node-uebergreifendes Auto-Update-System fuer VM/CT-Updates — getrennt vom bestehenden Scheduler (
ScheduledJob), mit eigenem Modell, Modal und Tick. Zentrales Konfig-Modal zeigt alle Nodes; pro Node eine eigene Zeit definierbar.Abgrenzung / Wiederverwendung (WICHTIG)
Eigenes System (eigenes Model/Router/Modal), ABER bewusst die vorhandene, bewaehrte Mechanik nutzen statt neu zu erfinden:
server/scheduler.py, laeuft 1x/Minute,croniter==3.0.0vorhanden) eine eigene Tick-Funktion_auto_update_tick()ergaenzen — KEIN zweiter Background-Loop.bulk-jobverwenden (update_router.py_run_bulk_job/_bulk_jobs,start_bulk_job) — NICHT eine eigene Update-Logik bauen. (Bezug #123: ein einziger Update-Pfad.)Datenmodell — neue Tabelle
node_auto_update(eine Zeile pro Node)node_name(PK/unique)enabled(bool)frequencyenum:daily|weeklyweekday(0-6, nur bei weekly)time_hhmm(z. B. "03:00") — pro Node eigene Zeitscopeenum:all(alle VMs+CTs) |security(nur Security-Updates) ← Auswahl 3vmid_filterJSONB: optionale Liste einzelner VMIDs/CTs (leer = ganze Node) ← Auswahl 4 (einzelne waehlbar)reboot_policy: fixnotify_only(kein Auto-Reboot; Reboot-Notwendigkeit nur melden)last_run_at,last_status,last_summary(JSONB: pro VM ok/fail/reboot_required)time_hhmm+frequency+weekday→ Cron-Expression ableiten (fuer den Tick).Tick-Logik (
_auto_update_tick)enabledNode-Configs lesen, deren naechster Lauf faellig ist.scope(all/security) undvmid_filter.bulk-jobstarten (programmatisch, nicht via HTTP).reboot_required→ inlast_summarymarkieren + notify()-Eventauto_update_reboot_required(node + betroffene VMs).last_run_at/status/summary; notify-Eventauto_update_done(ok/fail-Counts).Frontend — uebergreifendes Modal "Auto-Update planen"
Backend-Router
auto_update_router.pyGET /auto-update(alle Node-Configs + Nodes ohne Config als "aus")PUT /auto-update/{node_name}(config setzen/aktualisieren)POST /auto-update/{node_name}/run-now(sofort ausloesen, gleicher Pfad wie Tick)require_role("operator")+check_node_scope(Mandanten!) — pro Node-Config darf nur, wer die Node im Scope hat.Akzeptanz
bulk-job.Bezug
#123 (kanonischer bulk-job-Pfad — Voraussetzung/Wiederverwendung), Scheduler (
scheduler.py, croniter), #108 (Tenant-Scope-Muster fuer den Router), notify-Pipeline.Branch
feat/node-auto-update-scheduler