fix(vm): global eindeutige VNC-Displays (kein Doppel-Binding) + Gateway per-boot
- project_vms.add_vm: VNC-Display wird GLOBAL eindeutig vergeben (ueber alle Projekte). vnc_display<=0 oder belegtes Display → naechstes freies. Updates behalten ihr Display. Verhindert Port-Konflikt (5901) wenn mehrere VMs laufen. Getestet: vm1..3 → 1,2,3; Wunsch 2 (belegt) → 4; Update behaelt Display. - vm_register-Tool + Seed-Regel: vnc_display weglassen, wird auto-vergeben. - Gateway-IP: der Brain liest sie aus /proc/net/route bei JEDEM Boot frisch (Docker-IP-Aenderung nach Netz-Neuaufbau wird abgefangen); boot-Antwort enthaelt vnc_bind zur Transparenz. py_compile clean. Brain-only, Deploy: brain rebuild. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1063,7 +1063,7 @@ def project_vm_boot(project_id: str, name: str):
|
||||
boot_args += ["--vnc-bind", gw]
|
||||
rc, out, err = _ssh_aria_vm(*boot_args, timeout=40)
|
||||
return {"ok": rc == 0, "name": name, "vnc_port": 5900 + int(vm.get("vnc_display", 1)),
|
||||
"output": (out.strip() or err.strip())[:500]}
|
||||
"vnc_bind": gw or "127.0.0.1", "output": (out.strip() or err.strip())[:500]}
|
||||
|
||||
|
||||
@app.post("/projects/{project_id}/vms/{name}/stop")
|
||||
|
||||
Reference in New Issue
Block a user