feat: Packer build orchestration (SAND-WP-0012)
Add vm-packer build mode, profile.vm-packer-build, State Hub progress notes during long provision, docs/runbook, and build mode tests.
This commit is contained in:
parent
92eaf8bae5
commit
774bc5ae0a
12 changed files with 426 additions and 52 deletions
|
|
@ -59,6 +59,37 @@ def emit_lifecycle_event(
|
|||
return None
|
||||
|
||||
|
||||
def emit_progress_note(
|
||||
summary: str,
|
||||
*,
|
||||
sandbox_id: str,
|
||||
profile_id: str,
|
||||
detail: dict[str, Any] | None = None,
|
||||
author: str = "sandboxer",
|
||||
) -> dict[str, Any] | None:
|
||||
"""Emit a progress note during long-running provision (e.g. Packer build)."""
|
||||
if os.environ.get("SANDBOXER_NO_STATE_HUB", "").lower() in ("1", "true", "yes"):
|
||||
return None
|
||||
|
||||
payload = {
|
||||
"event_type": "note",
|
||||
"summary": summary,
|
||||
"author": author,
|
||||
"detail": {
|
||||
"sandbox_id": sandbox_id,
|
||||
"profile_id": profile_id,
|
||||
**(detail or {}),
|
||||
},
|
||||
}
|
||||
|
||||
try:
|
||||
response = httpx.post(f"{hub_url()}/progress/", json=payload, timeout=10.0)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except httpx.HTTPError:
|
||||
return None
|
||||
|
||||
|
||||
def event_type_for_state(state: SandboxState) -> str:
|
||||
if state in (SandboxState.READY, SandboxState.DESTROYED, SandboxState.EXPIRED):
|
||||
return "milestone"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue