feat(deploy): add typed command transport releases

This commit is contained in:
Codex
2026-08-12 22:57:20 +03:00
parent 4b73a15765
commit 3ea2133bcd
10 changed files with 1028 additions and 75 deletions
@@ -104,6 +104,25 @@ def device_manager_release_v1_descriptor(
}
def device_manager_release_v3_descriptor(
release_id="device-manager-release-v3-unit-001",
*,
predecessor_patch="device-manager-release-20260811-010",
predecessor_sha="d" * 64,
):
return {
"schemaVersion": "nodedc.device-plane.device-manager-release.v3",
"releaseId": release_id,
"action": "upgrade",
"predecessor": {
"kind": "release",
"patchId": predecessor_patch,
"artifactSha256": predecessor_sha,
},
**RUNNER.expected_device_plane_manager_release_v3_boundaries(),
}
class DeviceManagerControlPlaneArtifactsTest(unittest.TestCase):
def build(self, script, patch_id, artifact_dir):
environment = os.environ.copy()
@@ -253,6 +272,57 @@ class DeviceManagerControlPlaneArtifactsTest(unittest.TestCase):
self.assertEqual(checks[0]["expected_json"]["managementApi"], "enabled")
self.assertEqual(checks[0]["expected_json"]["discoveryIngest"], "enabled")
def test_device_manager_release_v3_is_exact_typed_and_secret_free(self):
patch_id = "device-manager-release-v3-unit-001"
manifest, entries, names, result = self.assert_deterministic_artifact(
"build-device-manager-control-plane-artifact.mjs",
patch_id,
RUNNER.DEVICE_PLANE_MANAGER_RELEASE_V3_ENTRIES,
)
self.assertEqual(manifest["component"], "device-plane")
self.assertEqual(
RUNNER.component_services("device-plane", entries),
("device-manager",),
)
self.assertEqual(result["services"], ["device-manager"])
self.assertIn(
"payload/deployment/device-manager-release-v3.json",
names,
)
self.assertFalse(
any(name.startswith("payload/services/device-control-core/") for name in names)
)
self.assertFalse(
any(name.startswith("payload/packages/") for name in names)
)
self.assertFalse(any(name.endswith(".test.mjs") for name in names))
descriptor = device_manager_release_v3_descriptor(patch_id)
self.assertIs(
RUNNER.validate_device_plane_manager_release_descriptor(
descriptor,
schema_version=(
"nodedc.device-plane.device-manager-release.v3"
),
boundaries=(
RUNNER.expected_device_plane_manager_release_v3_boundaries()
),
expected_release_id=patch_id,
),
descriptor,
)
self.assertEqual(descriptor["commandTransport"], "typed-service-ping-v1")
self.assertEqual(
descriptor["commandCatalog"],
"allowlisted-adapter-typed-commands-only",
)
self.assertEqual(descriptor["gelios"], "untouched-legacy-only")
self.assertTrue(
RUNNER.is_device_plane_manager_release_v3_slice(
"device-plane",
entries,
)
)
def test_edge_core_channel_bootstrap_is_core_only_and_secret_free(self):
manifest, entries, names, result = self.assert_deterministic_artifact(
"build-device-edge-core-channel-bootstrap-artifact.mjs",
@@ -529,6 +599,42 @@ class DeviceManagerControlPlaneArtifactsTest(unittest.TestCase):
core_network_mode="private-egress",
)
def test_control_core_release_v2_is_typed_core_only(self):
patch_id = "device-control-core-release-v2-unit-001"
manifest, entries, names, result = self.assert_deterministic_artifact(
"build-device-control-core-release-artifact.mjs",
patch_id,
RUNNER.DEVICE_PLANE_CONTROL_CORE_RELEASE_V2_ENTRIES,
)
self.assertEqual(manifest["component"], "device-plane")
self.assertEqual(result["services"], ["device-control-core"])
self.assertIn(
"payload/deployment/device-control-core-release-v2.json",
names,
)
self.assertFalse(any("docker-compose" in name for name in names))
self.assertEqual(
RUNNER.component_services("device-plane", entries),
("device-control-core",),
)
descriptor = RUNNER.expected_device_plane_control_core_release_descriptor(
patch_id,
{
"kind": "release",
"patchId": "device-control-core-release-20260812-024",
"artifactSha256": (
"a289e909283109642e6bba3d9822a31f63423cfe0bbcd52705979681bd2bc793"
),
},
schema_version="v2",
)
self.assertEqual(descriptor["commandTransport"], "typed-service-ping-v1")
self.assertEqual(
descriptor["commandCatalog"],
"allowlisted-adapter-typed-commands-only",
)
self.assertEqual(descriptor["gelios"], "untouched-legacy-only")
def test_control_core_release_builder_supports_release_predecessor(self):
with tempfile.TemporaryDirectory(
prefix="nodedc-control-core-successor-",