diff --git a/bot_bottle/backend/firecracker/infra_artifact.py b/bot_bottle/backend/firecracker/infra_artifact.py index 0108cf8..127288c 100644 --- a/bot_bottle/backend/firecracker/infra_artifact.py +++ b/bot_bottle/backend/firecracker/infra_artifact.py @@ -45,7 +45,7 @@ _DOCKERFILES = ("Dockerfile.orchestrator", "Dockerfile.gateway", "Dockerfile.inf _DEFAULT_BASE = "https://gitea.dideric.is" _DEFAULT_OWNER = "didericis" -_PACKAGE = "bot-bottle-infra" +_PACKAGE = "bot-bottle-firecracker-infra" # Streaming copy chunk for the (hundreds-of-MB) download. _CHUNK = 1 << 20 diff --git a/bot_bottle/backend/firecracker/publish_infra.py b/bot_bottle/backend/firecracker/publish_infra.py index 5f08a4b..eb11946 100644 --- a/bot_bottle/backend/firecracker/publish_infra.py +++ b/bot_bottle/backend/firecracker/publish_infra.py @@ -5,7 +5,7 @@ never on the launch host. It runs the same pipeline the launch host used to run locally — `docker build` the three fixed images, export to a rootfs dir, inject the guest boot, `mke2fs` to an ext4 with the buildah build slack — then gzips the ext4 and PUTs it (plus a `.sha256`) to -`…/api/packages//generic/bot-bottle-infra//`. +`…/api/packages//generic/bot-bottle-firecracker-infra//`. The `` is `infra_artifact.infra_artifact_version(...)`, the content hash of the rootfs inputs, so a launch host at the same code checkout resolves diff --git a/docs/prds/0069-firecracker-native-docker-free.md b/docs/prds/0069-firecracker-native-docker-free.md index aa094e5..5505554 100644 --- a/docs/prds/0069-firecracker-native-docker-free.md +++ b/docs/prds/0069-firecracker-native-docker-free.md @@ -112,12 +112,12 @@ bottle-agnostic**: the per-boot bits (authorized_keys, guest IP) arrive on the published ext4 boots on any launch host. - **Artifact.** `rootfs.ext4` + a `rootfs.ext4.sha256`, published as a Gitea - **generic package** (`bot-bottle-infra/`) — generic packages take + **generic package** (`bot-bottle-firecracker-infra/`) — generic packages take arbitrary large binaries (no attachment size cap / file-type allowlist that release attachments impose). The matching `vmlinux` kernel can ship the same way, so the whole VM is fetchable. - **Pull.** The launch host `GET`s - `…/api/packages//generic/bot-bottle-infra//rootfs.ext4` (+ + `…/api/packages//generic/bot-bottle-firecracker-infra//rootfs.ext4` (+ `.sha256`) for its pinned tag, verifies the checksum, caches it under the tag, and attaches it as the infra VM's root disk. Host prerequisite is an HTTP client — nothing else. Public packages need no auth to pull; a token diff --git a/tests/unit/test_infra_artifact.py b/tests/unit/test_infra_artifact.py index 6d84cb9..47ddcd1 100644 --- a/tests/unit/test_infra_artifact.py +++ b/tests/unit/test_infra_artifact.py @@ -169,7 +169,7 @@ class TestConfig(unittest.TestCase): url = ia.artifact_url("v1", "rootfs.ext4.gz") self.assertEqual( "https://mirror.example/api/packages/acme/generic/" - "bot-bottle-infra/v1/rootfs.ext4.gz", url) + "bot-bottle-firecracker-infra/v1/rootfs.ext4.gz", url) def test_local_build_flag(self) -> None: with mock.patch.dict(os.environ, {"BOT_BOTTLE_INFRA_BUILD": "local"}):