feat: real-time server CRUD sync and pve CLI auto-install
Some checks failed
Backend Tests / pytest (Python 3.12) (push) Has been cancelled

Backend:
- servers.py: instant connectivity check + VM cache sync after create/update;
  broadcast server_added/updated/deleted events via WebSocket
- websocket_manager: add broadcast_event() helper for global fire-and-forget events

Frontend:
- use-nodes: invalidate topology, VM list and resources after server create/update/delete
- use-realtime-sync: new hook with useGlobalRealtimeSync subscribing to server_*
  WS events and invalidating relevant React Query caches
- AppLayout: mount useGlobalRealtimeSync globally

Deploy:
- deploy.sh: auto-install pve CLI during main/quick deploy (idempotent, --auto mode)
This commit is contained in:
markmorado
2026-05-11 05:31:52 +02:00
parent 742ff27fb4
commit 453c18f192
6 changed files with 284 additions and 11 deletions

View File

@@ -167,3 +167,13 @@ def broadcast_task_update(user_id: int, event_type: str, task_data: dict) -> Non
"""
payload = {"type": event_type, "task": task_data}
run_async_safe(ws_manager.send_to_user(user_id, payload))
def broadcast_event(event_type: str, **fields) -> None:
"""
Fire-and-forget global broadcast of an event to all connected WebSocket
clients from a sync context. Used to push real-time invalidations such as
`server_added`, `server_updated`, `server_deleted`.
"""
payload = {"type": event_type, **fields}
run_async_safe(ws_manager.broadcast(payload))