Skip to content

feat(vm): RHCOS last mile — operator-supplied image + opt-in#51

Merged
ErenAri merged 1 commit into
mainfrom
feat/rhcos-operator-image
Jun 26, 2026
Merged

feat(vm): RHCOS last mile — operator-supplied image + opt-in#51
ErenAri merged 1 commit into
mainfrom
feat/rhcos-operator-image

Conversation

@ErenAri

@ErenAri ErenAri commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Takes RHEL CoreOS the last mile. The boot path was solved in #50 (RHCOS shares Fedora CoreOS's Ignition boot, which is implemented and proven on FCOS); the only remaining gap was the image, which ships with an OpenShift release rather than a public cloud-image URL. This adds the operator on-ramp.

How an operator enables RHCOS

  1. Obtain the image for their OpenShift version — e.g.
    openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.qemu.formats["qcow2.gz"].disk.location' — or an internal mirror.
  2. Stage it: make rhcos-image RHCOS_IMAGE=/path/to/rhcos.qcow2 (or RHCOS_IMAGE_URL=https://...; gz/xz auto-decompressed).
  3. Opt in: BPFCOMPAT_ENABLE_RHCOS=1 bpfcompat test --runner vm ... — it then boots via the same Ignition path and load/attaches the artifact inside RHCOS.

Honesty preserved (default off)

  • With BPFCOMPAT_ENABLE_RHCOS unset, ExecutionTransport() keeps rhcos unsupported, with a precise reason pointing at the two steps — so RHCOS is never claimed runnable without a real image present.
  • rhcos stays absent from the README "Distributions covered" section.
  • New env var documented in internal/envref + regenerated docs/env-reference.md (env-docs-check passes).

Changes

  • internal/vm/transport.go: BPFCOMPAT_ENABLE_RHCOS opt-in flips rhcos/rhel-coreos to supported.
  • vm/scripts/fetch-rhcos-image.sh + make rhcos-image: stage an operator-supplied local path or URL.
  • envref catalog entry + env-reference.md; profile header, profile-catalog Transport Notes, CHANGELOG.
  • Tests: opt-in supported path + default-off unsupported path.

Verify

  • go build/vet, gofmt, env-docs-check, go test ./internal/... — all green.

🤖 Generated with Claude Code

RHCOS shares Fedora CoreOS's Ignition boot path (implemented + proven on FCOS),
so the only remaining gap was the image, which ships with an OpenShift release
rather than a public cloud-image URL. Add the operator on-ramp:

- `make rhcos-image RHCOS_IMAGE=/path/to/rhcos.qcow2` (or RHCOS_IMAGE_URL=...)
  stages the operator's image at vm/cache/rhcos-4.16.qcow2; handles gz/xz.
  Header documents obtaining the URL via `openshift-install coreos
  print-stream-json`.
- `BPFCOMPAT_ENABLE_RHCOS=1` opt-in flips ExecutionTransport for rhcos to
  supported (it then boots via the same Ignition path). Cataloged in envref +
  docs/env-reference.md.

Default stays unsupported with a precise reason pointing at the two steps, so
RHCOS is never claimed runnable without a real image, and it remains absent from
the README "Distributions covered" section.

Tests: transport opt-in path + default-off path; env-docs regenerated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ErenAri ErenAri merged commit f2ee812 into main Jun 26, 2026
7 of 8 checks passed
@ErenAri ErenAri deleted the feat/rhcos-operator-image branch June 26, 2026 21:37
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.

1 participant