refator_comm1

This commit is contained in:
Mateusz Gruszczyński
2025-10-18 22:45:56 +02:00
parent 8e3d191233
commit a841a1f9ad
3 changed files with 71 additions and 10 deletions

13
app.py
View File

@@ -537,6 +537,7 @@ def ws_observe(ws):
if not node:
ws.send(json.dumps({"type":"error","error":"could not resolve node"})); return
last_hash = None
seen_upids = set()
prev_node = node
@@ -549,6 +550,18 @@ def ws_observe(ws):
ws.send(json.dumps({"type":"moved","old_node":node,"new_node":cur_node,"meta":{"sid":sid,"vmid":vmid,"typ":typ}}))
prev_node, node = node, cur_node
# bieżący status VM/CT -> event "vm"
try:
base = f"/nodes/{node}/{typ}/{vmid}"
cur = get_json(["pvesh", "get", f"{base}/status/current"]) or {}
cur_hash = json.dumps(cur, sort_keys=True)
if cur_hash != last_hash:
last_hash = cur_hash
ws.send(json.dumps({"type":"vm","current":cur,"meta":{"sid":sid,"node":node,"typ":typ,"vmid":vmid}}))
except Exception:
pass
# zadania na aktualnym i poprzednim nodzie
nodes_to_scan = [node] + ([prev_node] if prev_node and prev_node != node else [])
for nX in nodes_to_scan:
tasks = get_json(["pvesh","get",f"/nodes/{nX}/tasks","-limit","50"]) or []