Repository navigation
smoke: add TestCuttingEdgeCluster (rhel10/rocky10/ubuntu26) - #642
Open
james-nesbitt wants to merge 10 commits into
Open
james-nesbitt wants to merge 10 commits into
james-nesbitt wants to merge 10 commits into
Conversation
james-nesbitt
force-pushed
the
smoke/cutting-edge-test
branch
from
July 22, 2026 07:24
093c76b to
d1a9f2d
Compare
2 of 3 tasks
james-nesbitt
added a commit
that referenced
this pull request
Sep 17, 2026
Registers ResoluteConfigurer for os.ID == "ubuntu" && os.Version == "26.04", matching the existing per-codename pattern (bionic, focal, jammy, noble, xenial). No version-specific behavior needed: the shared ubuntu.Configurer.InstallMCR already builds the APT repo URL generically from VERSION_CODENAME. MCR has not published Docker EE packages for Ubuntu 26.04 on either repos.mirantis.com or repos-internal.mirantis.com as of 2026-09-02 (both list only trusty/xenial/bionic/focal/jammy/noble). InstallMCR will fail on this platform until MCR ships support - this configurer only makes launchpad recognize the OS, it does not unblock installs. Same gap already tracked by TestCuttingEdgeCluster in PR #642. Verified: go build ./..., go vet, go test ./pkg/product/mke/config/... ./pkg/configurer/..., golangci-lint run (no new issues).
james-nesbitt
force-pushed
the
smoke/cutting-edge-test
branch
from
September 17, 2026 15:01
33a8927 to
eac251c
Compare
james-nesbitt
added a commit
that referenced
this pull request
Sep 17, 2026
EnableMCR's error on a failed "systemctl start docker" was always a bare "exit status 1" with no way to tell why: rig's StartService issues "systemctl start docker 2> /dev/null", discarding systemd's own diagnostic output. Reproduced live on RHEL10/Rocky10 in TestCuttingEdgeCluster (PR #642) with the latest available MCR (stable-29.6.1) and MKE (3.9.6): package install succeeds, but docker.service still fails to start, with no way from launchpad's own logs to see why -- exactly the gap this PR's description flags as "root cause not yet isolated (stderr suppressed by the install command)". Best-effort fetch journalctl output for the docker unit on failure and include it in the returned error, so the actual systemd failure reason is visible without needing rig changes or manual SSH access. Ignore a failure to fetch the diagnostic itself, since that must not mask the original error. Written by AI: claude-sonnet-5 Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
Collaborator
Author
|
Current status: re-verified today with the latest available MCR (stable-29.6.1) and MKE (3.9.6). Still not passing, but root causes are now fully isolated for every platform in this test.
Confirmed identically across 2 local runs and 1 official CI run (35238411403) with no discrepancies. No orphaned AWS resources left behind. Written by AI: claude-sonnet-5 |
james-nesbitt
added a commit
that referenced
this pull request
Sep 20, 2026
Registers ResoluteConfigurer for os.ID == "ubuntu" && os.Version == "26.04", matching the existing per-codename pattern (bionic, focal, jammy, noble, xenial). No version-specific behavior needed: the shared ubuntu.Configurer.InstallMCR already builds the APT repo URL generically from VERSION_CODENAME. MCR has not published Docker EE packages for Ubuntu 26.04 on either repos.mirantis.com or repos-internal.mirantis.com as of 2026-09-02 (both list only trusty/xenial/bionic/focal/jammy/noble). InstallMCR will fail on this platform until MCR ships support - this configurer only makes launchpad recognize the OS, it does not unblock installs. Same gap already tracked by TestCuttingEdgeCluster in PR #642. Verified: go build ./..., go vet, go test ./pkg/product/mke/config/... ./pkg/configurer/..., golangci-lint run (no new issues).
james-nesbitt
added a commit
that referenced
this pull request
Sep 20, 2026
EnableMCR's error on a failed "systemctl start docker" was always a bare "exit status 1" with no way to tell why: rig's StartService issues "systemctl start docker 2> /dev/null", discarding systemd's own diagnostic output. Reproduced live on RHEL10/Rocky10 in TestCuttingEdgeCluster (PR #642) with the latest available MCR (stable-29.6.1) and MKE (3.9.6): package install succeeds, but docker.service still fails to start, with no way from launchpad's own logs to see why -- exactly the gap this PR's description flags as "root cause not yet isolated (stderr suppressed by the install command)". Best-effort fetch journalctl output for the docker unit on failure and include it in the returned error, so the actual systemd failure reason is visible without needing rig changes or manual SSH access. Ignore a failure to fetch the diagnostic itself, since that must not mask the original error. Written by AI: claude-sonnet-5 Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
james-nesbitt
force-pushed
the
smoke/cutting-edge-test
branch
from
September 20, 2026 06:59
310d91c to
a9592df
Compare
james-nesbitt
marked this pull request as draft
September 21, 2026 07:25
james-nesbitt
added a commit
that referenced
this pull request
Sep 29, 2026
Registers ResoluteConfigurer for os.ID == "ubuntu" && os.Version == "26.04", matching the existing per-codename pattern (bionic, focal, jammy, noble, xenial). No version-specific behavior needed: the shared ubuntu.Configurer.InstallMCR already builds the APT repo URL generically from VERSION_CODENAME. MCR has not published Docker EE packages for Ubuntu 26.04 on either repos.mirantis.com or repos-internal.mirantis.com as of 2026-09-02 (both list only trusty/xenial/bionic/focal/jammy/noble). InstallMCR will fail on this platform until MCR ships support - this configurer only makes launchpad recognize the OS, it does not unblock installs. Same gap already tracked by TestCuttingEdgeCluster in PR #642. Verified: go build ./..., go vet, go test ./pkg/product/mke/config/... ./pkg/configurer/..., golangci-lint run (no new issues).
james-nesbitt
added a commit
that referenced
this pull request
Sep 29, 2026
Registers ResoluteConfigurer for os.ID == "ubuntu" && os.Version == "26.04", matching the existing per-codename pattern (bionic, focal, jammy, noble, xenial). No version-specific behavior needed: the shared ubuntu.Configurer.InstallMCR already builds the APT repo URL generically from VERSION_CODENAME. MCR has not published Docker EE packages for Ubuntu 26.04 on either repos.mirantis.com or repos-internal.mirantis.com as of 2026-09-02 (both list only trusty/xenial/bionic/focal/jammy/noble). InstallMCR will fail on this platform until MCR ships support - this configurer only makes launchpad recognize the OS, it does not unblock installs. Same gap already tracked by TestCuttingEdgeCluster in PR #642. Verified: go build ./..., go vet, go test ./pkg/product/mke/config/... ./pkg/configurer/..., golangci-lint run (no new issues).
james-nesbitt
added a commit
that referenced
this pull request
Sep 29, 2026
* [PRODENG-3593] Add Ubuntu 26.04 (Resolute) host configurer Registers ResoluteConfigurer for os.ID == "ubuntu" && os.Version == "26.04", matching the existing per-codename pattern (bionic, focal, jammy, noble, xenial). No version-specific behavior needed: the shared ubuntu.Configurer.InstallMCR already builds the APT repo URL generically from VERSION_CODENAME. MCR has not published Docker EE packages for Ubuntu 26.04 on either repos.mirantis.com or repos-internal.mirantis.com as of 2026-09-02 (both list only trusty/xenial/bionic/focal/jammy/noble). InstallMCR will fail on this platform until MCR ships support - this configurer only makes launchpad recognize the OS, it does not unblock installs. Same gap already tracked by TestCuttingEdgeCluster in PR #642. Verified: go build ./..., go vet, go test ./pkg/product/mke/config/... ./pkg/configurer/..., golangci-lint run (no new issues). * Fix resolute.go registration for rig v2 migration PRODENG-3594 (#651) migrated OS module registration from k0sproject/rig + rig/os/registry (func(rig.OSVersion) bool) to pkg/configurer.RegisterOSModule + rigos.Release (func(*rigos.Release) bool), landed on main after this branch was created. Update ResoluteConfigurer to match the current pattern used by NobleConfigurer; without this the branch fails to compile against main. Written by AI: claude-sonnet-5 Signed-off-by: James Nesbitt <jnesbitt@mirantis.com> * Add TestCuttingEdgeCluster smoke test for Ubuntu 26.04 - test/platforms.go: add Ubuntu26 platform entry (ubuntu_26.04) - test/smoke/smoke_test.go: add MCRRepoURL to smokeConfig, wired into the launchpad tfvars map as mcr_repo_url when non-empty (defaults to the public repo otherwise, via PR #669's optional tfvar); add TestCuttingEdgeCluster exercising a single ubuntu_26.04 manager against repos-internal.mirantis.com channel test-29, the only place Ubuntu 26.04 MCR packages exist as of 2026-09-29 Verified: TestCuttingEdgeCluster passed against real AWS infra (docker-testing-533267045383, us-east-1), MCR engine 29.8.0m1-rc1 installed and detected by MKE 3.9.2, cluster reported healthy, Reset succeeded, all 28 AWS resources destroyed cleanly. Written by AI: claude-sonnet-5 Signed-off-by: James Nesbitt <jnesbitt@mirantis.com> --------- Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
Adds a new smoke test targeting the latest gen-10 distributions: - RHEL 10, Rocky 10, Ubuntu 24.04 as managers and workers - SLES 15 as an additional worker Also adds: - Rhel10 and Rocky10 platform definitions in test/platforms.go - smoke-cutting-edge Makefile target (50m timeout) - smoke-cutting-edge CI job triggered by the smoke-cutting-edge label NOTE: This test depends on terraform-mirantis-modules/terraform-mirantis-provision-aws PR #22 being merged (adds rhel_10 and rocky_10 platform keys to the provision-aws module). The test will fail until the module is updated and the version bumped in examples/terraform/aws-simple/. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
- shorten Name "cutting-edge" -> "cuttingedge" (11 chars): the 12-char
value overflowed the 32-char AWS LB/target-group name limit and was
the actual CI failure ("name" cannot be longer than 32 characters)
- pin examples/terraform/aws-simple to provision-aws >= 0.1.7, which
ships the rhel_10/rocky_10 platform keys (provision-aws#22, released)
- refresh test doc comment now the upstream dependency is merged/released
gofmt also normalized two pre-existing violations in smoke_test.go.
rhel10/rocky10 AMIs and provision-aws platform keys (v0.1.7) are already available, but launchpad's own smoke coverage previously failed with 'package manager could not install docker-ee' because repos.mirantis.com had not yet published docker-ee for rhel/10 or rocky/10. Checked repos.mirantis.com directly: docker-ee is now present in both rhel/10/x86_64/stable-29.4 and rocky/10/x86_64/stable-29.4 -- that gap looks closed, matching the AMI-availability timing pattern seen elsewhere this cycle (Oracle Linux, Rocky 8). Strategy going forward: keep TestCuttingEdgeCluster merged and label-gated rather than blocking on it going green immediately, so it picks up MCR support automatically as soon as it lands, with no further code changes. Documented that intent on the Makefile target and the GitHub Actions job. Written by AI: claude-sonnet-5
Adds a Sles16 platform definition (sles_16) and switches TestCuttingEdgeCluster's additional worker from sles15 to sles16. NOTE: MCR has not published Docker EE packages for SLES 16 as of 2026-07-22 (repos.mirantis.com/sles/ only has 12/12.3/15). This node is expected to fail at Install MCR until MCR ships SLES16 support - same category of gap as RHEL10/Rocky10 (docker-ee installs but the daemon won't start), tracked separately for that pair. Flagged in a doc comment on the test so CI failures here are understood, not mysterious. gofmt also cleaned two pre-existing, unrelated violations in these files (trailing blank line in platforms.go; WrkWin2025 alignment in TestFIPSCluster).
Adds a Ubuntu26 platform definition (ubuntu_26.04, codename resolute) and switches TestCuttingEdgeCluster's Ubuntu manager+worker from 24.04 to 26.04 - the current LTS as of 2026-07 (24.04 remains fully supported, just no longer the newest release). The ubuntu_26.04 key is already present in the pinned provision-aws module (>= v0.1.7), AMI pattern confirmed against a live published AMI (ubuntu-resolute-26.04-amd64-server-*, published as recently as 2026-07-22). NOTE: MCR has not published Docker EE packages for Ubuntu 26.04 yet (repos.mirantis.com/ubuntu/dists/ only has trusty/xenial/bionic/focal/ jammy/noble - no resolute). This node is expected to fail at Install MCR alongside the existing SLES16 and RHEL10/Rocky10 gaps, until MCR ships support. Flagged in the test's doc comment.
Re-checking whether the RHEL10/Rocky10 MCR-daemon-start gap and the Ubuntu 26.04/SLES 16 missing-package gaps (documented in this PR's description) have closed with the newest available releases. Was stable-29.4/MKE 3.9.2 (docker-ee-29.4.1m1); repos.mirantis.com now also publishes stable-29.6.1 (docker-ee-29.6.1m2) for rhel/10. MSRVersion unchanged (3.1.18), already current elsewhere. Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
EnableMCR's error on a failed "systemctl start docker" was always a bare "exit status 1" with no way to tell why: rig's StartService issues "systemctl start docker 2> /dev/null", discarding systemd's own diagnostic output. Reproduced live on RHEL10/Rocky10 in TestCuttingEdgeCluster (PR #642) with the latest available MCR (stable-29.6.1) and MKE (3.9.6): package install succeeds, but docker.service still fails to start, with no way from launchpad's own logs to see why -- exactly the gap this PR's description flags as "root cause not yet isolated (stderr suppressed by the install command)". Best-effort fetch journalctl output for the docker unit on failure and include it in the returned error, so the actual systemd failure reason is visible without needing rig changes or manual SSH access. Ignore a failure to fetch the diagnostic itself, since that must not mask the original error. Written by AI: claude-sonnet-5 Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
…gle-node test
MCR package availability on repos.mirantis.com, checked 2026-11-03:
rhel/10 (also serves rocky10) stable-29.2 ... stable-29.8.0
ubuntu resolute stable-29.8.0 and test-29.8.0 only
sles/16 no directory; sles/ has 12, 12.3, 15
Changes following from that:
- WrkSles16 removed from TestCuttingEdgeCluster and the Sles16 entry
removed from test/platforms.go, its only consumer. A sles16 worker
cannot install MCR at all, so it can only ever fail the run.
- MCRChannel stable-29.6.1 -> stable-29.8.0. 29.6.1 does not exist for
resolute, so the previous value could not install on ubuntu26.
- MKEVersion 3.9.6 -> 3.9.7, the pairing with MCR 29.8.0 exercised live
in PRODENG-4062.
main's TestCuttingEdgeCluster (added by #661) is removed and replaced by
this matrix. That test provisioned one ubuntu_26.04 manager against
repos-internal.mirantis.com test-29 because resolute packages existed
nowhere else on 2026-09-29. repos.mirantis.com now carries them, so the
public-repo matrix covers ubuntu26 in both manager and worker roles. The
cost is that no smoke test exercises the repos-internal path any more;
MCRRepoURL in smokeConfig is retained for the next test that needs it.
The provision-aws module constraint is the exact pin 0.1.8 from main
rather than this branch's >= 0.1.7: 0.2.0-0.2.2 fail at plan time.
Not run: the smoke job itself. The RHEL10/Rocky10 MCR-daemon-start gap
(missing xt_* kernel modules, nftables vs swarm) is unresolved and may
still fail this matrix.
Written by AI: claude-opus-5
Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
james-nesbitt
force-pushed
the
smoke/cutting-edge-test
branch
from
November 3, 2026 06:44
a9592df to
514d679
Compare
james-nesbitt
marked this pull request as ready for review
November 5, 2026 12:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
TestCuttingEdgeCluster: rhel10, rocky10 and ubuntu26 as both managers and workers, on MCRstable-29.8.0and MKE 3.9.7, replacing the single-node version of that test currently onmain.Why
No smoke job covers RHEL 10, Rocky 10 or Ubuntu 26.04 in worker roles. MCR packages for them now exist on the public repo, so the matrix can run without an internal-repo detour.
MCR package availability on
repos.mirantis.com, checked 2026-11-03:rhel/10(also serves rocky10)stable-29.2…stable-29.8.0ubunturesolutestable-29.8.0,test-29.8.0onlysles/16sles/has12,12.3,15How
WrkSles16dropped, and theSles16entry removed fromtest/platforms.go(its only consumer). A sles16 worker cannot install MCR, so it could only ever fail the runMCRChannelstable-29.6.1→stable-29.8.0: 29.6.1 does not exist for resoluteMKEVersion3.9.6 → 3.9.7, the pairing with MCR 29.8.0 exercised live in PRODENG-4062main'sTestCuttingEdgeCluster(from [PRODENG-3593] Add Ubuntu 26.04 (Resolute) host configurer #661) is removed. It ran one ubuntu_26.04 manager againstrepos-internal.mirantis.comtest-29because resolute packages existed nowhere else on 2026-09-29; the public repo now carries them. Cost: no smoke test exercises the repos-internal path any more.MCRRepoURLstays insmokeConfigfor the next test that needs it0.1.8pin frommain, not this branch's>= 0.1.7: 0.2.0–0.2.2 fail at plan time ([PRODENG-4062] Pin provision-aws terraform module to 0.1.8 #679)Testing
go vet ./test/...andgofmt -l test/: cleanKnown risk
The RHEL10/Rocky10 MCR-daemon-start gap — missing
xt_*kernel modules break iptables, and MCR's nftables backend is incompatible with swarm mode — is unresolved and may still fail this matrix.Links
Checklist
Written by AI: claude-opus-5