diff --git a/bot_bottle/backend/firecracker/backend.py b/bot_bottle/backend/firecracker/backend.py index de33f90..e5cb44e 100644 --- a/bot_bottle/backend/firecracker/backend.py +++ b/bot_bottle/backend/firecracker/backend.py @@ -18,7 +18,7 @@ from ...env import ResolvedEnv from ...git_gate import GitGatePlan from ...manifest import Manifest from ...supervise import SupervisePlan -from .. import ActiveAgent, BottleBackend, BottleSpec +from .. import ActiveAgent, BottleBackend, BottleImages, BottleSpec from . import cleanup as _cleanup from . import enumerate as _enumerate from . import launch as _launch @@ -92,10 +92,16 @@ class FirecrackerBottleBackend( stage_dir=stage_dir, ) + def _build_or_load_images(self, plan: FirecrackerBottlePlan) -> BottleImages: + # Firecracker builds its rootfs image inside _launch_impl (via buildah in + # a builder VM), so there is nothing to pre-resolve here. + return BottleImages(agent=plan.image) + @contextmanager - def launch( - self, plan: FirecrackerBottlePlan + def _launch_impl( + self, plan: FirecrackerBottlePlan, images: BottleImages, ) -> Generator[FirecrackerBottle, None, None]: + del images # rootfs built inside _launch.launch; images unused here with _launch.launch(plan, provision=self.provision) as bottle: yield bottle diff --git a/tests/unit/test_docker_launch_committed_image.py b/tests/unit/test_docker_launch_committed_image.py index 6198c9e..dad9773 100644 --- a/tests/unit/test_docker_launch_committed_image.py +++ b/tests/unit/test_docker_launch_committed_image.py @@ -13,7 +13,7 @@ from typing import Any from unittest import mock from bot_bottle.agent_provider import AgentProvisionPlan -from bot_bottle.backend import BottleImages, BottleSpec +from bot_bottle.backend import BottleSpec from bot_bottle.backend.docker import launch as launch_mod from bot_bottle.backend.docker.bottle_plan import DockerBottlePlan from bot_bottle.backend.docker.consolidated_launch import LaunchContext