Skip to content

Fix SSH polling, disable Ignition+FCOS for now#281

Merged
cgwalters merged 2 commits into
bootc-dev:mainfrom
cgwalters:ignition-flakes
Jun 10, 2026
Merged

Fix SSH polling, disable Ignition+FCOS for now#281
cgwalters merged 2 commits into
bootc-dev:mainfrom
cgwalters:ignition-flakes

Conversation

@cgwalters

Copy link
Copy Markdown
Collaborator

No description provided.

@gursewak1997

Copy link
Copy Markdown
Collaborator

Need to fix this

cargo fmt -- --check -l
/home/runner/work/bcvk/bcvk/crates/kit/src/libvirt/ssh.rs
make: *** [Makefile:46: validate] Error 1

The libvirt SSH path had its own hand-rolled retry loop inside
connect_ssh() (60s timeout, 1s poll), while the ephemeral path cleanly
uses the shared wait_for_readiness() utility. Worse, wait_for_ssh_ready()
called run_ssh_impl() which hit the connect_ssh() retry, creating a
double-retry: each "attempt" in the outer 180s loop took ~60s, yielding
only 3 effective iterations instead of ~36.

Unify on the same pattern the ephemeral path uses:

- Extract verify_domain_running() and prepare_ssh_session() helpers so
  setup (domain check, config extraction, temp key) is done once.
- Replace connect_ssh()'s retry loop with wait_for_readiness() inside
  run_ssh_impl(), matching run_ephemeral_ssh::wait_for_ssh_ready().
- Rename connect_ssh to exec_ssh_session (it no longer retries).
- Simplify wait_for_ssh_ready() in run.rs to do setup once then poll
  with just the SSH command, instead of reconstructing everything per
  attempt.

Assisted-by: OpenCode (Claude Opus 4)
Signed-off-by: Colin Walters <walters@verbum.org>
FCOS installed via bootc install drops into emergency mode because the
partition layout (BIOS boot + EFI + root) lacks the "boot"-labeled
partition that coreos-boot-mount-generator expects. The 90-second device
wait for /dev/disk/by-label/boot times out, then SSHD never starts and
the root account is locked. Ignition itself is also skipped — bootc
install marks the disk as provisioned, so FCOS treats every boot as
"subsequent."

An analogous fix landed for the ephemeral/virtiofs case in
coreos/fedora-coreos-config#3859 but the
bootc-install-to-disk case is not yet handled upstream.

Disable the test registration (keeping the code) until the upstream
generator is fixed. The other ignition tests (invalid path, unsupported
image) still run and pass.

Assisted-by: OpenCode (Claude Opus 4)
Signed-off-by: Colin Walters <walters@verbum.org>
@cgwalters cgwalters merged commit e3907b1 into bootc-dev:main Jun 10, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants