feat(deploy): add typed command transport releases
This commit is contained in:
@@ -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-",
|
||||
|
||||
Reference in New Issue
Block a user