Skip to content

METAL-1977: add MetalEnrollmentAPI feature gate - #3090

Open
dtantsur wants to merge 1 commit into
openshift:masterfrom
dtantsur:metal-enrollment
Open

dtantsur wants to merge 1 commit into
openshift:masterfrom
dtantsur:metal-enrollment

Conversation

@dtantsur

Copy link
Copy Markdown
Member

See openshift/enhancements#2118 for details.

Signed-off-by: Dmitry Tantsur dtantsur@protonmail.com

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification

This PR uses the pipeline controller for second-stage tests. Selection and triggering follow the repository configuration.

Use /test ? to list jobs and /pipeline help for commands.

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

openshift-ci-robot commented Oct 12, 2026 •

Copy link
Copy Markdown

@dtantsur: This pull request references METAL-1977 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 task to target the "5.1.0" version, but no target version was set.

Details

In response to this:

See openshift/enhancements#2118 for details.

Signed-off-by: Dmitry Tantsur dtantsur@protonmail.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.

@openshift-ci

openshift-ci Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Hello @dtantsur! 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.

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Source mode: Auto
  • Repository: openshift/api
  • Branch: master
  • File: .coderabbit.yaml
  • Commit: 9809689
  • Layers: Repository YAML (base), Central YAML (inherited)
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 7f8f23cf-7d8d-42be-8b80-9ae45076d769
📥 Commits

Reviewing files that changed from the base of the PR and between b957faf and d5a84d0.

📒 Files selected for processing: 14
  • features.md
  • features/features.go
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-SelfManagedHA-TechPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-5-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-5-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-5-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-5-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
🚧 Files skipped from review as they are similar to previous changes: 1
  • features.md

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

📝 Walkthrough

The change adds the exported FeatureGateMetalEnrollmentAPI variable. It sets the gate scope to OpenShift, assigns the Bare Metal Hardware Provisioning component and contact, references enhancement 2118, and enables Dev Preview No Upgrade. The feature table and payload manifests record the gate as enabled for DevPreviewNoUpgrade and disabled in the listed other configurations.

Suggested reviewers: dobsonj

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to d5a84

The gate registration and listed feature-set states appear consistent. No concrete merge-blocking defect is established; confirm the pending checks before merging.

Pre-merge checks: Passed 15
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the addition of the MetalEnrollmentAPI feature gate, which is the main change.
Description check Passed The description links to the relevant enhancement proposal and is directly related to the feature-gate changes.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
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 pull request adds a feature-gate declaration and manifest entries only. The authoritative diff contains no Ginkgo test declarations or test titles, so it introduces no unstable or legacy met…
Test Structure And Quality Passed The pull request adds no Ginkgo test code and no new It() blocks. The changed files contain only feature-gate registration, documentation, and manifests, so the listed test-structure requirements do…
Microshift Test Compatibility Passed The pull request adds a feature-gate declaration, documentation, and feature-gate manifest entries only. The reviewed diff contains no new Ginkgo tests or test files, so the MicroShift test compatibil…
Single Node Openshift (Sno) Test Compatibility Passed The pull request adds only feature-gate registration, documentation, and YAML manifest entries. The reviewed diff adds no Ginkgo e2e tests or test constructs such as It(), Describe(), Context(), or Wh…
Topology-Aware Scheduling Compatibility Passed The pull request only adds and registers the MetalEnrollmentAPI feature gate and adds its name to feature-gate lists. The 45 added lines contain no deployment, controller, pod, affinity, topology sp…
Ote Binary Stdout Contract Passed PASS: The pull request changes only feature-gate registration, documentation, and YAML manifests. The Go addition contains no process-level stdout or logging code, and the added lines contain no stdou…
Ipv6 And Disconnected Network Test Compatibility Passed The pull request adds a feature-gate declaration and updates Markdown and YAML manifests. It adds no Ginkgo e2e tests or test network operations, so this compatibility check is not applicable.
No-Weak-Crypto Passed The pull request adds only the MetalEnrollmentAPI feature-gate declaration, documentation, and manifest entries. The added lines contain no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom cryptograph…
Container-Privileges Passed The pull request only registers the MetalEnrollmentAPI feature gate and adds its name to FeatureGate status lists. The changed manifests are FeatureGate objects with no container or securityContext fi…
No-Sensitive-Data-In-Logs Passed The pull request adds only feature-gate registration, documentation, and manifest entries. The changed additions contain no logging calls or sensitive values such as passwords, tokens, API keys, PII, …
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (13 skipped: 13 unsupported.)

Full details: Stable And Deterministic Test Names

Explanation

PASS: The pull request adds a feature-gate declaration and manifest entries only. The authoritative diff contains no Ginkgo test declarations or test titles, so it introduces no unstable or legacy metadata test names.

Full details: Test Structure And Quality

Explanation

The pull request adds no Ginkgo test code and no new It() blocks. The changed files contain only feature-gate registration, documentation, and manifests, so the listed test-structure requirements do not apply.

Full details: Microshift Test Compatibility

Explanation

The pull request adds a feature-gate declaration, documentation, and feature-gate manifest entries only. The reviewed diff contains no new Ginkgo tests or test files, so the MicroShift test compatibility check is not applicable.

Full details: Single Node Openshift (Sno) Test Compatibility

Explanation

The pull request adds only feature-gate registration, documentation, and YAML manifest entries. The reviewed diff adds no Ginkgo e2e tests or test constructs such as It(), Describe(), Context(), or When(). Therefore, the SNO compatibility check is not applicable.

Full details: Topology-Aware Scheduling Compatibility

Explanation

The pull request only adds and registers the MetalEnrollmentAPI feature gate and adds its name to feature-gate lists. The 45 added lines contain no deployment, controller, pod, affinity, topology spread, replica, node selector, toleration, taint, or PDB settings. It introduces no topology-dependent scheduling constraint.

Full details: Ote Binary Stdout Contract

Explanation

PASS: The pull request changes only feature-gate registration, documentation, and YAML manifests. The Go addition contains no process-level stdout or logging code, and the added lines contain no stdout, klog, fmt.Print, suite setup, or main/test entry-point writes.

Full details: No-Weak-Crypto

Explanation

The pull request adds only the MetalEnrollmentAPI feature-gate declaration, documentation, and manifest entries. The added lines contain no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom cryptography, or secret comparison logic.

Full details: Container-Privileges

Explanation

The pull request only registers the MetalEnrollmentAPI feature gate and adds its name to FeatureGate status lists. The changed manifests are FeatureGate objects with no container or securityContext fields. No added privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, root, or allowPrivilegeEscalation setting is present.

Full details: No-Sensitive-Data-In-Logs

Explanation

The pull request adds only feature-gate registration, documentation, and manifest entries. The changed additions contain no logging calls or sensitive values such as passwords, tokens, API keys, PII, hostnames, or customer data.

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

Warning

Some tools did not complete. Review the errors below.

🔧 golangci-lint (2.14.0)

golangci-lint (2.14.0) skipped for .golangci.yaml: configuration contains disallowed or uninspectable plugin or linter settings. Use supported built-in linters.

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

@openshift-ci openshift-ci Bot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Oct 12, 2026
@JoelSpeed

Copy link
Copy Markdown
Contributor

CI has picked up a code generation issue. Otherwise LGTM

@openshift-ci openshift-ci Bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Oct 12, 2026
@JoelSpeed

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added lgtm Indicates that a PR is ready to be merged. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Oct 14, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-customnoupgrade
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change
/test minor-e2e-upgrade-minor

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 14, 2026
@openshift-ci openshift-ci Bot removed lgtm Indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Oct 19, 2026

@everettraven everettraven left a comment

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.

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Oct 20, 2026
@redhat-chai-bot

Copy link
Copy Markdown
Contributor

Chai test selection for 09e4df9fa1c7427238392a3c9079c6bc23753387 → master

  • pull-ci-openshift-api-master-e2e-aws-ovn
  • pull-ci-openshift-api-master-e2e-aws-ovn-techpreview
  • pull-ci-openshift-api-master-e2e-upgrade

Reason: PR adds a new MetalEnrollmentAPI feature gate with enable(inDevPreviewNoUpgrade()). The change is purely additive: a new Go feature gate registration in features/features.go and the gate name added to sorted lists in 14 payload-manifests/featuregates/*.yaml files. No existing code path or gate value changes; the gate has no consumer in openshift/api (consumed by baremetal-operator). Selected jobs cover the three distinct verification surfaces: 1. e2e-aws-ovn (Default): Verifies cluster bootstrap with the new gate declared as disabled — confirms the Go registration loads without error and the modified FeatureGate CRDs apply cleanly. 2. e2e-aws-ovn-techpreview (TechPreview): Verifies the cluster boots with the gate enabled in TechPreview, confirming the feature gate controller processes it without issue. 3. e2e-upgrade: Verifies the payload manifest additions don't break the CRD update path during upgrade. Excluded: - vSphere jobs: no files match the vSphere annotation regex (no changes to types_infrastructure.go, VSphere CRD manifests, or infrastructure/CSI/machine-config Default/TechPreview CRD payloads). - Azure/GCP: cloud-agnostic change; same manifests deploy on all clouds. - HyperShift: Hypershift manifests received the identical additive change (one name in a sorted list); the Default + TechPreview SelfManagedHA runs validate the same gate registration and manifest parsing. - Serial, CustomNoUpgrade, out-of-change/minor upgrade: no incremental coverage for a declarative additive gate registration beyond the three selected jobs.

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

/pipeline mark-pipeline-gate 09e4df9

@dtantsur

Copy link
Copy Markdown
Member Author

/verified later @dtantsur

@openshift-ci-robot openshift-ci-robot added verified-later verified Signifies that the PR passed pre-merge verification criteria labels Oct 20, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@dtantsur: This PR has been marked to be verified later by @dtantsur.

Details

In response to this:

/verified later @dtantsur

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.

@dtantsur

Copy link
Copy Markdown
Member Author

/pipeline required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

The controller does not dispatch second-stage tests in agentic mode. Use /pipeline skip-agentic-mode first, then repeat this command. The request was not queued.

@dtantsur

Copy link
Copy Markdown
Member Author

@redhat-chai-bot can you make the jobs actually run? The PR is blocked.

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

/pipeline skip-agentic-mode

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Traditional pipeline scheduling is enabled for this PR and future pushes. Running tests are unchanged.

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

/pipeline required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-customnoupgrade
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change
/test minor-e2e-upgrade-minor

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

The earlier required-pipeline request was not queued because this PR was in agentic mode. I switched this PR to traditional pipeline scheduling and retried the required pipeline; the merge bot confirmed scheduling is enabled and announced the second-stage test selections. The latest check snapshot still shows 15 pending checks (16 passed, 0 failed), so the tests have been scheduled but have not completed yet.


AI-generated. Review for accuracy.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD a5e46a3 and 2 for PR HEAD 09e4df9 in total

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 736ea4c and 1 for PR HEAD 09e4df9 in total

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD def65fd and 0 for PR HEAD 09e4df9 in total

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 22, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/hold

Revision 09e4df9 was retested 3 times: holding

@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 Oct 23, 2026
@dtantsur

Copy link
Copy Markdown
Member Author

/hold cancel

Stupid bot (or our stupid policies?)

@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 Oct 23, 2026
See openshift/enhancements#2118 for details.

Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
@openshift-ci-robot openshift-ci-robot removed verified Signifies that the PR passed pre-merge verification criteria verified-later labels Oct 23, 2026
@openshift-ci openshift-ci Bot removed lgtm Indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Oct 23, 2026
@JoelSpeed

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Oct 23, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-customnoupgrade
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change
/test minor-e2e-upgrade-minor

@openshift-ci

openshift-ci Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: everettraven, JoelSpeed

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:
  • OWNERS [JoelSpeed,everettraven]

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

@dtantsur

Copy link
Copy Markdown
Member Author

/retest-required

@openshift-ci

openshift-ci Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

@dtantsur: 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/e2e-azure d5a84d0 link true /test e2e-azure
ci/prow/e2e-aws-serial-2of2 d5a84d0 link true /test e2e-aws-serial-2of2
ci/prow/e2e-aws-serial-techpreview-2of2 d5a84d0 link true /test e2e-aws-serial-techpreview-2of2

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

approved Indicates a PR has been approved by an approver from all required OWNERS files. 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. pipeline-skip-agentic-mode 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.

5 participants