feat: real-time server CRUD sync and pve CLI auto-install
Some checks failed
Backend Tests / pytest (Python 3.12) (push) Has been cancelled
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:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user