Add D455 sensor host and shared Node/Core preparation surface

This commit is contained in:
DCCONSTRUCTIONS
2026-09-05 22:27:07 +03:00
parent 3616acc648
commit b1aaa40508
41 changed files with 2293 additions and 19 deletions
+10 -7
View File
@@ -13,6 +13,7 @@ from cryptography import x509
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
from missioncore_plugin_sdk.v0alpha2.identity import ExecutionBinding
from . import sensors
from .trust import SCHEMA, CoreTrust, PairingError, node_request, parse_invitation, pem, public_id
@@ -205,7 +206,10 @@ class FleetRegistry:
"last_seen": row["last_seen"],
"host": row["inventory"],
"execution_binding": row["runtime"],
"devices": [],
"devices": row.get("sensor_state", {}).get("items", []),
"sensor_state": row.get(
"sensor_state", {"items": [], "operations": [], "preparation": None}
),
"notice": row["notice"],
"core_endpoint": row["binding"]["endpoint"],
}
@@ -366,12 +370,10 @@ class FleetRegistry:
if path != "/v1/node/heartbeat":
return 404, {"error": "Unknown operation"}
binding = ExecutionBinding.model_validate(value["execution_binding"])
if (
binding.node_id != node_id
or binding.platform.value != "linux"
or value.get("devices") != []
):
if binding.node_id != node_id or binding.platform.value != "linux":
return 400, {"error": "Invalid Node inventory"}
sensor_state = sensors.validate_inventory(value, node_id)
sensor_response = sensors.heartbeat(row, value)
host = value.get("host")
if (
not isinstance(host, dict)
@@ -385,6 +387,7 @@ class FleetRegistry:
receipt=None,
last_seen=time.time(),
inventory=host,
sensor_state=sensor_state,
runtime=binding.model_dump(mode="json"),
notice="",
)
@@ -396,4 +399,4 @@ class FleetRegistry:
}
row["binding"]["client_pem"] = self.trust.leaf(node_id, key)
self.save(row)
return 200, {"ok": True, "client_pem": row["binding"]["client_pem"]}
return 200, {"ok": True, "client_pem": row["binding"]["client_pem"], **sensor_response}