Skip to content

OCPBUGS-91974: Stop setting DevPreviewNoUpgrade for TNF clusters#10507

Merged
openshift-merge-bot[bot] merged 3 commits into
openshift:masterfrom
fonta-rh:fix/ocpbugs-91974-upgrade-gate
Jun 24, 2026
Merged

OCPBUGS-91974: Stop setting DevPreviewNoUpgrade for TNF clusters#10507
openshift-merge-bot[bot] merged 3 commits into
openshift:masterfrom
fonta-rh:fix/ocpbugs-91974-upgrade-gate

Conversation

@fonta-rh

@fonta-rh fonta-rh commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Remove unconditional DevPreviewNoUpgrade FeatureSet override from handleFencing() in the install-config builder
  • Update TNF feature support level from TechPreview to Supported — TNF (DualReplica) is GA in 4.22
  • Update tests to match new behavior

Root Cause

handleFencing() in internal/installcfg/builder/builder.go unconditionally set cfg.FeatureSet = configv1.DevPreviewNoUpgrade for every TNF cluster. This blocked upgrades with: FeatureGatesUpgradeable: "DevPreviewNoUpgrade" does not allow updates.

The DualReplica feature gate is in the Default feature set since 4.22, so no FeatureSet override is needed. The Arbiter (TNA) feature in the same file already handles this correctly — it only sets TechPreviewNoUpgrade for its minimum version (4.19).

Test plan

  • go test ./internal/installcfg/builder/ passes
  • go test ./internal/featuresupport/ passes
  • Deploy TNF cluster via ABI — confirm no DevPreviewNoUpgrade in cluster FeatureGates
  • Upgrade deployed cluster — confirm upgrade is not blocked

Assisted-by: Claude Code noreply@anthropic.com

Summary by CodeRabbit

  • Bug Fixes
    • Corrected TNF (two nodes with fencing) support-level determination by adding a GA cutoff for newer OpenShift versions and refining TechPreview/Unavailable behavior around minimum supported releases, including updated handling for OpenShift 4.21 and Support behavior for 4.22.
    • Updated TNF install-config feature-set selection so 4.22+ follows default GA behavior, while older versions use the expected TechPreview setting.
  • Tests
    • Updated TNF test expectations, including revised table wording/coverage for TechPreview entries and new/adjusted assertions for 4.22 scenarios.

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 24, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@fonta-rh: This pull request references Jira Issue OCPBUGS-91974, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Summary

  • Remove unconditional DevPreviewNoUpgrade FeatureSet override from handleFencing() in the install-config builder
  • Update TNF feature support level from TechPreview to Supported — TNF (DualReplica) is GA in 4.22
  • Update tests to match new behavior

Root Cause

handleFencing() in internal/installcfg/builder/builder.go unconditionally set cfg.FeatureSet = configv1.DevPreviewNoUpgrade for every TNF cluster. This blocked upgrades with: FeatureGatesUpgradeable: "DevPreviewNoUpgrade" does not allow updates.

The DualReplica feature gate is in the Default feature set since 4.22, so no FeatureSet override is needed. The Arbiter (TNA) feature in the same file already handles this correctly — it only sets TechPreviewNoUpgrade for its minimum version (4.19).

Test plan

  • go test ./internal/installcfg/builder/ passes
  • go test ./internal/featuresupport/ passes
  • Deploy TNF cluster via ABI — confirm no DevPreviewNoUpgrade in cluster FeatureGates
  • Upgrade deployed cluster — confirm upgrade is not blocked

Assisted-by: Claude Code noreply@anthropic.com

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6b2307b9-2774-4ecb-b9fa-2b77736174f6

📥 Commits

Reviewing files that changed from the base of the PR and between 0bdf480 and 3036dce.

📒 Files selected for processing (1)
  • internal/installcfg/builder/builder.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • internal/installcfg/builder/builder.go

Walkthrough

TNF support handling now distinguishes 4.22 from earlier fencing versions, and install-config FeatureSet selection follows that version boundary. The TNF tests were updated to cover the revised support-level and FeatureSet expectations.

Changes

TNF version gating

Layer / File(s) Summary
Support levels by version
internal/featuresupport/features_misc.go, internal/featuresupport/feature_support_test.go
TnfFeature.getSupportLevel returns Supported at 4.22 and TechPreview at the fencing minimum, and the support-level table adds matching 4.21 and 4.22 expectations.
FeatureSet gating for fencing clusters
internal/installcfg/builder/builder.go, internal/installcfg/builder/builder_test.go
The install-config builder sets FeatureSet below 4.22, and the TNF builder tests update the expected FeatureSet and GA fencing assertions.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: removing DevPreviewNoUpgrade for TNF clusters.
Description check ✅ Passed The description covers summary, root cause, and testing, but it doesn't fully follow the repository template sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PASS: The changed Ginkgo titles are static strings; no generated names, timestamps, UUIDs, node/namespace/IP values, or runtime interpolation were added.
Test Structure And Quality ✅ Passed The updated TNF/TNA tests are focused, table-driven unit tests and follow existing BeforeEach/Ginkgo patterns without new waits, resources, or cleanup gaps.
Microshift Test Compatibility ✅ Passed Only internal unit tests changed; no new e2e Ginkgo tests or MicroShift-unsupported APIs/resources were added.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Changed tests are unit tests in internal/ and use mocked/in-memory data only; no SNO guards needed and no runtime multi-node assumptions were added.
Topology-Aware Scheduling Compatibility ✅ Passed No scheduling constraints were added; changes only adjust FeatureSet/feature-support logic, and existing arbiter handling remains topology-aware.
Ote Binary Stdout Contract ✅ Passed Changed files contain no fmt.Print/log/klog stdout writes in process-level setup; they only adjust feature gating and tests.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS: The PR only changes internal Ginkgo unit tests and install-config logic; no new e2e tests, IPv4-only assumptions, or external network calls were added.
No-Weak-Crypto ✅ Passed Touched code only changes TNF version gating and tests; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret comparisons found.
Container-Privileges ✅ Passed Only Go logic/tests changed; no manifest files were touched and no privileged, host*, SYS_ADMIN, or allowPrivilegeEscalation settings appear in the modified files.
No-Sensitive-Data-In-Logs ✅ Passed No new logging was added in the changed code; touched logic only adjusts TNF version gating, and the existing log emits a host ID on parse failure, not secrets.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Jun 24, 2026
@openshift-ci openshift-ci Bot requested review from danielerez and pastequo June 24, 2026 08:06
@openshift-ci-robot

Copy link
Copy Markdown

@fonta-rh: This pull request references Jira Issue OCPBUGS-91974, which is invalid:

  • expected the bug to target only the "5.0.0" version, but multiple target versions were set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

Details

In response to this:

Summary

  • Remove unconditional DevPreviewNoUpgrade FeatureSet override from handleFencing() in the install-config builder
  • Update TNF feature support level from TechPreview to Supported — TNF (DualReplica) is GA in 4.22
  • Update tests to match new behavior

Root Cause

handleFencing() in internal/installcfg/builder/builder.go unconditionally set cfg.FeatureSet = configv1.DevPreviewNoUpgrade for every TNF cluster. This blocked upgrades with: FeatureGatesUpgradeable: "DevPreviewNoUpgrade" does not allow updates.

The DualReplica feature gate is in the Default feature set since 4.22, so no FeatureSet override is needed. The Arbiter (TNA) feature in the same file already handles this correctly — it only sets TechPreviewNoUpgrade for its minimum version (4.19).

Test plan

  • go test ./internal/installcfg/builder/ passes
  • go test ./internal/featuresupport/ passes
  • Deploy TNF cluster via ABI — confirm no DevPreviewNoUpgrade in cluster FeatureGates
  • Upgrade deployed cluster — confirm upgrade is not blocked

Assisted-by: Claude Code noreply@anthropic.com

Summary by CodeRabbit

  • Bug Fixes
  • Updated support-level reporting for certain TNF scenarios so bare metal and minimum-version clusters now show as supported.
  • Adjusted feature-set selection for specific OpenShift 4.19 clusters to align with the expected default behavior.
  • Refined related test expectations to match the updated support and feature-set results.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

TNF clusters deployed via Agent-Based Install were unconditionally
marked with DevPreviewNoUpgrade FeatureSet, blocking upgrades even
on 4.22 where TNF is GA. Mirror the TNA pattern: set
DevPreviewNoUpgrade only for 4.20 (minimum version), omit it for
4.22+ so the Default FeatureSet applies. Update getSupportLevel()
to return DevPreview for 4.20 and Supported for later versions.

Assisted-by: Claude Code <noreply@anthropic.com>
@fonta-rh fonta-rh force-pushed the fix/ocpbugs-91974-upgrade-gate branch from d0d33ed to d7570fb Compare June 24, 2026 08:34
@openshift-ci openshift-ci Bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Jun 24, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@internal/featuresupport/features_misc.go`:
- Around line 173-177: The version checks in the fencing support branch are
ignoring parse errors from common.BaseVersionEqual and
common.BaseVersionGreaterOrEqual, which can hide malformed
filters.OpenshiftVersion values. Update the logic in features_misc.go to handle
the returned errors explicitly in the same block around the fencing support
decision, and only return SupportLevelDevPreview or continue the support check
when the version parse succeeds; otherwise propagate or surface the error
instead of treating it as a normal unsupported-version case.

In `@internal/installcfg/builder/builder.go`:
- Around line 400-402: The TNF version check in handleFencing currently ignores
the error from common.BaseVersionEqual, which can let a malformed
cluster.OpenshiftVersion fall through to the default path. Update the
handleFencing logic in builder.go to capture and return that parse/comparison
error instead of ignoring it, so cfg.FeatureSet only gets set when the version
comparison succeeds. Use the existing handleFencing error return to fail closed
and avoid generating an install-config with the wrong feature set.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 9a524020-2af9-4794-bfe0-b1cbaf6756c2

📥 Commits

Reviewing files that changed from the base of the PR and between d0d33ed and d7570fb.

📒 Files selected for processing (4)
  • internal/featuresupport/feature_support_test.go
  • internal/featuresupport/features_misc.go
  • internal/installcfg/builder/builder.go
  • internal/installcfg/builder/builder_test.go

Comment thread internal/featuresupport/features_misc.go Outdated
Comment thread internal/installcfg/builder/builder.go Outdated
@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 44.33%. Comparing base (0880ae6) to head (3036dce).
⚠️ Report is 10 commits behind head on master.

Files with missing lines Patch % Lines
internal/installcfg/builder/builder.go 60.00% 1 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master   #10507      +/-   ##
==========================================
- Coverage   44.34%   44.33%   -0.01%     
==========================================
  Files         423      423              
  Lines       73512    73517       +5     
==========================================
+ Hits        32596    32597       +1     
- Misses      37985    37987       +2     
- Partials     2931     2933       +2     
Files with missing lines Coverage Δ
internal/featuresupport/features_misc.go 94.14% <100.00%> (+0.02%) ⬆️
internal/installcfg/builder/builder.go 79.47% <60.00%> (-0.53%) ⬇️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 24, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@fonta-rh: This pull request references Jira Issue OCPBUGS-91974, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/hold finishing testing

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 24, 2026
Comment thread internal/installcfg/builder/builder.go Outdated
TNF is TechPreview in 4.20-4.21 and GA from 4.22, not DevPreview as
previously set. Use BaseVersionGreaterOrEqual("4.22") to cover both
TechPreview versions instead of BaseVersionEqual(minVersion).

Assisted-by: Claude Code <noreply@anthropic.com>
@eggfoobar

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 24, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
internal/installcfg/builder/builder_test.go (1)

250-287: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit 4.21 TNF FeatureSet assertion

Line 250 adds the GA (4.22) case, but there’s still no builder-layer assertion for 4.21. Adding it would lock in the intended 4.20–4.21 TechPreview window and catch boundary regressions quickly.

Suggested test addition
+	It("create_configuration_with_all_hosts - TNF cluster 4.21", func() {
+		certificateVerificationEnabled := installcfg.CertificateVerificationEnabled
+		fencingCredentials1 := models.FencingCredentialsParams{
+			Address:                 swag.String("https://address1.example.com"),
+			CertificateVerification: swag.String(string(certificateVerificationEnabled)),
+			Password:                swag.String("password"),
+			Username:                swag.String("username"),
+		}
+		fencingCredentials2 := models.FencingCredentialsParams{
+			Address:  swag.String("https://address2.example.com"),
+			Password: swag.String("password"),
+			Username: swag.String("username"),
+		}
+		fencingCredentialsHost1String, err := json.Marshal(fencingCredentials1)
+		Expect(err).ShouldNot(HaveOccurred())
+		fencingCredentialsHost2String, err := json.Marshal(fencingCredentials2)
+		Expect(err).ShouldNot(HaveOccurred())
+		host1.FencingCredentials = string(fencingCredentialsHost1String)
+		host1.Role = models.HostRoleMaster
+		host2.FencingCredentials = string(fencingCredentialsHost2String)
+		host2.Role = models.HostRoleMaster
+		cluster.Hosts = []*models.Host{&host1, &host2}
+		cluster.ControlPlaneCount = 2
+		cluster.OpenshiftVersion = "4.21"
+
+		var result installcfg.InstallerConfigBaremetal
+		mockMirrorRegistriesConfigBuilder.EXPECT().IsMirrorRegistriesConfigured().Return(false).Times(2)
+		data, err := installConfig.GetInstallConfig(&cluster, clusterInfraenvs, "")
+		Expect(err).ShouldNot(HaveOccurred())
+		err = json.Unmarshal(data, &result)
+		Expect(err).ShouldNot(HaveOccurred())
+		Expect(result.FeatureSet).To(Equal(configv1.TechPreviewNoUpgrade))
+	})
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/installcfg/builder/builder_test.go` around lines 250 - 287, The TNF
builder tests in the create_configuration_with_all_hosts coverage only assert
the GA path for OpenshiftVersion 4.22, but they miss the 4.21 TechPreview
boundary. Add a sibling test near the existing
create_configuration_with_all_hosts - TNF cluster GA case that sets
cluster.OpenshiftVersion to 4.21 and asserts the expected FeatureSet for the
4.20–4.21 window, using installConfig.GetInstallConfig and the resulting
InstallerConfigBaremetal fields to verify the behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@internal/installcfg/builder/builder_test.go`:
- Around line 250-287: The TNF builder tests in the
create_configuration_with_all_hosts coverage only assert the GA path for
OpenshiftVersion 4.22, but they miss the 4.21 TechPreview boundary. Add a
sibling test near the existing create_configuration_with_all_hosts - TNF cluster
GA case that sets cluster.OpenshiftVersion to 4.21 and asserts the expected
FeatureSet for the 4.20–4.21 window, using installConfig.GetInstallConfig and
the resulting InstallerConfigBaremetal fields to verify the behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2359e869-6869-4f39-ae88-44152d7697e9

📥 Commits

Reviewing files that changed from the base of the PR and between d7570fb and 0bdf480.

📒 Files selected for processing (4)
  • internal/featuresupport/feature_support_test.go
  • internal/featuresupport/features_misc.go
  • internal/installcfg/builder/builder.go
  • internal/installcfg/builder/builder_test.go

Comment thread internal/installcfg/builder/builder.go Outdated
Assisted-by: Claude Code <noreply@anthropic.com>
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 24, 2026
Comment on lines +173 to +174
// TNF is GA from 4.22
if isGA, _ := common.BaseVersionGreaterOrEqual("4.22", filters.OpenshiftVersion); isGA {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: should probably be a constant (TNAMinversion or something) but since we're rushing to get this in, can be a follow up PR

@rccrdpccl

Copy link
Copy Markdown
Contributor

/lgtm
/approve

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 24, 2026
@openshift-ci

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: fonta-rh, rccrdpccl

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 24, 2026
@fonta-rh

Copy link
Copy Markdown
Contributor Author

/hold remove

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 24, 2026
@fonta-rh

Copy link
Copy Markdown
Contributor Author

/cherrypick 4.22.3

@openshift-cherrypick-robot

Copy link
Copy Markdown

@fonta-rh: once the present PR merges, I will cherry-pick it on top of 4.22.3 in a new PR and assign it to you.

Details

In response to this:

/cherrypick 4.22.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 1f865aa and 2 for PR HEAD 3036dce in total

@openshift-ci

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown

@fonta-rh: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot openshift-merge-bot Bot merged commit a9f9002 into openshift:master Jun 24, 2026
22 checks passed
@openshift-ci-robot

Copy link
Copy Markdown

@fonta-rh: Jira Issue OCPBUGS-91974: All pull requests linked via external trackers have merged:

Jira Issue OCPBUGS-91974 has been moved to the MODIFIED state.

Details

In response to this:

Summary

  • Remove unconditional DevPreviewNoUpgrade FeatureSet override from handleFencing() in the install-config builder
  • Update TNF feature support level from TechPreview to Supported — TNF (DualReplica) is GA in 4.22
  • Update tests to match new behavior

Root Cause

handleFencing() in internal/installcfg/builder/builder.go unconditionally set cfg.FeatureSet = configv1.DevPreviewNoUpgrade for every TNF cluster. This blocked upgrades with: FeatureGatesUpgradeable: "DevPreviewNoUpgrade" does not allow updates.

The DualReplica feature gate is in the Default feature set since 4.22, so no FeatureSet override is needed. The Arbiter (TNA) feature in the same file already handles this correctly — it only sets TechPreviewNoUpgrade for its minimum version (4.19).

Test plan

  • go test ./internal/installcfg/builder/ passes
  • go test ./internal/featuresupport/ passes
  • Deploy TNF cluster via ABI — confirm no DevPreviewNoUpgrade in cluster FeatureGates
  • Upgrade deployed cluster — confirm upgrade is not blocked

Assisted-by: Claude Code noreply@anthropic.com

Summary by CodeRabbit

  • Bug Fixes
  • Corrected TNF (two nodes with fencing) support-level determination by adding a GA cutoff for newer OpenShift versions and refining TechPreview/Unavailable behavior around minimum supported releases, including updated handling for OpenShift 4.21 and Support behavior for 4.22.
  • Updated TNF install-config feature-set selection so 4.22+ follows default GA behavior, while older versions use the expected TechPreview setting.
  • Tests
  • Updated TNF test expectations, including revised table wording/coverage for TechPreview entries and new/adjusted assertions for 4.22 scenarios.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-cherrypick-robot

Copy link
Copy Markdown

@fonta-rh: cannot checkout 4.22.3: error checking out "4.22.3": exit status 1 error: pathspec '4.22.3' did not match any file(s) known to git

Details

In response to this:

/cherrypick 4.22.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/cherrypick release-4.23

@openshift-cherrypick-robot

Copy link
Copy Markdown

@fonta-rh: new pull request created: #10515

Details

In response to this:

/cherrypick release-4.23

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/cherrypick release-4.22

@openshift-cherrypick-robot

Copy link
Copy Markdown

@fonta-rh: new pull request created: #10516

Details

In response to this:

/cherrypick release-4.22

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@fonta-rh

Copy link
Copy Markdown
Contributor Author

/verified by fonta-rh
on a self-deployed cluster

@openshift-ci-robot

Copy link
Copy Markdown

@fonta-rh: Jira Issue OCPBUGS-91974 is in an unrecognized state (MODIFIED) and will not be moved to the MODIFIED state.

Details

In response to this:

/verified by fonta-rh
on a self-deployed cluster

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants