fix(backend): skip gateway reconcile when no running bottles (0081)
reconcile_running_bottles() gathered the gateway attach-resources (a read of the per-host singleton gateway's CA) *before* enumerating running bottles. On a cold-boot bring-up of a NON-default gateway instance with no host bottles — e.g. an isolated integration test's `-itest-` gateway — that read targeted the default `bot-bottle-orch-gateway`, which doesn't exist for that instance, so setUpClass died with "No such container: bot-bottle-orch-gateway" (seen on the 0081 PR's integration-docker job). Enumerate running bottles first and return early when there are none: the reconcile is a no-op with nothing to reattach, so the CA read is both wasted and wrong for a non-default instance. Production (default names, real bottles) is unchanged. Adds unit coverage for the three reconcile paths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -37,9 +37,18 @@ def reconcile_running_bottles(backend: "BottleBackend[Any, Any, Any]") -> None:
|
||||
so any attach failure aborts bring-up. Every bottle is attempted first and
|
||||
the failures are raised together, so one bring-up surfaces the full blast
|
||||
radius rather than one bottle at a time."""
|
||||
# Enumerate the host's running bottles BEFORE gathering resources: with none
|
||||
# to reattach, the reconcile is a no-op, and gathering resources first would
|
||||
# read the current gateway's CA for nothing. That read targets the per-host
|
||||
# singleton gateway, so a bring-up of a *non-default* instance with no host
|
||||
# bottles (an isolated integration test's `-itest-` gateway) would otherwise
|
||||
# fail looking for the default `bot-bottle-orch-gateway` (#519 review).
|
||||
bottles = backend._running_bottles()
|
||||
if not bottles:
|
||||
return
|
||||
resources = backend._gateway_attach_resources()
|
||||
failures: list[str] = []
|
||||
for bottle in backend._running_bottles():
|
||||
for bottle in bottles:
|
||||
try:
|
||||
backend._attach_bottle_to_gateway(bottle, resources)
|
||||
except InfraLaunchError as exc:
|
||||
|
||||
Reference in New Issue
Block a user