Skip to content

AGENT-1493: Promote NoRegistryClusterInstall Feature to Default#2859

Open
sadasu wants to merge 4 commits into
openshift:masterfrom
sadasu:agent-iri-promotion
Open

AGENT-1493: Promote NoRegistryClusterInstall Feature to Default#2859
sadasu wants to merge 4 commits into
openshift:masterfrom
sadasu:agent-iri-promotion

Conversation

@sadasu

@sadasu sadasu commented May 26, 2026

Copy link
Copy Markdown
Contributor

Feature NoRegistryClusterInstall is ready to be supported during Agent installs by default.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 26, 2026
@openshift-ci-robot

openshift-ci-robot commented May 26, 2026

Copy link
Copy Markdown

@sadasu: This pull request references AGENT-1394 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target only the "5.0.0" version, but multiple target versions were set.

Details

In response to this:

Feature NoRegistryClusterInstall is ready to be supported during Agent installs by default.

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 May 26, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR enables NoRegistryClusterInstall for Default and OKD profiles, updates its documentation and FeatureGate manifests, adds MachineConfigNode CRDs for SelfManagedHA Default and OKD, removes selected CRD annotations, and extends the feature-gate test analyzer with install-specific Sippy queries, thresholds, reporting, validation, and tests.

Possibly related PRs

  • openshift/api#2943: Updates the same feature-gate analyzer and install-specific validation logic.

Suggested reviewers: joelspeed, everettraven


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 warning, 2 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Stable And Deterministic Test Names ❓ Inconclusive placeholder Need file evidence before final verdict.
Ipv6 And Disconnected Network Test Compatibility ❓ Inconclusive pending investigation Need to verify whether any newly added Ginkgo e2e tests exist in the changed files.
✅ Passed checks (12 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: promoting NoRegistryClusterInstall to the default feature set.
Description check ✅ Passed The description is directly related and matches the change to enable NoRegistryClusterInstall by default for Agent installs.
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.
Test Structure And Quality ✅ Passed PR only adds standard Go unit tests, not Ginkgo specs; no cluster waits, cleanup, or timeout patterns apply.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in the changed files; the PR only modifies codegen logic, so MicroShift compatibility is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests were added; the PR only changes codegen logic, so SNO compatibility is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only edits feature-gate metadata, CRDs, and codegen; no Deployment/Pod specs, affinity, nodeSelector, replicas, or PDBs were added.
Ote Binary Stdout Contract ✅ Passed No OTE process-level entrypoints or suite setup were changed; the only stdout writes are helper diagnostics in the codegen tool, not main/init/TestMain/BeforeSuite code.
No-Weak-Crypto ✅ Passed Patch only adds self-managed metal variants and formatting in the analyzer; no weak crypto, custom crypto, or secret/token comparisons were introduced.
Container-Privileges ✅ Passed Touched files are CRDs, feature gates, docs, and Go code; no privileged/securityContext fields were present in the YAMLs.
No-Sensitive-Data-In-Logs ✅ Passed Touched logging only prints feature-gate names, job variants, and generic Sippy status; no passwords, tokens, PII, or customer data appear.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci

openshift-ci Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Hello @sadasu! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci openshift-ci Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label May 26, 2026
@openshift-ci
openshift-ci Bot requested review from JoelSpeed and yuqi-zhang May 26, 2026 15:56
@openshift-ci

openshift-ci Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign deads2k for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

Comment thread features/features.go
@sadasu sadasu changed the title AGENT-1394: Promote NoRegistryClusterInstall Feature to Default AGENT-1493: Promote NoRegistryClusterInstall Feature to Default May 26, 2026
@openshift-ci-robot

openshift-ci-robot commented May 26, 2026

Copy link
Copy Markdown

@sadasu: This pull request references AGENT-1493 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Feature NoRegistryClusterInstall is ready to be supported during Agent installs by default.

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.

@sadasu

sadasu commented May 26, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

openshift-ci-robot commented May 26, 2026

Copy link
Copy Markdown

@sadasu: This pull request references AGENT-1493 which is a valid jira issue.

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.

api-approved.openshift.io: https://github.com/openshift/api/pull/2510
api.openshift.io/merged-by-featuregates: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade

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.

Looks like the IRI object itself is still v1alpha1 only: https://github.com/openshift/api/blob/master/machineconfiguration/v1alpha1/types_internalreleaseimage.go ?

We don't allow GA'ing with a alpha API. We would need to graduate the API to v1 first, before we graduate the dependent feature.

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.

Do we require a separate PR for that?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@andfasano Yes, lets create a separate PR for that.

@andfasano

Copy link
Copy Markdown
Contributor

Requires #2863

@pawanpinjarkar

Copy link
Copy Markdown
Contributor

@sadasu the dependent PR #2880 is merged. Please rebase and fix the the conflicts.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 7, 2026
@sadasu
sadasu force-pushed the agent-iri-promotion branch from e5c1c9a to 230642e Compare July 10, 2026 17:16
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 10, 2026
@JoelSpeed

Copy link
Copy Markdown
Contributor

Do we have any specific periodic tests that demonstrate this feature behaving as described?

@andfasano

Copy link
Copy Markdown
Contributor

Do we have any specific periodic tests that demonstrate this feature behaving as described?

Yes, we added four different TP periodic jobs to cover all the supported platform type/network/topology combinations, here: https://sippy.dptools.openshift.org/sippy-ng/jobs/5.0?filters=%257B%2522items%2522%253A%255B%257B%2522columnField%2522%253A%2522variants%2522%252C%2522operatorValue%2522%253A%2522has%2520entry%2522%252C%2522value%2522%253A%2522never-stable%2522%252C%2522not%2522%253Atrue%257D%252C%257B%2522id%2522%253A99%252C%2522columnField%2522%253A%2522name%2522%252C%2522operatorValue%2522%253A%2522contains%2522%252C%2522value%2522%253A%2522iso-no-registry%2522%257D%255D%257D&sort=asc&sortField=net_improvement.

Please note that the latest PR for bumping the IRI api to v1 successfully landed on Friday, but we didn't yet get a freshly updated green 5.0 nightly payload, thus the current stripe of failures.
Given that the daily presubmits jobs are fine, I'd expect to have again green periodics as soon as a new green nightly will be available (rebuilt with the latest available images)

@JoelSpeed

Copy link
Copy Markdown
Contributor

Could we please add a mapping that maps the iso-no-registry style jobs to the NoRegistryClusterInstall featuregate please?

@andfasano

Copy link
Copy Markdown
Contributor

Could we please add a mapping that maps the iso-no-registry style jobs to the NoRegistryClusterInstall featuregate please?

Recently we did some work with TRT to add the mapping in Sippy CR openshift-eng/ci-test-mapping#767. We've been able also to start gathering some data from the aforementioned jobs, this view seems to work right now

@yuqi-zhang

Copy link
Copy Markdown
Contributor

Functionally speaking the code is fine. I think this is ready for merge once feature-promotion is green

@sadasu

sadasu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

/test verify-feature-promotion

verify-feature-promotion test is not able to find the NoRegistryClusterInstall jobs.
Will retest after openshift/sippy#3772.

@JoelSpeed

Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@andfasano

Copy link
Copy Markdown
Contributor

It looks like at least now the tests are fetched

@andfasano

Copy link
Copy Markdown
Contributor

The fix for the single failing test openshift/origin#31394 landed and it was included in https://amd64.ocp.releases.ci.openshift.org/releasestream/5.0.0-0.nightly/release/5.0.0-0.nightly-2026-07-17-034502, so the trend should improve from the next green nightly (they are still red). The latest two runs per job installed and verified the cluster correctly, they just failed as per #31394

@andfasano

Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

Feature NoRegistryClusterInstall is ready to be supported during
Agent installs by default.
@sadasu
sadasu force-pushed the agent-iri-promotion branch from 230642e to 2db4418 Compare July 20, 2026 20:45
@andfasano

Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@sadasu
sadasu force-pushed the agent-iri-promotion branch from 2db4418 to 888d0e1 Compare July 21, 2026 15:03

@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: 3

🧹 Nitpick comments (2)
tools/codegen/pkg/sippy/json_types.go (1)

182-278: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

QueriesForWithCapability is a near-verbatim copy of QueriesFor.

The only functional difference from QueriesFor (Lines 90-180) is the added Capability:<capability> base item; the network-stack/OS handling, jobTiers parse/dedupe/default logic, and per-tier query generation are duplicated. Consider building the base items and delegating, e.g. have QueriesForWithCapability append the capability item and share the tier-expansion tail (or add an optional-capability parameter to a single internal builder), so the two don't diverge on future changes.

🤖 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 `@tools/codegen/pkg/sippy/json_types.go` around lines 182 - 278, Refactor
QueriesForWithCapability and QueriesFor to share one internal query-building
path, such as a builder accepting an optional capability filter. Preserve the
existing networkStack/OS handling, jobTiers parsing, deduplication, defaults,
and per-tier query generation, while adding the Capability variant only for
QueriesForWithCapability and removing the duplicated implementation.
tools/codegen/cmd/featuregate-test-analyzer.go (1)

1055-1145: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

getInstallTestLevelData largely duplicates listTestResultForVariant.

The transport/client construction, getRelease() call, per-query URL building, request/response handling, and current-vs-previous accumulation are copied almost verbatim from listTestResultForVariant (Lines 1147-1266). Consider extracting a shared helper (e.g. one that takes the built queries and returns aggregated TestResults) to avoid the two paths drifting apart.

🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go` around lines 1055 - 1145,
Refactor getInstallTestLevelData and listTestResultForVariant to share a helper
that accepts the built queries and performs release lookup, Sippy client setup,
request/response processing, and current-versus-previous run aggregation into
TestResults. Remove the duplicated logic from both callers while preserving
their existing query construction and returned results.
🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go`:
- Around line 1060-1069: Remove InsecureSkipVerify from the tls.Config used by
defaultTransport so Sippy requests use certificate verification. Rely on the
system trust store by default, or explicitly load the required private CA into
RootCAs if Sippy depends on one.
- Around line 529-560: Update checkIfTestingIsSufficient so Install feature
gates use the dedicated installTestLevelData results when locating “install
should succeed: overall”, rather than testedVariant.TestResults. Thread the
install results through the relevant callers and preserve the existing
run-count, pass-rate, and warning validation behavior.
- Around line 38-44: Set requiredPassRateForInstallTest to an explicit 1.0
instead of reusing requiredPassRateOfTestsPerVariant, keeping the
install-success threshold independent so only a 100% pass rate satisfies the
check and reporting.

---

Nitpick comments:
In `@tools/codegen/cmd/featuregate-test-analyzer.go`:
- Around line 1055-1145: Refactor getInstallTestLevelData and
listTestResultForVariant to share a helper that accepts the built queries and
performs release lookup, Sippy client setup, request/response processing, and
current-versus-previous run aggregation into TestResults. Remove the duplicated
logic from both callers while preserving their existing query construction and
returned results.

In `@tools/codegen/pkg/sippy/json_types.go`:
- Around line 182-278: Refactor QueriesForWithCapability and QueriesFor to share
one internal query-building path, such as a builder accepting an optional
capability filter. Preserve the existing networkStack/OS handling, jobTiers
parsing, deduplication, defaults, and per-tier query generation, while adding
the Capability variant only for QueriesForWithCapability and removing the
duplicated implementation.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 4cbe27d3-b167-420d-a2f5-1725ef100c38

📥 Commits

Reviewing files that changed from the base of the PR and between 2db4418 and 888d0e1.

📒 Files selected for processing (3)
  • tools/codegen/cmd/featuregate-test-analyzer.go
  • tools/codegen/cmd/featuregate-test-analyzer_test.go
  • tools/codegen/pkg/sippy/json_types.go

Comment thread tools/codegen/cmd/featuregate-test-analyzer.go Outdated
Comment thread tools/codegen/cmd/featuregate-test-analyzer.go
Comment on lines +1060 to +1069
defaultTransport := &http.Transport{
Proxy: http.ProxyFromEnvironment,
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Map the file and inspect the relevant area.
ast-grep outline tools/codegen/cmd/featuregate-test-analyzer.go --view expanded || true
echo '---'
sed -n '1020,1105p' tools/codegen/cmd/featuregate-test-analyzer.go

echo '--- SEARCH ---'
rg -n "InsecureSkipVerify|ProxyFromEnvironment|Sippy|sippy|RootCAs|MinVersion|tls.VersionTLS12|http.Transport" tools/codegen/cmd/featuregate-test-analyzer.go tools/codegen -S

Repository: openshift/api

Length of output: 25449


Avoid disabling TLS verification here. InsecureSkipVerify: true leaves the Sippy requests open to MITM; use the system trust store or a dedicated RootCAs bundle instead. If Sippy needs a private CA, load it explicitly.

🧰 Tools
🪛 ast-grep (0.44.1)

[warning] 1059-1069: This http.Transport is configured with a tls.Config that sets InsecureSkipVerify: true, which disables TLS certificate verification for every request made through the resulting http.Client. The server's certificate chain and host name are not validated, exposing the connection to man-in-the-middle attacks. Remove InsecureSkipVerify (or set it to false) and supply a proper RootCAs pool if you need to trust custom certificates.
Context: http.Transport{
Proxy: http.ProxyFromEnvironment,
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
Note: [CWE-295] Improper Certificate Validation.

(http-transport-tls-skip-verify-go)


[warning] 1066-1068: MinVersionis missing from this TLS configuration. By default, TLS 1.2 is currently used as the minimum when acting as a client, and TLS 1.0 when acting as a server. General purpose web applications should default to TLS 1.3 with all other protocols disabled. Only where it is known that a web server must support legacy clients with unsupported an insecure browsers (such as Internet Explorer 10), it may be necessary to enable TLS 1.0 to provide support. AddMinVersion: tls.VersionTLS13' to the TLS configuration to bump the minimum version to TLS 1.3.
Context: tls.Config{
InsecureSkipVerify: true,
}
Note: [CWE-327]: Use of a Broken or Risky Cryptographic Algorithm [OWASP A03:2017]: Sensitive Data Exposure [OWASP A02:2021]: Cryptographic Failures

(missing-ssl-minversion-go)

🪛 OpenGrep (1.25.0)

[ERROR] 1067-1069: TLS certificate verification is disabled via InsecureSkipVerify. This allows man-in-the-middle attacks. Remove InsecureSkipVerify or set it to false.

(coderabbit.tls.go-insecure-skip-verify)


[ERROR] 1067-1069: TLS certificate verification is disabled via InsecureSkipVerify. This allows man-in-the-middle attacks. Remove InsecureSkipVerify or set it to false.

(coderabbit.tls.go-insecure-skip-verify)

🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go` around lines 1060 - 1069,
Remove InsecureSkipVerify from the tls.Config used by defaultTransport so Sippy
requests use certificate verification. Rely on the system trust store by
default, or explicitly load the required private CA into RootCAs if Sippy
depends on one.

Source: Linters/SAST tools

@andfasano

Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-for-rh-openshift

qodo-for-rh-openshift Bot commented Jul 22, 2026

Copy link
Copy Markdown

PR-Agent: could not find a component named verify-feature-promotion in a supported language in this PR.

sadasu added 2 commits July 22, 2026 11:32
Augment `verify-feature-promotion` output to indicate pass percentage
for `install should succeed` tests for featuregates that include
"Install" in their name.

This update gives a better indication of whether Install features
are failing at installation or later during execution of e2e
conformance tests.

This update does not change the criteria for reporting success
but adds more information in the output for easier analysis of
feature state.
@sadasu
sadasu force-pushed the agent-iri-promotion branch from 888d0e1 to a59e7e0 Compare July 22, 2026 15:34

@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: 1

♻️ Duplicate comments (1)
tools/codegen/cmd/featuregate-test-analyzer.go (1)

996-1006: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

InsecureSkipVerify: true copy-pasted into the new getInstallTestLevelData transport.

This repeats the same TLS-verification-disabled pattern already flagged elsewhere in this file for listTestResultForVariant/verifyJobBasedFeatureGatePromotion. Every Sippy request from this client is exposed to MITM. Also missing MinVersion.

🔒 Suggested fix
 		TLSClientConfig: &tls.Config{
-			InsecureSkipVerify: true,
+			MinVersion: tls.VersionTLS12,
 		},
🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go` around lines 996 - 1006,
Update the transport used by getInstallTestLevelData to remove TLS verification
bypass by eliminating InsecureSkipVerify, and configure TLSClientConfig with the
required minimum TLS version. Preserve the existing HTTP transport settings and
ensure all Sippy requests use certificate and hostname verification.
🧹 Nitpick comments (2)
tools/codegen/cmd/featuregate-test-analyzer.go (2)

991-1081: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the repeated Sippy HTTP client construction.

The defaultTransport/sippyClient block here duplicates the identical boilerplate in listTestResultForVariant (Lines 1098-1113) and verifyJobBasedFeatureGatePromotion (Lines 1219-1234). Adding a fourth copy each time a new Sippy caller is introduced compounds the TLS-config issue above and the general maintenance burden.

🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go` around lines 991 - 1081,
Extract the shared defaultTransport and sippyClient construction from
getInstallTestLevelData, listTestResultForVariant, and
verifyJobBasedFeatureGatePromotion into a reusable helper. Update all three
callers to use that helper, preserving the existing timeout, transport, proxy,
HTTP/2, connection, and TLS settings.

868-874: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Avoid appending duplicate metal single/compact variants. filterVariants(...) can already return these JobVariants, so this unconditional loop can repeat the same Sippy calls for metal-specific feature gates.

🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go` around lines 868 - 874,
Update the loop over optionalSelfManagedPlatformVariants in the feature-gate
variant selection flow to append metal single and compact variants only when
they are not already present in jobVariantsToCheck. Reuse the existing
JobVariant identity or comparison logic, preserving inclusion of missing metal
variants without duplicating entries returned by filterVariants.
🤖 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 `@tools/codegen/cmd/featuregate-test-analyzer.go`:
- Line 187: Thread installTestLevelData from listTestResultFor through
checkIfTestingIsSufficient and use it for the “install should succeed: overall”
validation instead of testedVariant.TestResults. Preserve existing validation
for other feature-gate types, and ensure missing install data remains blocking
according to the intended 100% install requirement.

---

Duplicate comments:
In `@tools/codegen/cmd/featuregate-test-analyzer.go`:
- Around line 996-1006: Update the transport used by getInstallTestLevelData to
remove TLS verification bypass by eliminating InsecureSkipVerify, and configure
TLSClientConfig with the required minimum TLS version. Preserve the existing
HTTP transport settings and ensure all Sippy requests use certificate and
hostname verification.

---

Nitpick comments:
In `@tools/codegen/cmd/featuregate-test-analyzer.go`:
- Around line 991-1081: Extract the shared defaultTransport and sippyClient
construction from getInstallTestLevelData, listTestResultForVariant, and
verifyJobBasedFeatureGatePromotion into a reusable helper. Update all three
callers to use that helper, preserving the existing timeout, transport, proxy,
HTTP/2, connection, and TLS settings.
- Around line 868-874: Update the loop over optionalSelfManagedPlatformVariants
in the feature-gate variant selection flow to append metal single and compact
variants only when they are not already present in jobVariantsToCheck. Reuse the
existing JobVariant identity or comparison logic, preserving inclusion of
missing metal variants without duplicating entries returned by filterVariants.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: e481f901-cac2-4c1e-87c1-b1aec2ff3eba

📥 Commits

Reviewing files that changed from the base of the PR and between 888d0e1 and a59e7e0.

📒 Files selected for processing (3)
  • tools/codegen/cmd/featuregate-test-analyzer.go
  • tools/codegen/cmd/featuregate-test-analyzer_test.go
  • tools/codegen/pkg/sippy/json_types.go
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/codegen/pkg/sippy/json_types.go
  • tools/codegen/cmd/featuregate-test-analyzer_test.go

Comment thread tools/codegen/cmd/featuregate-test-analyzer.go
@andfasano

Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-for-rh-openshift

qodo-for-rh-openshift Bot commented Jul 22, 2026

Copy link
Copy Markdown

PR-Agent: could not find a component named verify-feature-promotion in a supported language in this PR.

Ignore runs with internal and external infrastrcuture failures while
calculating pass percentages.
@openshift-ci

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

@sadasu: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/verify-hypershift-integration fd7e0ed link true /test verify-hypershift-integration
ci/prow/verify-feature-promotion fd7e0ed link true /test verify-feature-promotion

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.

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

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants