feat(approvals): integrate approval-hold detection and auto-remediation into fleet alert, loop diagnostics, and muse API
This commit is contained in:
+11
-1
@@ -14,6 +14,7 @@ CLI:
|
||||
netvm-registry.py # prints "node:port" lines for active nodes
|
||||
netvm-registry.py <node> # prints just the port (for bash)
|
||||
"""
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
@@ -45,9 +46,12 @@ def load(registry_path=None):
|
||||
port_n = int(port)
|
||||
except ValueError:
|
||||
continue
|
||||
tag = hashlib.sha256(node.encode()).hexdigest()[:8]
|
||||
idx = int(tag[:3], 16) % 200 + 10
|
||||
peer_ip = f"10.201.{idx}.2"
|
||||
nodes[node] = {"netns": netns, "egress_ip": egress,
|
||||
"cdp_port": port_n, "status": status,
|
||||
"agent": agent}
|
||||
"agent": agent, "peer_ip": peer_ip}
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
return nodes
|
||||
@@ -59,6 +63,12 @@ def port_for(node, registry_path=None):
|
||||
return rec["cdp_port"] if rec else None
|
||||
|
||||
|
||||
def peer_ip_for(node, registry_path=None):
|
||||
"""CDP peer IP for a node, or None if the node isn't registered."""
|
||||
rec = load(registry_path).get(node)
|
||||
return rec["peer_ip"] if rec else None
|
||||
|
||||
|
||||
def active_nodes(registry_path=None):
|
||||
"""{node: port} for nodes with status == active."""
|
||||
return {n: r["cdp_port"] for n, r in load(registry_path).items()
|
||||
|
||||
Reference in New Issue
Block a user