feat: cross-node consumption edges over the mesh
Carry each deployment's `requires` (deployment refs, no secrets) from config → registry → the mesh MQTT payload, and expose it on /mesh/deployments. The System Map resolves a remote deployment's ref against the provider set across nodes (same machine → local provider → other machine) and draws a dashed cross-node edge. This is the multi-node payoff: e.g. primer's castle-api → civil's mqtt.
This commit is contained in:
@@ -67,6 +67,9 @@ def _registry_to_json(registry: NodeRegistry) -> str:
|
||||
entry["tcp_port"] = comp.tcp_port
|
||||
if getattr(comp, "base_url", None):
|
||||
entry["base_url"] = comp.base_url
|
||||
# requires — deployment refs (no secrets), so peers can draw cross-node deps.
|
||||
if getattr(comp, "requires", None):
|
||||
entry["requires"] = comp.requires
|
||||
data["deployed"][NodeRegistry.key(comp.kind, name)] = entry
|
||||
|
||||
return json.dumps(data)
|
||||
@@ -101,6 +104,7 @@ def _json_to_registry(payload: str) -> NodeRegistry:
|
||||
managed=comp_data.get("managed", False),
|
||||
tcp_port=comp_data.get("tcp_port"),
|
||||
base_url=comp_data.get("base_url"),
|
||||
requires=comp_data.get("requires", []),
|
||||
)
|
||||
return NodeRegistry(node=node, deployed=deployed)
|
||||
|
||||
|
||||
@@ -126,6 +126,9 @@ def mesh_deployments() -> dict:
|
||||
"base_url": getattr(d, "base_url", None),
|
||||
"subdomain": d.subdomain,
|
||||
"endpoints": _endpoints_of_registry(d),
|
||||
"requires": [
|
||||
r.get("ref") for r in (getattr(d, "requires", None) or []) if r.get("ref")
|
||||
],
|
||||
}
|
||||
)
|
||||
return {"deployments": out}
|
||||
|
||||
Reference in New Issue
Block a user