Zwei parallele Node-Agent-Implementierungen (Python + Rust) konsolidieren #2
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?
Problem
Es existieren zwei vollstaendige Node-Agent-Implementierungen, die dieselbe Aufgabe erfuellen und parallel gepflegt werden:
Node-Agent/theprox_agent/-> viabundle.pyzuNode-Agent/node_agent.py(~5000 Zeilen,proxmox_api.pyallein ~79 KB)Node-Agent/src/(~5000 Zeilen, Binarytheprox-node-agent-x86_64)install_scriptdefaultet auf Python:server/main.py:282(variant: str = "python"), Rust nur per?variant=rust. Beide Install-Pfade sind inmain.pyvorhanden (Python ~Z.820-866, Rust_make_install_script_rust~Z.887-941).Warum
Doppelte Pflege von ~10k Zeilen fuer identische Funktion. Drift-Risiko: ein Command kann sich im Rust-Dispatcher (
Node-Agent/src/dispatcher.rs) anders verhalten als im Python-Dispatcher (theprox_agent/_agent_dispatcher.py), je nachdem welche Variante auf dem Node laeuft.Fix-Plan
variant-Parameter und den unterlegenen Install-Pfad entfernen, Default umstellen.Akzeptanzkriterien
install_scriptohnevariant-Weiche.Gap-Analyse Rust vs. Python — Ergebnis: Rust ist bevorzugbar
Command-Coverage-Diff (Python
theprox_agent/_agent_dispatcher.py= 78 Actions vs. Rustsrc/):Davon waren 2 aktiv vom Backend aufgerufen und liefen auf dem Rust-Agent ins
"not implemented":node.refresh←monitor_router.py:145(Refresh-Button)rdp.get_vm_ip←rdp_router.py:54,tunnel_router.py:47(RDP-IP-Auflösung)Die anderen 4 waren reine Verwaltungslücken:
vm.config.set,storage.delete,backup.create_job,backup.update_job.Alle 6 geschlossen → Branch
feat/rust-agent-parityCommit implementiert alle sechs, pattern-gleich zu den bestehenden Handlern:
src/commands.rs(sync: qm set / pvesh delete|create|set / qm agent network)node.refreshbraucht Scan-Range ausAgentState, daher sauber durchcommands_async.rs+dispatcher.rsdurchgereicht (nutzt neuedata::collect_refresh).Diff: 4 Dateien, +138/-1. PR: main...feat/rust-agent-parity
⚠️ Vor Merge nötig (cc / lokal)
cargo build— in meiner Umgebung war keine Rust-Toolchain verfügbar, der Code ist nicht compile-verifiziert. Pattern-genau geschrieben, aber bitte gegenbauen.cargo clippydrüberlaufen lassen.Danach: Konsolidierung
Sind die 6 verifiziert, ist Rust funktional vollständig → Python-Variante (
theprox_agent/,node_agent.py,bundle.py,vm_buffer.py) +variant=python-Pfad inmain.pyentfernen, Default auf Rust. Damit erledigen sich auch #5 (generiertes Bundle) und #6 teilweise.