Skip to content

OPNET-780: Add BGPBasedVIPManagement feature gate and BGP VIP management fields - #2923

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:masterfrom
mkowalski:opnet-595-bgp-vip-api
Jul 24, 2026
Merged

OPNET-780: Add BGPBasedVIPManagement feature gate and BGP VIP management fields#2923
openshift-merge-bot[bot] merged 2 commits into
openshift:masterfrom
mkowalski:opnet-595-bgp-vip-api

Conversation

@mkowalski

@mkowalskimkowalski commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

What

API surface for BGP-based VIP management on on-premise clusters — enhancement openshift/enhancements#1982 (OPNET-595). Two commits:

  1. config/v1: BGPBasedVIPManagement feature gate (DevPreviewNoUpgrade) and BareMetalPlatformStatus.VIPManagement — reports which mechanism (Keepalived/BGP) manages the API and Ingress VIPs. Set at install time by the installer; consumed by MCO and CNO.
  2. machineconfiguration/v1: ControllerConfigSpec.BGPVIPPeersJSON — internal MCO API carrying the installer-generated BGP peer configuration (the bgp-vip-config ConfigMap payload, validated and compacted by the MCO operator) to the template controller, which renders the frr-k8s static pod peer file on control plane nodes. Bounded (1–65536), optional.

Safety without backing implementation

Deliberately safe to merge stand-alone:

  • Both fields are behind +openshift:enable:FeatureGate=BGPBasedVIPManagement; the gate is enabled only in DevPreviewNoUpgrade (verified across all 8 payload featuregate manifests). The fields are pruned from Default/TechPreview/OKD CRD variants (verified: zero occurrences outside CustomNoUpgrade/DevPreviewNoUpgrade schemas, including the ControllerConfig CRDs that embed Infrastructure).
  • Both fields are +optional/omitempty with no defaults; nothing in-payload sets or reads them until the implementation PRs land.
  • make lint clean, make update idempotent on the branch.

Reviewer note on the large generated diff in commit 1

Enabling a profile-agnostic gate in DevPreviewNoUpgrade changes which feature-set CRD schemas are byte-identical, so the manifest-merge generator regroups files (SelfManagedHA {CustomNoUpgrade,DevPreviewNoUpgrade} pair up; Hypershift TechPreview variants merge across profiles). Verified with a control experiment: make update twice on pristine master produces zero changes — the regrouping is entirely attributable to the new gate, per tools/codegen/pkg/manifestmerge/generator.go grouping logic.

Validation

The consuming implementation exists and was validated end to end on a dev-scripts baremetal cluster (installation over a BGP-advertised API VIP, health-gated ECMP for both VIPs, CRD handover); reference implementation and evidence: https://github.com/mkowalski/bgp-vip-demo. Related PRs in flight: kube-vip/kube-vip#1627, openshift-metal3/dev-scripts#1929.

@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-robotopenshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 9, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 9, 2026

Copy link
Copy Markdown

@mkowalski: This pull request references OPNET-595 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 the "5.0.0" version, but no target version was set.

Details

In response to this:

What

API surface for BGP-based VIP management on on-premise clusters — enhancement openshift/enhancements#1982 (OPNET-595). Two commits:

  1. config/v1: BGPBasedVIPManagement feature gate (DevPreviewNoUpgrade) and BareMetalPlatformStatus.VIPManagement — reports which mechanism (Keepalived/BGP) manages the API and Ingress VIPs. Set at install time by the installer; consumed by MCO and CNO.
  2. machineconfiguration/v1: ControllerConfigSpec.BGPVIPPeersJSON — internal MCO API carrying the installer-generated BGP peer configuration (the bgp-vip-config ConfigMap payload, validated and compacted by the MCO operator) to the template controller, which renders the frr-k8s static pod peer file on control plane nodes. Bounded (1–65536), optional.

Safety without backing implementation

Deliberately safe to merge stand-alone:

  • Both fields are behind +openshift:enable:FeatureGate=BGPBasedVIPManagement; the gate is enabled only in DevPreviewNoUpgrade (verified across all 8 payload featuregate manifests). The fields are pruned from Default/TechPreview/OKD CRD variants (verified: zero occurrences outside CustomNoUpgrade/DevPreviewNoUpgrade schemas, including the ControllerConfig CRDs that embed Infrastructure).
  • Both fields are +optional/omitempty with no defaults; nothing in-payload sets or reads them until the implementation PRs land.
  • make lint clean, make update idempotent on the branch.

Reviewer note on the large generated diff in commit 1

Enabling a profile-agnostic gate in DevPreviewNoUpgrade changes which feature-set CRD schemas are byte-identical, so the manifest-merge generator regroups files (SelfManagedHA {CustomNoUpgrade,DevPreviewNoUpgrade} pair up; Hypershift TechPreview variants merge across profiles). Verified with a control experiment: make update twice on pristine master produces zero changes — the regrouping is entirely attributable to the new gate, per tools/codegen/pkg/manifestmerge/generator.go grouping logic.

Validation

The consuming implementation exists and was validated end to end on a dev-scripts baremetal cluster (installation over a BGP-advertised API VIP, health-gated ECMP for both VIPs, CRD handover); reference implementation and evidence: https://github.com/mkowalski/bgp-vip-demo. Related PRs in flight: kube-vip/kube-vip#1627, openshift-metal3/dev-scripts#1929.

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

Copy link
Copy Markdown
Contributor

Hello @mkowalski! 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

coderabbitaiBot commented Jul 9, 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 adds BGP VIP management API fields, feature-gate registration, DevPreviewNoUpgrade enablement for Hypershift and SelfManagedHA, generated CRD schema updates, release feature-gate manifests, and CRD validation tests for supported and invalid values.

Suggested reviewers:jkyros, joelspeed

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Ipv6 And Disconnected Network Test Compatibility⚠️ WarningFAIL: the new controllerconfig test hardcodes IPv4 literals (10.0.0.1, 10.38.153.2/3, 192.168.111.1), so it isn't IPv6-safe.Replace hardcoded IPv4 fixtures with family-aware values or IPv6 equivalents, and avoid any IPv4-only assumptions in the new test cases.
✅ Passed checks (14 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main change: adding the BGPBasedVIPManagement feature gate and related BGP VIP management fields.
Description check✅ PassedThe description matches the changeset and explains the feature gate and new API fields in detail.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names✅ PassedThe added test titles are static, descriptive strings; no Ginkgo/CRD test name contains generated suffixes, dates, UUIDs, IPs, or node/namespace names.
Test Structure And Quality✅ PassedNo Ginkgo specs were added or changed; the only Go test edit is a simple non-Ginkgo unit test, and the new YAML files are declarative fixtures.
Microshift Test Compatibility✅ PassedNo new Ginkgo e2e tests were added; the PR only changes API types, feature-gate manifests, and CRD test YAML fixtures, so this check is not applicable.
Single Node Openshift (Sno) Test Compatibility✅ PassedNo new Ginkgo e2e tests were added; the PR only adds CRD/schema YAML tests, and the new controllerconfig cases include SingleReplica fixtures rather than HA-only assumptions.
Topology-Aware Scheduling Compatibility✅ PassedChanged files only add API/CRD schema and feature-gate metadata; no replicas, nodeSelectors, affinities, topology spreads, or PDBs were introduced.
Ote Binary Stdout Contract✅ PassedPASS: Searched touched Go files and feature-gate init path; no fmt.Print/klog/log.SetOutput or process-level init/TestMain/BeforeSuite/RunSpecs writes were found.
No-Weak-Crypto✅ PassedPatch adds API/schema fields and feature-gate manifests only; no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or unsafe secret comparisons were introduced.
Container-Privileges✅ PassedThe PR only touches CRDs, feature-gates, and tests; no changed file contains privileged/hostNetwork/hostPID/hostIPC/allowPrivilegeEscalation/SYS_ADMIN or root settings.
No-Sensitive-Data-In-Logs✅ PassedPASS: The diff only adds static API schema/test fixtures; searches of the touched Go files found no fmt/log/klog/t.Log calls or sensitive lexemes being logged.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ciopenshift-ciBot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Jul 9, 2026
@openshift-ci
openshift-ciBot requested review from JoelSpeed and jkyrosJuly 9, 2026 16:19
@mkowalskimkowalski changed the title OPNET-595: Add BGPBasedVIPManagement feature gate and BGP VIP management fieldsOPNET-780: Add BGPBasedVIPManagement feature gate and BGP VIP management fieldsJul 9, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 9, 2026

Copy link
Copy Markdown

@mkowalski: This pull request references OPNET-780 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:

What

API surface for BGP-based VIP management on on-premise clusters — enhancement openshift/enhancements#1982 (OPNET-595). Two commits:

  1. config/v1: BGPBasedVIPManagement feature gate (DevPreviewNoUpgrade) and BareMetalPlatformStatus.VIPManagement — reports which mechanism (Keepalived/BGP) manages the API and Ingress VIPs. Set at install time by the installer; consumed by MCO and CNO.
  2. machineconfiguration/v1: ControllerConfigSpec.BGPVIPPeersJSON — internal MCO API carrying the installer-generated BGP peer configuration (the bgp-vip-config ConfigMap payload, validated and compacted by the MCO operator) to the template controller, which renders the frr-k8s static pod peer file on control plane nodes. Bounded (1–65536), optional.

Safety without backing implementation

Deliberately safe to merge stand-alone:

  • Both fields are behind +openshift:enable:FeatureGate=BGPBasedVIPManagement; the gate is enabled only in DevPreviewNoUpgrade (verified across all 8 payload featuregate manifests). The fields are pruned from Default/TechPreview/OKD CRD variants (verified: zero occurrences outside CustomNoUpgrade/DevPreviewNoUpgrade schemas, including the ControllerConfig CRDs that embed Infrastructure).
  • Both fields are +optional/omitempty with no defaults; nothing in-payload sets or reads them until the implementation PRs land.
  • make lint clean, make update idempotent on the branch.

Reviewer note on the large generated diff in commit 1

Enabling a profile-agnostic gate in DevPreviewNoUpgrade changes which feature-set CRD schemas are byte-identical, so the manifest-merge generator regroups files (SelfManagedHA {CustomNoUpgrade,DevPreviewNoUpgrade} pair up; Hypershift TechPreview variants merge across profiles). Verified with a control experiment: make update twice on pristine master produces zero changes — the regrouping is entirely attributable to the new gate, per tools/codegen/pkg/manifestmerge/generator.go grouping logic.

Validation

The consuming implementation exists and was validated end to end on a dev-scripts baremetal cluster (installation over a BGP-advertised API VIP, health-gated ECMP for both VIPs, CRD handover); reference implementation and evidence: https://github.com/mkowalski/bgp-vip-demo. Related PRs in flight: kube-vip/kube-vip#1627, openshift-metal3/dev-scripts#1929.

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.

@mkowalski
mkowalskiforce-pushed the opnet-595-bgp-vip-api branch from 661c092 to 00a1277CompareJuly 9, 2026 18:10
mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 10, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
@mkowalski
mkowalski requested a review from CopilotJuly 10, 2026 12:41

CopilotAI 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.

Pull request overview

This PR introduces the API surface (behind a new BGPBasedVIPManagement feature gate) needed to support BGP-based management of API/Ingress VIPs on on-premise clusters, along with the corresponding feature-set manifests, CRD/OpenAPI regeneration, and validation tests.

Changes:

  • Adds the BGPBasedVIPManagement feature gate (enabled only in DevPreviewNoUpgrade) and wires it into payload featuregate manifests.
  • Adds feature-gated API fields:
    • config/v1: BareMetalPlatformStatus.VIPManagement to report the active VIP management mechanism (Keepalived/BGP).
    • machineconfiguration/v1: ControllerConfigSpec.BGPVIPPeersJSON to carry installer-provided BGP peer config to MCO internals.
  • Updates generated CRDs/OpenAPI artifacts and adds feature-gated API validation tests.

Reviewed changes

Copilot reviewed 43 out of 45 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yamlAdds BGPBasedVIPManagement to the disabled set for this feature-set/profile.
payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yamlAdds BGPBasedVIPManagement to the disabled set for OKD.
payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yamlEnsures BGPBasedVIPManagement is enabled in DevPreviewNoUpgrade.
payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yamlAdds BGPBasedVIPManagement to the disabled set for Default.
payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yamlAdds BGPBasedVIPManagement to the disabled set for this feature-set/profile.
payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yamlAdds BGPBasedVIPManagement to the disabled set for OKD.
payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yamlEnsures BGPBasedVIPManagement is enabled in DevPreviewNoUpgrade.
payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yamlAdds BGPBasedVIPManagement to the disabled set for Default.
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yamlGenerated CRD update reflecting regrouping/annotations.
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON and related schema updates.
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON and related schema updates.
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON and related schema updates.
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON and related schema updates.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yamlGenerated CRD update reflecting regrouping/annotations.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement schema.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement schema.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yamlRemoves/regroups generated CRD due to manifest-merge grouping changes.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement schema.
payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement schema.
openapi/openapi.jsonUpdates generated OpenAPI definitions to include vipManagement field.
openapi/generated_openapi/zz_generated.openapi.goUpdates generated Go OpenAPI schema for the new field(s).
machineconfiguration/v1/zz_generated.swagger_doc_generated.goUpdates generated swagger docs for bgpVIPPeersJSON.
machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yamlGenerated feature-gated CRD manifest updated for the new field.
machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yamlRegisters the new feature gate for feature-gated CRD generation.
machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yamlGenerated CRD update reflecting regrouping/annotations.
machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON.
machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON.
machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON.
machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated bgpVIPPeersJSON.
machineconfiguration/v1/types.goAdds ControllerConfigSpec.BGPVIPPeersJSON behind BGPBasedVIPManagement.
machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yamlAdds feature-gated CRD validation tests for bgpVIPPeersJSON.
features/features.goRegisters the new BGPBasedVIPManagement feature gate (DevPreviewNoUpgrade).
features.mdUpdates the feature gate matrix to include BGPBasedVIPManagement.
config/v1/zz_generated.swagger_doc_generated.goUpdates generated swagger docs for vipManagement.
config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yamlGenerated feature-gated CRD manifest updated for the new field.
config/v1/zz_generated.featuregated-crd-manifests.yamlRegisters the new feature gate for feature-gated CRD generation.
config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yamlGenerated CRD update reflecting regrouping/annotations.
config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement.
config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement.
config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement.
config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yamlGenerated CRD includes feature-gated vipManagement.
config/v1/types_infrastructure.goAdds BareMetalPlatformStatus.VIPManagement behind BGPBasedVIPManagement.
config/v1/types_infrastructure_test.goUpdates the TechPreview CRD filename reference to match regrouped manifests.
config/v1/tests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yamlAdds feature-gated CRD validation tests for vipManagement.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadmachineconfiguration/v1/types.go
Comment threadconfig/v1/types_infrastructure.go Outdated
@mkowalski
mkowalskiforce-pushed the opnet-595-bgp-vip-api branch from 00a1277 to 9742e1fCompareJuly 13, 2026 13:01

@coderabbitaicoderabbitaiBot 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)
machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml (1)

8-14: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add coverage for the upper length bound.

The suite verifies acceptance and MinLength=1, but the PR contract describes bgpVIPPeersJSON as bounded. Add a payload exceeding the declared MaxLength and assert rejection so the generated schema cannot silently lose its upper bound.

Also applies to: 355-405

🤖 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
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml`
around lines 8 - 14, Add a test case in the BGPBasedVIPManagement validation
suite for bgpVIPPeersJSON whose payload exceeds the declared MaxLength, and
assert that the ControllerConfig is rejected. Reuse the existing acceptance and
minimum-length test structure so the generated schema’s upper bound is
explicitly covered.
🤖 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
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml`:
- Around line 8-14: Add a test case in the BGPBasedVIPManagement validation
suite for bgpVIPPeersJSON whose payload exceeds the declared MaxLength, and
assert that the ControllerConfig is rejected. Reuse the existing acceptance and
minimum-length test structure so the generated schema’s upper bound is
explicitly covered.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 180f7e11-7943-4787-9044-da86fbd9b33f

📥 Commits

Reviewing files that changed from the base of the PR and between 00a1277 and 9742e1f.

⛔ Files ignored due to path filters (19)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
📒 Files selected for processing (26)
  • config/v1/tests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml
  • config/v1/types_infrastructure.go
  • config/v1/types_infrastructure_test.go
  • features.md
  • features/features.go
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml
  • machineconfiguration/v1/types.go
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
  • 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-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
🚧 Files skipped from review as they are similar to previous changes (17)
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • features.md
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • machineconfiguration/v1/types.go
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • features/features.go
  • config/v1/types_infrastructure_test.go
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

@mkowalski

Copy link
Copy Markdown
ContributorAuthor

@coderabbitai full-review

@coderabbitai

coderabbitaiBot commented Jul 13, 2026

Copy link
Copy Markdown

@mkowalski: Understood, I'll perform a full review of all the changes in this PR.

✅ Action performed

Full review finished.

@coderabbitaicoderabbitaiBot 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

🤖 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
`@payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml`:
- Around line 65-76: Add API-path or validating-webhook validation for
bgpVIPPeersJSON so every non-empty value is parsed as JSON before persistence,
rejecting malformed payloads while preserving omission behavior. Do not rely on
the CRD schema’s length constraints or CEL; anchor the change to the
MachineConfig/ControllerConfig validation flow that persists this field.
🪄 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: ccb298ce-1390-4611-9ae7-131580e4c236

📥 Commits

Reviewing files that changed from the base of the PR and between d8a1748 and 9742e1f.

⛔ Files ignored due to path filters (19)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
📒 Files selected for processing (26)
  • config/v1/tests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml
  • config/v1/types_infrastructure.go
  • config/v1/types_infrastructure_test.go
  • features.md
  • features/features.go
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml
  • machineconfiguration/v1/types.go
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
  • 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-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml

@mkowalski
mkowalskiforce-pushed the opnet-595-bgp-vip-api branch from 9742e1f to eb996a3CompareJuly 14, 2026 11:28

@coderabbitaicoderabbitaiBot 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)
machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml (1)

355-405: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Exercise the upper bound too.BGPVIPPeersJSON is capped at 65536 chars, but this suite only checks the minimum. Add 65536 acceptance and 65537 rejection to guard the generated CRD’s max-length bound.

🤖 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
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml`
around lines 355 - 405, The BGPVIPPeersJSON validation tests only cover the
minimum length. Extend the ControllerConfig test cases to accept a value with
exactly 65536 characters and reject one with 65537 characters, using the
existing validation fixture structure and asserting the generated max-length
error for the oversized value.
🤖 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
`@machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml`:
- Around line 355-405: The BGPVIPPeersJSON validation tests only cover the
minimum length. Extend the ControllerConfig test cases to accept a value with
exactly 65536 characters and reject one with 65537 characters, using the
existing validation fixture structure and asserting the generated max-length
error for the oversized value.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 0ada3a9f-1610-41a6-88a5-1a98cb24a510

📥 Commits

Reviewing files that changed from the base of the PR and between 9742e1f and eb996a3.

⛔ Files ignored due to path filters (19)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.swagger_doc_generated.go is excluded by !**/zz_generated*
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
📒 Files selected for processing (26)
  • config/v1/tests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml
  • config/v1/types_infrastructure.go
  • config/v1/types_infrastructure_test.go
  • features.md
  • features/features.go
  • machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml
  • machineconfiguration/v1/types.go
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
  • 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-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
🚧 Files skipped from review as they are similar to previous changes (21)
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • config/v1/tests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
  • features/features.go
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
  • features.md
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml
  • machineconfiguration/v1/types.go
  • config/v1/types_infrastructure.go
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml

mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 15, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
The raw config carries no ip import-table: redistribute table-direct reads the kernel table directly.
mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 15, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
The raw config carries no ip import-table: redistribute table-direct reads the kernel table directly.
mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 15, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
The raw config carries no ip import-table: redistribute table-direct reads the kernel table directly.
mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 15, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
The raw config carries no ip import-table: redistribute table-direct reads the kernel table directly.

@yuqi-zhangyuqi-zhang 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.

Some comments inline based on my read of openshift/enhancements#1982

(since you are starting in dev preview, we have the additional benefit of merging this before openshift/enhancements#1982 needs to merge)

Comment threadconfig/v1/types_infrastructure.go
Comment threadfeatures/features.go
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=65536
// +optional
BGPVIPPeersJSON string `json:"bgpVIPPeersJSON,omitempty"`

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.

What's the benefit of this approach, vs having the controller that does the rendering directly read off the configmap?

This field seems somewhat redundant and also is a full json object serialized into a string, which doesn't seem like an API field on the controllerconfig spec.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

vs having the controller that does the rendering directly read off the configmap

We can't do it with configmap because this needs to run already at bootstrap when there is no API server. It would work for day-2 but not for install-time.

This field seems somewhat redundant

I don't see redundancy yet. Is there any other place which MCO can use to read things when generating stuff needed at boostrap? Installer feeds MCO with data, MCO generates static pods with configs they need to run.

also is a full json object serialized into a string

Right. Now it's like this because of how the data flows from installer to MCO. BGPPeerConfig is owned by the installer. Baremetal-runtimecfg is responsible for rendering a config for a specific node out of the complete configuration. In the middle we have MCO.

So from installer I get the manifests as a file (technically, it will be serialized BGPPeerConfig). MCO bootstrap reads those and feeds a field in ControllerConfigSpec (currently BGPVIPPeersJSON under discussion). MCO templates then render field from ControllerConfigSpec and the output is frr-peers.json installed via MachineConfig. Then baremetal-runtimecfg reads frr-peers.json and does the real job.

Because communication between installer and MCO happens via files, I just use MCO as a postman carrying serialized payload to the next recipient (baremetal-runtimecfg).

Let me know if you see some simpler/better way of doing it.

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.

I don't see redundancy yet. Is there any other place which MCO can use to read things when generating stuff needed at boostrap? Installer feeds MCO with data, MCO generates static pods with configs they need to run.

Most things do go through the controllerconfig process, but there are a few examples (pull secrets, templates, image references) that goes through install-config -> master ignition without the controllerconfig intermediary. The pull secret example is that the operator writes it to disk from parsing installconfig (https://github.com/openshift/machine-config-operator/blob/main/pkg/operator/bootstrap.go#L53) , the controller explicitly reads it https://github.com/openshift/machine-config-operator/blob/main/pkg/controller/bootstrap/bootstrap.go#L76 and then does the MachineConfig rendering. But now I think about it a bit more, this probably is better left as an exception rather than the norm.

I think my main hesitation here is that it's an unstructured string (although we have precedents here for legacy fields, I would lean towards adhering to better API practices where possible). Would you consider lifting BGPVIPConfig/BGPPeerConfig from the installer as a proper go struct here instead? We could also circle back on this after dev preview if you prefer.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

there are a few examples [..] that goes through install-config -> master ignition without the controllerconfig intermediary

As you said, it's rather exception. I think from those two options, it's better to have a proper API rather than going directly bypassing ControllerConfig.

Let's do it before TechPreview. This will allow us to use DevPreview to understand fully what is the best form of the structured API.

mkowalski added a commit to mkowalski/cluster-network-operator that referenced this pull request Jul 16, 2026
Render a sessions-only FRRConfiguration CR named bgp-vip
(namespace openshift-frr-k8s) when BGP-based VIP management is active:
BareMetal platform, the BGPBasedVIPManagement feature gate enabled,
and the Infrastructure CR reporting vipManagement "BGP". Peer/VIP data
is read from the installer's bgp-vip-config ConfigMap (schema =
baremetal-runtimecfg's FRRPeerMapping).
The CR carries only the BGP sessions (neighbors, BFD profiles). VIP
advertisement deliberately does not use CRD prefixes/toAdvertise:
frr-k8s renders router-level prefixes as unconditional `network`
statements that would defeat kube-vip's health gating, and toAdvertise
cannot express "advertise redistributed routes" - without it frr-k8s
renders deny-any egress prefix-lists. Advertisement therefore happens
exclusively via rawConfig: `ip import-table 198` plus health-gated
table-direct redistribution of routing table 198 (populated by
kube-vip only for VIPs with healthy backends), filtered through
route-maps/prefix-lists permitting exactly the VIP prefixes, with
high-sequence per-neighbor <peer>-out permits opening egress only for
the VIP prefix-lists.
The CR carries no node selector: workers' frr-k8s DaemonSet consumes
the same sessions and gated redistribution so router-bearing workers
advertise the ingress VIP.
The feature gate is defined locally and guarded via KnownFeatures
until openshift/api#2923 ships the gate, and the Infrastructure
vipManagement field is read unstructured until it lands in the
vendored openshift/api - the feature is inert until then.
Validated end to end (github.com/mkowalski/bgp-vip-demo).
The raw config carries no ip import-table: redistribute table-direct reads the kernel table directly.
@JoelSpeed

Copy link
Copy Markdown
Contributor

/lgtm
/override-sticky ci/prow/verify-hypershift-integration

@openshift-ci

Copy link
Copy Markdown
Contributor

@JoelSpeed: Overrode contexts on behalf of JoelSpeed: ci/prow/verify-hypershift-integration

These overrides will persist across retests on the current HEAD SHA. Pushing a new commit will clear them. Use /override-cancel to remove them.

Details

In response to this:

/lgtm
/override-sticky ci/prow/verify-hypershift-integration

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-ciopenshift-ciBot added the lgtm Indicates that a PR is ready to be merged. label Jul 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-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 e2e-vsphere-ovn
/test e2e-vsphere-ovn-techpreview
/test minor-e2e-upgrade-minor

@openshift-ci

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JoelSpeed, yuqi-zhang

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-ciopenshift-ciBot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 23, 2026
@mkowalski

Copy link
Copy Markdown
ContributorAuthor

/verified by myself later

Next step will be to vendor this into MCO and Installer. The code here "builds" as per ci/prow/unit

@openshift-ci-robotopenshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@mkowalski: This PR has been marked as verified by myself later.

Details

In response to this:

/verified by myself later

Next step will be to vendor this into MCO and Installer. The code here "builds" as per ci/prow/unit

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.

@mkowalski

Copy link
Copy Markdown
ContributorAuthor

/retest-required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 0f2bcae and 2 for PR HEAD 3199351 in total

mkowalski added a commit to mkowalski/machine-config-operator that referenced this pull request Jul 23, 2026
Temporary: vendors the openshift/api#2923 branch (BGPBasedVIPManagement
feature gate, Infrastructure vipManagement, ControllerConfigSpec
BGPVIPPeersJSON) via a module replace. Swapped for the merged module as
soon as openshift/api#2923 lands; every subsequent commit builds against
the identical API surface either way.
@openshift-ci

Copy link
Copy Markdown
Contributor

@mkowalski: /override requires failed status contexts, check run or a prowjob name to operate on.
The following unknown contexts/checkruns were given:

  • https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-vsphere-ovn-techpreview

Only the following failed contexts/checkruns were expected:

  • CodeRabbit
  • ci/prow/build
  • ci/prow/e2e-aws-ovn
  • ci/prow/e2e-aws-ovn-hypershift
  • ci/prow/e2e-aws-ovn-hypershift-conformance
  • ci/prow/e2e-aws-ovn-techpreview
  • ci/prow/e2e-aws-serial-1of2
  • ci/prow/e2e-aws-serial-2of2
  • ci/prow/e2e-aws-serial-techpreview-1of2
  • ci/prow/e2e-aws-serial-techpreview-2of2
  • ci/prow/e2e-azure
  • ci/prow/e2e-gcp
  • ci/prow/e2e-upgrade
  • ci/prow/e2e-upgrade-out-of-change
  • ci/prow/e2e-vsphere-ovn
  • ci/prow/e2e-vsphere-ovn-techpreview
  • ci/prow/images
  • ci/prow/integration
  • ci/prow/lint
  • ci/prow/minor-e2e-upgrade-minor
  • ci/prow/minor-images
  • ci/prow/okd-scos-images
  • ci/prow/unit
  • ci/prow/verify
  • ci/prow/verify-client-go
  • ci/prow/verify-crd-schema
  • ci/prow/verify-crdify
  • ci/prow/verify-deps
  • ci/prow/verify-feature-promotion
  • ci/prow/verify-hypershift-integration
  • pull-ci-openshift-api-master-build
  • pull-ci-openshift-api-master-e2e-aws-ovn
  • pull-ci-openshift-api-master-e2e-aws-ovn-hypershift
  • pull-ci-openshift-api-master-e2e-aws-ovn-hypershift-conformance
  • pull-ci-openshift-api-master-e2e-aws-ovn-techpreview
  • pull-ci-openshift-api-master-e2e-aws-serial-1of2
  • pull-ci-openshift-api-master-e2e-aws-serial-2of2
  • pull-ci-openshift-api-master-e2e-aws-serial-techpreview-1of2
  • pull-ci-openshift-api-master-e2e-aws-serial-techpreview-2of2
  • pull-ci-openshift-api-master-e2e-azure
  • pull-ci-openshift-api-master-e2e-gcp
  • pull-ci-openshift-api-master-e2e-upgrade
  • pull-ci-openshift-api-master-e2e-upgrade-out-of-change
  • pull-ci-openshift-api-master-e2e-vsphere-ovn
  • pull-ci-openshift-api-master-e2e-vsphere-ovn-techpreview
  • pull-ci-openshift-api-master-images
  • pull-ci-openshift-api-master-integration
  • pull-ci-openshift-api-master-lint
  • pull-ci-openshift-api-master-minor-e2e-upgrade-minor
  • pull-ci-openshift-api-master-minor-images
  • pull-ci-openshift-api-master-okd-scos-images
  • pull-ci-openshift-api-master-unit
  • pull-ci-openshift-api-master-verify
  • pull-ci-openshift-api-master-verify-client-go
  • pull-ci-openshift-api-master-verify-crd-schema
  • pull-ci-openshift-api-master-verify-crdify
  • pull-ci-openshift-api-master-verify-deps
  • pull-ci-openshift-api-master-verify-feature-promotion
  • pull-ci-openshift-api-master-verify-hypershift-integration
  • tide

If you are trying to override a checkrun that has a space in it, you must put a double quote on the context.

Details

In response to this:

/override ci/prow/e2e-aws-serial-techpreview-2of2
Job is sick -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-aws-serial-techpreview-2of2

/override ci/prow/e2e-aws-serial-techpreview-1of2
Job is sick -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-aws-serial-techpreview-1of2

/override https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-vsphere-ovn-techpreview
Job is flaky -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-vsphere-ovn-techpreview

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.

@mkowalski

Copy link
Copy Markdown
ContributorAuthor

@openshift-ci

Copy link
Copy Markdown
Contributor

@mkowalski: Overrode contexts on behalf of mkowalski: ci/prow/e2e-aws-serial-techpreview-1of2, ci/prow/e2e-aws-serial-techpreview-2of2, ci/prow/e2e-vsphere-ovn-techpreview

Details

In response to this:

/override ci/prow/e2e-aws-serial-techpreview-2of2
Job is sick -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-aws-serial-techpreview-2of2

/override ci/prow/e2e-aws-serial-techpreview-1of2
Job is sick -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-aws-serial-techpreview-1of2

/override ci/prow/e2e-vsphere-ovn-techpreview
Job is flaky -- https://prow.ci.openshift.org/job-history/gs/test-platform-results/pr-logs/directory/pull-ci-openshift-api-master-e2e-vsphere-ovn-techpreview

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.

@mkowalski

Copy link
Copy Markdown
ContributorAuthor

/override-sticky ci/prow/e2e-aws-serial-techpreview-1of2
/override-sticky ci/prow/e2e-aws-serial-techpreview-2of2
/override-sticky ci/prow/e2e-vsphere-ovn-techpreview

@openshift-ci

Copy link
Copy Markdown
Contributor

@mkowalski: Overrode contexts on behalf of mkowalski: ci/prow/e2e-aws-serial-techpreview-1of2, ci/prow/e2e-aws-serial-techpreview-2of2, ci/prow/e2e-vsphere-ovn-techpreview

These overrides will persist across retests on the current HEAD SHA. Pushing a new commit will clear them. Use /override-cancel to remove them.

Details

In response to this:

/override-sticky ci/prow/e2e-aws-serial-techpreview-1of2
/override-sticky ci/prow/e2e-aws-serial-techpreview-2of2
/override-sticky ci/prow/e2e-vsphere-ovn-techpreview

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.

@mkowalski

Copy link
Copy Markdown
ContributorAuthor

/override ci/prow/verify-hypershift-integration

@openshift-ci

Copy link
Copy Markdown
Contributor

@mkowalski: Overrode contexts on behalf of mkowalski: ci/prow/verify-hypershift-integration

Details

In response to this:

/override ci/prow/verify-hypershift-integration

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-ci

Copy link
Copy Markdown
Contributor

@mkowalski: 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-botBot merged commit 356624f into openshift:masterJul 24, 2026
31 checks passed
mkowalski added a commit to mkowalski/machine-config-operator that referenced this pull request Jul 24, 2026
Vendors the merged openshift/api#2923: the BGPBasedVIPManagement feature
gate, BareMetalPlatformStatus.VIPManagement (immutable once set), and
ControllerConfigSpec.BGPVIPPeersJSON.
Assisted-By: Claude Fable 5
Signed-off-by: Mat Kowalski <mko@redhat.com>
@mkowalski
mkowalski deleted the opnet-595-bgp-vip-api branch July 24, 2026 08:09
redhat-chai-bot added a commit to redhat-chai-bot/api that referenced this pull request Jul 26, 2026
…p-vip-api"
This reverts commit 356624f, reversing
changes made to 0f2bcae.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai/approvedIndicates that an agent review has approved the PRapprovedIndicates a PR has been approved by an approver from all required OWNERS files.jira/valid-referenceIndicates that this PR references a valid Jira ticket of any type.lgtmIndicates that a PR is ready to be merged.ready-for-human-reviewIndicates a PR has been reviewed by automated tools and is ready for human reviewsize/XXLDenotes a PR that changes 1000+ lines, ignoring generated files.verifiedSignifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mkowalski@openshift-ci-robot@JoelSpeed@yuqi-zhang