SAND-WP-0004: delegate make e2e to validate run
Replace e2e_framework monolith with wise-validator + sand-boxer shim. Makefile invokes validate run; legacy python -m e2e_framework delegates via shim.py with deprecation notice. Add verify-e2e-shim.sh.
This commit is contained in:
80
e2e-framework/shim.py
Normal file
80
e2e-framework/shim.py
Normal file
@@ -0,0 +1,80 @@
|
||||
"""Delegate e2e runs to wise-validator (sand-boxer + validate run)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
DEPRECATION_MSG = (
|
||||
"[e2e_framework] DEPRECATED: use `validate run <repo>` (wise-validator) or "
|
||||
"`make e2e REPO=` from the-custodian. Provision is sand-boxer; validation is "
|
||||
"wise-validator. This module will be removed after one release cycle."
|
||||
)
|
||||
|
||||
|
||||
def _resolve_host(host: str | None) -> str:
|
||||
for candidate in (host, os.environ.get("SANDBOXER_HOST"), os.environ.get("RAILIANCE01_HOST")):
|
||||
if candidate:
|
||||
return candidate
|
||||
return ""
|
||||
|
||||
|
||||
def run_via_validate(
|
||||
repo_path: Path,
|
||||
*,
|
||||
host: str | None = None,
|
||||
keep: bool = False,
|
||||
workstream_id: str | None = None,
|
||||
no_report: bool = False,
|
||||
ssh_user: str | None = None,
|
||||
ssh_key: str | None = None,
|
||||
) -> int:
|
||||
"""Invoke `validate run` and return its exit code."""
|
||||
print(DEPRECATION_MSG, file=sys.stderr)
|
||||
|
||||
validate_bin = os.environ.get("VALIDATE_BIN", "validate")
|
||||
if not shutil.which(validate_bin):
|
||||
print(
|
||||
f"ERROR: {validate_bin} not found on PATH. "
|
||||
"Install wise-validator: cd ~/wise-validator && make install",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 1
|
||||
|
||||
sandboxer_bin = os.environ.get("SANDBOXER_BIN", "sandboxer")
|
||||
if not shutil.which(sandboxer_bin):
|
||||
print(
|
||||
f"ERROR: {sandboxer_bin} not found on PATH. "
|
||||
"Install sand-boxer: cd ~/sand-boxer && make install",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 1
|
||||
|
||||
resolved_host = _resolve_host(host)
|
||||
if not resolved_host:
|
||||
print(
|
||||
"ERROR: sandbox host required. Set SANDBOXER_HOST, RAILIANCE01_HOST, or --host.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 1
|
||||
|
||||
env = os.environ.copy()
|
||||
env["SANDBOXER_HOST"] = resolved_host
|
||||
if ssh_user:
|
||||
env["SANDBOXER_SSH_USER"] = ssh_user
|
||||
if ssh_key:
|
||||
env["SANDBOXER_SSH_KEY"] = ssh_key
|
||||
|
||||
cmd = [validate_bin, "run", str(repo_path), "--host", resolved_host]
|
||||
if keep:
|
||||
cmd.append("--keep")
|
||||
if workstream_id:
|
||||
cmd.extend(["--workstream-id", workstream_id])
|
||||
if no_report:
|
||||
cmd.append("--no-report")
|
||||
|
||||
result = subprocess.run(cmd, env=env)
|
||||
return result.returncode
|
||||
Reference in New Issue
Block a user