Files
sand-boxer/extensions/README.md
tegwick 1415e17230 Implement SAND-WP-0006: SaaS payments, routing, and ext.saas-stub
Add credits store, metering on create/destroy, extension routing resolver,
metered SaaS stub extension, burst/saas profiles, credits CLI, docs, and tests.
2026-06-24 07:52:20 +02:00

59 lines
2.0 KiB
Markdown

# Extensions
Backend adapters for sandbox establishment. Each extension is declared in
`ext.<name>.yaml` and implements `provision`, `wait_ready`, and `teardown`.
Author guide: `docs/extension-sdk.md`
## ext.compose-ssh
Self-hosted extension migrated from `the-custodian/e2e-framework/`.
**Provision:** SSH to configured host → isolated directory per sandbox id → rsync
repo → `docker compose up` with unique project name.
**wait_ready:** Confirms compose services are running (`docker compose ps`). Does
not run HTTP health checks — wise-validator owns that.
**teardown:** compose down + remove remote directory (idempotent).
**Compose runtime:** defaults to `docker compose`. On CoulombCore set
`SANDBOXER_COMPOSE_CMD=podman-compose`.
### Compatibility note for `make e2e` callers
Legacy `make e2e REPO=<repo>` runs provision + health + tests + teardown in one
step. sand-boxer splits responsibilities:
| Step | Owner |
|------|-------|
| rsync + compose up/down | sand-boxer (`ext.compose-ssh`) |
| health checks + test_command | wise-validator (SAND-WP-0003) |
Interim workflow: `sandboxer create --profile profile.compose-e2e --input repo=...`
then run validation separately until wise-validator migration lands.
## ext.vm-packer
Attach mode for pre-built VMs (`the-custodian/infra/build-machines/` lineage).
**Provision:** SSH to VM alias or tunnel port → isolated workspace under `/build/sbx-<id>/`
→ optional rsync of `repo` input.
**wait_ready:** Confirms workspace directory exists on VM.
**teardown:** Removes workspace only; VM persists.
**Profile:** `profile.vm-haskell-build` — see `docs/runbooks/profile-vm-haskell-build.md`.
Packer build / OVA import remains operator-driven (not triggered by `create`).
## ext.saas-stub
Metered SaaS stub for payments and routing v0 (SAND-WP-0006). No external API.
**estimate_cost / meter_actual:** credits check on create; debit on destroy.
**Profile:** `profile.saas-stub` (explicit), `profile.burst-sandbox` (self-hosted fallback).
See `docs/payments.md` and `docs/routing.md`.