mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-02 07:34:45 +08:00
* refactor(config): normalize compute driver field names Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * refactor(config): introduce canonical gateway fields Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * refactor(config): enforce gateway schema version 2 Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): preserve compute driver runtime guarantees Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): address schema v2 review regressions Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): complete schema v2 migration safeguards Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(config): expand schema v2 regression coverage Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(config): add schema v2 parity manifest Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): correct parity manifest inventory Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * docs(config): record schema v2 intentional changes Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * docs(config): disposition schema v2 parity gaps Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): add dual schema parity harness Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): establish compute lifecycle parity baseline Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): preserve gateway option compatibility Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): record gateway option parity Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * docs(config): close gateway-wide parity gaps Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(podman): apply configured pids limit Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): validate Podman option parity Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): add Kubernetes option parity harness Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): record Kubernetes option parity Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): disposition VM parity lanes Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): add external driver parity lane Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(e2e): preserve external driver pull policy Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): attest parity artifacts and launches Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): require clean parity build sources Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): bind parity runtime artifacts Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(e2e): use isolated supervisor tags Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(e2e): qualify parity image tags Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(e2e): serve parity supervisor locally Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): isolate parity podman services Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): harden parity evidence provenance Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): pin parity sandbox artifacts Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): attest parity runtime inputs Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): bind parity runtime evidence Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): record compute boundary parity Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(e2e): disposition cross-cutting parity lanes Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(packaging): preflight gateway config upgrades Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): preserve rebase integration guarantees Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(ci): isolate temporary git signing config Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): update remaining schema v2 consumers Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(ci): provide e2fs tools to VM tests Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): align preflight with gateway startup Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(vm): preserve rootfs tar configuration Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * chore(config): adopt duration unit constructors Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(packaging): preflight RPM gateway config Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(config): address driver review findings Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(e2e): require fresh semantic parity evidence Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * fix(docker): update tests for renamed sandbox label Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> * test(gateway): preserve selective driver coverage after rebase Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Jesse Jaggars <jjaggars@redhat.com> Signed-off-by: Drew Newberry <anewberry@nvidia.com> Co-authored-by: Drew Newberry <anewberry@nvidia.com>
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
"""Schema-only checks for E2E gateway fixtures; these do not start a runtime."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import tomllib
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
FIXTURE_DIR = REPO_ROOT / "e2e/configs/gateway"
|
|
TEST_GUEST_ROLE_PATH = (
|
|
REPO_ROOT
|
|
/ "nix/test-guest/provisioners/roles/gateway-podman/tasks/development-gateway.yml"
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("fixture_name", "driver"),
|
|
[("docker.toml", "docker"), ("podman.toml", "podman")],
|
|
)
|
|
def test_e2e_gateway_fixtures_use_schema_v2_scalar_driver(
|
|
fixture_name: str, driver: str
|
|
) -> None:
|
|
config = tomllib.loads((FIXTURE_DIR / fixture_name).read_text(encoding="utf-8"))
|
|
gateway = config["openshell"]["gateway"]
|
|
|
|
assert config["openshell"]["version"] == 2
|
|
assert gateway["compute_driver"] == driver
|
|
assert "compute_drivers" not in gateway
|
|
assert "sandbox_namespace" not in gateway
|
|
|
|
|
|
def test_podman_test_guest_producer_uses_schema_v2() -> None:
|
|
tasks = yaml.safe_load(TEST_GUEST_ROLE_PATH.read_text(encoding="utf-8"))
|
|
producer = next(
|
|
task
|
|
for task in tasks
|
|
if task.get("name") == "Write development Podman gateway configuration"
|
|
)
|
|
content = producer["ansible.builtin.copy"]["content"]
|
|
config = tomllib.loads(content)
|
|
gateway = config["openshell"]["gateway"]
|
|
|
|
assert config["openshell"]["version"] == 2
|
|
assert gateway["compute_driver"] == "podman"
|
|
assert "compute_drivers" not in gateway
|
|
assert "ttl_secs" not in gateway["gateway_jwt"]
|
|
assert "podman" in config["openshell"]["drivers"]
|
|
|
|
|
|
def test_docker_e2e_gateway_fixture_uses_canonical_policy_and_label() -> None:
|
|
config = tomllib.loads((FIXTURE_DIR / "docker.toml").read_text(encoding="utf-8"))
|
|
docker = config["openshell"]["drivers"]["docker"]
|
|
|
|
assert docker["image_pull_policy"] == "if_not_present"
|
|
assert docker["sandbox_label"] == "openshell-e2e"
|
|
assert "sandbox_namespace" not in docker
|
|
|
|
|
|
def test_podman_e2e_gateway_fixture_uses_canonical_policy_and_callbacks() -> None:
|
|
config = tomllib.loads((FIXTURE_DIR / "podman.toml").read_text(encoding="utf-8"))
|
|
podman = config["openshell"]["drivers"]["podman"]
|
|
|
|
assert podman["image_pull_policy"] == "if_not_present"
|
|
assert podman["health_check_interval_secs"] == 10
|
|
assert podman["ssh_socket_path"] == "/run/openshell/ssh.sock"
|
|
assert "sandbox_namespace" not in podman
|