Skip to content

OCPCLOUD-3557: split capi-controllers and machine-api-migration - #622

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
stefanonardo:OCPCLOUD-3557
Sep 2, 2026
Merged

OCPCLOUD-3557: split capi-controllers and machine-api-migration#622
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
stefanonardo:OCPCLOUD-3557

Conversation

@stefanonardo

@stefanonardo stefanonardo commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Split the single capi-controllers Deployment (two containers sharing one SA) into two independent Deployments with dedicated ServiceAccounts and least-privilege RBAC
  • Aligned machine-api-migration metrics port to :8443 (matching all other binaries)

Test plan

  • make build passes
  • make lint passes (0 issues)
  • make unit passes (pre-existing crdcompatibility failures excluded)
  • CI e2e tests pass with both pods running under separate SAs
  • Run audit2rbac on CI job audit logs to confirm zero 403s for both SAs

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a dedicated Machine API migration controller with feature-gate support.
    • Added separate metrics service and monitoring for the migration controller.
  • Security
    • Separated controller permissions and tightened access for improved isolation.
    • Removed unnecessary pull-secret access.
  • Bug Fixes
    • Corrected controller metrics and health-check ports.
    • Updated network policies for both metrics endpoints.
  • Documentation
    • Documented separate service accounts and permissions.

@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-robot openshift-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 openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 9, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 9, 2026

Copy link
Copy Markdown

@stefanonardo: This pull request references OCPCLOUD-3557 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:

Summary

  • Split the single capi-controllers Deployment (two containers sharing one SA) into two independent Deployments with dedicated ServiceAccounts and least-privilege RBAC
  • Aligned machine-api-migration metrics port to :8443 (matching all other binaries)

Test plan

  • make build passes
  • make lint passes (0 issues)
  • make unit passes (pre-existing crdcompatibility failures excluded)
  • CI e2e tests pass with both pods running under separate SAs
  • Run audit2rbac on CI job audit logs to confirm zero 403s for both SAs

🤖 Generated with Claude Code

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

@coderabbitai

coderabbitai Bot commented 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

The change separates machine-api-migration from capi-controllers into dedicated workload, ServiceAccount, RBAC, metrics, and network policy resources. It removes the migration sidecar and reduces capi-controllers permissions and cache configuration.

Changes

Machine API migration separation

Layer / File(s) Summary
Migration identity and RBAC
manifests/0000_30_cluster-api_02_*, manifests/0000_30_cluster-api_03_machine-api-migration-rbac-roles.yaml, manifests/0000_30_cluster-api_04_machine-api-migration-rbac-bindings.yaml, docs/rbac.md
Adds a feature-gated migration ServiceAccount, dedicated cluster-wide and namespaced roles, bindings, and RBAC documentation.
Controller workload and permission reduction
ocp-manifests-input/default/capi-controllers-deployment.yaml, capi-operator-manifests/default/manifests.yaml, cmd/capi-controllers/main.go, manifests/0000_30_cluster-api_03_rbac_roles.yaml, manifests/0000_30_cluster-api_04_rbac_bindings.yaml
Removes the migration sidecar and MachineSet cache entry, renames controller ports, reduces controller RBAC, and removes the pull-secret binding.
Dedicated migration deployment
manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml
Adds the migration Deployment with health endpoints, TLS mounting, scheduling settings, resource requests, and the migration ServiceAccount.
Migration metrics and network access
manifests/0000_30_cluster-api_10_*, manifests/0000_30_cluster-api_12_allow-ingress-to-metrics-operators.yaml, manifests/0000_30_cluster-api_14_allow-egress-operators.yaml
Adds migration metrics Service and ServiceMonitor, updates controller metrics targeting, and updates metrics ingress and operator egress policies.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant machine-api-migration
  participant machine-api-migration-metrics
  participant ServiceMonitor
  machine-api-migration->>machine-api-migration-metrics: Expose HTTPS metrics on port 8443
  ServiceMonitor->>machine-api-migration-metrics: Select migration metrics Service
  ServiceMonitor->>machine-api-migration-metrics: Scrape metrics with TLS
Loading

Possibly related PRs

Suggested reviewers: mdbooth, radekmanak

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Topology-Aware Scheduling Compatibility ⚠️ Warning The new machine-api-migration Deployment requires node-role.kubernetes.io/control-plane, but no topology-aware logic exists; HyperShift hosted clusters lack these labels, so the pod remains Pending. Remove the unconditional control-plane nodeSelector or add topology-aware scheduling that supports External, SNO, TNF, and TNA topologies; validate with topology-specific CI.
✅ Passed checks (14 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The PR changes no test files or Ginkgo title expressions; the complete diff contains no It, Describe, Context, When, or Entry calls.
Test Structure And Quality ✅ Passed The PR diff contains no Ginkgo test files or test-path changes, so these test-structure requirements are not applicable.
Microshift Test Compatibility ✅ Passed The full pull request diff adds no Ginkgo tests and changes no *_test.go or e2e files, so MicroShift test compatibility is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The PR diff adds no e2e or test files and no Ginkgo declarations; its only Go change removes a MachineSet cache entry.
Ote Binary Stdout Contract ✅ Passed The PR changes no OTE or e2e source. OTE main has no stdout writes, and its Ginkgo setup redirects GinkgoWriter to os.Stderr before suite setup.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The committed diff changes only RBAC/docs YAML and cmd/capi-controllers/main.go; it adds no Ginkgo e2e tests or test declarations requiring IPv4 or external connectivity.
No-Weak-Crypto ✅ Passed The PR diff adds no MD5, SHA-1, DES, 3DES, RC4, Blowfish, or ECB usage; changed Go code only removes a cache entry, and TLS manifests contain no secret comparisons or custom crypto.
Container-Privileges ✅ Passed PR diff adds no privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, or runAsUser: 0 settings; both Deployments require restricted-v2.
No-Sensitive-Data-In-Logs ✅ Passed The PR adds no logging statements or sensitive values to logs; migration logging code is unchanged, and the new Deployment only sets diagnostics and standard log-on-error termination behavior.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: separating capi-controllers and machine-api-migration into independent workloads.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@stefanonardo

Copy link
Copy Markdown
Contributor Author

/test e2e-aws-capi-techpreview

@openshift-ci
openshift-ci Bot requested review from RadekManak and mdbooth July 9, 2026 11:18

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

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

Inline comments:
In `@docs/rbac.md`:
- Around line 41-43: The RBAC summary for the `machine-api-migration` Role in
`openshift-cluster-api` is mislabeled as “(read)” even though the manifest
grants both read and write verbs. Update the description in `docs/rbac.md` to
reflect the actual permissions from
`0000_30_cluster-api_03_machine-api-migration-rbac-roles.yaml`, using the
`machine-api-migration` Role entry and its Machine/MachineSet permissions as the
reference point.

In `@manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml`:
- Around line 26-69: The machine-api-migration Deployment container spec is
missing required hardening and health settings. Update the machine-api-migration
pod/container spec to add an explicit securityContext with
readOnlyRootFilesystem, allowPrivilegeEscalation disabled, and capabilities
dropping all, and set automountServiceAccountToken to false if the controller
does not need the token. Also add resource limits alongside the existing
requests, and define livenessProbe and readinessProbe for the healthz endpoint
exposed by the machine-api-migration container on port 9440.
🪄 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: af553a64-1e21-4c5f-92f4-9de4822110af

📥 Commits

Reviewing files that changed from the base of the PR and between f2f0de3 and bd4c791.

📒 Files selected for processing (12)
  • docs/rbac.md
  • manifests/0000_30_cluster-api_02_machine-api-migration-service-account.yaml
  • manifests/0000_30_cluster-api_03_machine-api-migration-rbac-roles.yaml
  • manifests/0000_30_cluster-api_03_rbac_roles.yaml
  • manifests/0000_30_cluster-api_04_machine-api-migration-rbac-bindings.yaml
  • manifests/0000_30_cluster-api_10_capi-controllers-servicemonitor.yaml
  • manifests/0000_30_cluster-api_10_machine-api-migration-metrics-service.yaml
  • manifests/0000_30_cluster-api_10_machine-api-migration-servicemonitor.yaml
  • manifests/0000_30_cluster-api_10_metrics-service.yaml
  • manifests/0000_30_cluster-api_12_allow-ingress-to-metrics-operators.yaml
  • manifests/0000_30_cluster-api_17_deployment.yaml
  • manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml
💤 Files with no reviewable changes (1)
  • manifests/0000_30_cluster-api_10_capi-controllers-servicemonitor.yaml

Comment thread docs/rbac.md Outdated
@stefanonardo

Copy link
Copy Markdown
Contributor Author

/retest

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
manifests/0000_30_cluster-api_10_machine-api-migration-metrics-service.yaml (1)

12-20: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Remove the ineffective targetPort mapping for this headless Service.

With clusterIP: None, Kubernetes ignores targetPort; the Service port must already match the pod’s listening port. Keep the migration listener on 8443 and omit targetPort, or use a non-headless Service if named port remapping is required. (kubernetes.io)

Suggested cleanup
   - name: machine-api-migration-metrics
     port: 8443
-    targetPort: diagnostics
🤖 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 `@manifests/0000_30_cluster-api_10_machine-api-migration-metrics-service.yaml`
around lines 12 - 20, Update the Service definition for
machine-api-migration-metrics by removing the targetPort mapping while retaining
port 8443 and clusterIP: None, so the headless Service uses the pod’s listening
port directly.
🤖 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 `@manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml`:
- Around line 54-55: Remove the control-plane nodeSelector entry from the
Deployment manifest, leaving only topology-neutral scheduling rules so the
workload can schedule on HyperShift.

In `@ocp-manifests-input/default/capi-controllers-deployment.yaml`:
- Around line 39-42: Update the generated capi-operator manifests.yaml to
replace the outdated diagnostics-o and healthz-o port references with the
renamed diagnostics and healthz names, matching the source deployment manifest
while preserving the existing port configuration.

---

Nitpick comments:
In `@manifests/0000_30_cluster-api_10_machine-api-migration-metrics-service.yaml`:
- Around line 12-20: Update the Service definition for
machine-api-migration-metrics by removing the targetPort mapping while retaining
port 8443 and clusterIP: None, so the headless Service uses the pod’s listening
port directly.
🪄 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: 128a92f8-b856-4904-bd2c-21119a1479de

📥 Commits

Reviewing files that changed from the base of the PR and between bd4c791 and deab05f.

📒 Files selected for processing (12)
  • docs/rbac.md
  • manifests/0000_30_cluster-api_02_machine-api-migration-service-account.yaml
  • manifests/0000_30_cluster-api_03_machine-api-migration-rbac-roles.yaml
  • manifests/0000_30_cluster-api_03_rbac_roles.yaml
  • manifests/0000_30_cluster-api_04_machine-api-migration-rbac-bindings.yaml
  • manifests/0000_30_cluster-api_10_capi-controllers-servicemonitor.yaml
  • manifests/0000_30_cluster-api_10_machine-api-migration-metrics-service.yaml
  • manifests/0000_30_cluster-api_10_machine-api-migration-servicemonitor.yaml
  • manifests/0000_30_cluster-api_10_metrics-service.yaml
  • manifests/0000_30_cluster-api_12_allow-ingress-to-metrics-operators.yaml
  • manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml
  • ocp-manifests-input/default/capi-controllers-deployment.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
  • manifests/0000_30_cluster-api_02_machine-api-migration-service-account.yaml
  • manifests/0000_30_cluster-api_10_machine-api-migration-servicemonitor.yaml
  • manifests/0000_30_cluster-api_10_metrics-service.yaml
  • manifests/0000_30_cluster-api_10_capi-controllers-servicemonitor.yaml
  • manifests/0000_30_cluster-api_04_machine-api-migration-rbac-bindings.yaml
  • docs/rbac.md
  • manifests/0000_30_cluster-api_03_machine-api-migration-rbac-roles.yaml
  • manifests/0000_30_cluster-api_03_rbac_roles.yaml

Comment on lines +54 to +55
nodeSelector:
node-role.kubernetes.io/control-plane: ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Remove the control-plane node selector.

This hard requirement prevents the Deployment from scheduling on HyperShift, where these nodes are not available to this workload. Keep only topology-neutral scheduling rules unless this manifest is conditionally excluded for HyperShift.

Proposed fix
-      nodeSelector:
-        node-role.kubernetes.io/control-plane: ""

As per coding guidelines: “nodeSelector/affinity targeting control-plane nodes (breaks on HyperShift).”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
nodeSelector:
node-role.kubernetes.io/control-plane: ""
🤖 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 `@manifests/0000_30_cluster-api_17_machine-api-migration-deployment.yaml`
around lines 54 - 55, Remove the control-plane nodeSelector entry from the
Deployment manifest, leaving only topology-neutral scheduling rules so the
workload can schedule on HyperShift.

Source: Coding guidelines

Comment thread ocp-manifests-input/default/capi-controllers-deployment.yaml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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 `@manifests/0000_30_cluster-api_14_allow-egress-operators.yaml`:
- Line 29: Replace the unrestricted egress rule in the machine-api-migration
egress policy with a port-based rule that allows only Kubernetes API server
access. Find the `- {}` entry in the machine-api-migration egress rules and
replace it with the same API-server port rule used by the compatibility operator
elsewhere in this manifest to ensure consistent and restrictive egress control.
🪄 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: 3d068657-10d3-4b28-8fa1-d67934bd8400

📥 Commits

Reviewing files that changed from the base of the PR and between 516ec55 and daedb87.

📒 Files selected for processing (5)
  • cmd/capi-controllers/main.go
  • docs/rbac.md
  • manifests/0000_30_cluster-api_03_rbac_roles.yaml
  • manifests/0000_30_cluster-api_04_rbac_bindings.yaml
  • manifests/0000_30_cluster-api_14_allow-egress-operators.yaml
💤 Files with no reviewable changes (3)
  • cmd/capi-controllers/main.go
  • manifests/0000_30_cluster-api_04_rbac_bindings.yaml
  • manifests/0000_30_cluster-api_03_rbac_roles.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/rbac.md

Comment thread manifests/0000_30_cluster-api_14_allow-egress-operators.yaml
Comment thread docs/rbac.md
| `0000_30_cluster-api_03_rbac_roles.yaml` | Role `capi-controllers` | `openshift-cluster-api` | CAPI Cluster + infra cluster resources, secrets, pod self-read, events, leases |
| `0000_30_cluster-api_03_rbac_roles.yaml` | Role `capi-controllers` | `openshift-machine-api` | MAPI machines (read-only for InfraCluster), controlplanemachinesets (InfraCluster), secrets (read-only) |
| `0000_30_cluster-api_03_rbac_roles.yaml` | Role `capi-controllers-kube-system` | `kube-system` | Secrets (vSphere credentials) |
| `0000_30_cluster-api_03_rbac_roles.yaml` | Role `cluster-capi-operator-pull-secret` | `openshift-config` | Pull-secret read |

@simkam simkam Jul 31, 2026

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.

cluster-capi-operator-pull-secret role and related resources removed. I can't find them used anywhere.

They were added in a61882d#diff-b259f954d26aaa43aa09f0fbc1c7af8f00d361b3122c70a2052b09ea91e5aaccR45

@simkam
simkam force-pushed the OCPCLOUD-3557 branch 3 times, most recently from 14d1bad to 0421858 Compare August 10, 2026 11:01
@simkam

simkam commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

/test ci/prow/unit

/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-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-aws-capi-disconnected-techpreview
/test e2e-aws-capi-techpreview
/test e2e-aws-capi-techpreview-post-install
/test e2e-aws-ovn-techpreview
/test e2e-aws-ovn-techpreview-upgrade
/test e2e-azure-capi-techpreview
/test e2e-azure-ovn-techpreview
/test e2e-azure-ovn-techpreview-upgrade
/test e2e-gcp-capi-techpreview
/test e2e-gcp-ovn-techpreview
/test e2e-metal3-capi-techpreview
/test e2e-openstack-capi-techpreview
/test e2e-vsphere-capi-techpreview
/test regression-clusterinfra-aws-ipi-techpreview-capi

@simkam

simkam commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

/test unit

@simkam

simkam commented Aug 10, 2026

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-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-aws-capi-disconnected-techpreview
/test e2e-aws-capi-techpreview
/test e2e-aws-capi-techpreview-post-install
/test e2e-aws-ovn-techpreview
/test e2e-aws-ovn-techpreview-upgrade
/test e2e-azure-capi-techpreview
/test e2e-azure-ovn-techpreview
/test e2e-azure-ovn-techpreview-upgrade
/test e2e-gcp-capi-techpreview
/test e2e-gcp-ovn-techpreview
/test e2e-metal3-capi-techpreview
/test e2e-openstack-capi-techpreview
/test e2e-vsphere-capi-techpreview
/test regression-clusterinfra-aws-ipi-techpreview-capi

@simkam

simkam commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

/test e2e-aws-capi-techpreview e2e-openstack-capi-techpreview

@simkam

simkam commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

/test e2e-aws-capi-techpreview e2e-openstack-capi-techpreview

@simkam

simkam commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

/test unit

@simkam

simkam commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

/test e2e-gcp-capi-techpreview
/test e2e-openstack-capi-techpreview

@simkam

simkam commented Aug 14, 2026

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-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-aws-capi-disconnected-techpreview
/test e2e-aws-capi-techpreview
/test e2e-aws-capi-techpreview-post-install
/test e2e-aws-ovn-techpreview
/test e2e-aws-ovn-techpreview-upgrade
/test e2e-azure-capi-techpreview
/test e2e-azure-ovn-techpreview
/test e2e-azure-ovn-techpreview-upgrade
/test e2e-gcp-capi-techpreview
/test e2e-gcp-ovn-techpreview
/test e2e-metal3-capi-techpreview
/test e2e-openstack-capi-techpreview
/test e2e-vsphere-capi-techpreview
/test regression-clusterinfra-aws-ipi-techpreview-capi

@simkam

simkam commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

/retest

1 similar comment
@simkam

simkam commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

/retest

@damdo damdo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

/approve

Everything looks good but the feature-gate refecences need changing

/hold

exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

@@ -0,0 +1,74 @@
---

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same for this file, I think this should be MachineAPIMigration

@@ -0,0 +1,21 @@
apiVersion: v1

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same for this file, I think this should be MachineAPIMigration

@@ -0,0 +1,23 @@
apiVersion: monitoring.coreos.com/v1

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same for this file, I think this should be MachineAPIMigration

exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
exclude.release.openshift.io/internal-openshift-hosted: "true"
release.openshift.io/feature-gate: "ClusterAPIMachineManagement"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this should be MachineAPIMigration

@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 Aug 31, 2026
@openshift-ci

openshift-ci Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: damdo

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

The pull request process is described here

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

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 31, 2026
Separate the two binaries into independent Deployments with dedicated
ServiceAccounts and least-privilege RBAC.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@simkam

simkam commented Aug 31, 2026

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-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-aws-capi-disconnected-techpreview
/test e2e-aws-capi-techpreview
/test e2e-aws-capi-techpreview-post-install
/test e2e-aws-ovn-techpreview
/test e2e-aws-ovn-techpreview-upgrade
/test e2e-azure-capi-techpreview
/test e2e-azure-ovn-techpreview
/test e2e-azure-ovn-techpreview-upgrade
/test e2e-gcp-capi-techpreview
/test e2e-gcp-ovn-techpreview
/test e2e-metal3-capi-techpreview
/test e2e-openstack-capi-techpreview
/test e2e-vsphere-capi-techpreview
/test regression-clusterinfra-aws-ipi-techpreview-capi

@damdo damdo left a comment

Copy link
Copy Markdown
Member

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 Aug 31, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Tests from second stage were triggered manually. Pipeline can be controlled only manually, until HEAD changes. Use command to trigger second stage.

@simkam

simkam commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

/retest

1 similar comment
@simkam

simkam commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

/retest

@damdo

damdo commented Sep 1, 2026

Copy link
Copy Markdown
Member

Disconnected job passed but failed deprovisioning (probably a flake), let's try once more

/retest

@damdo

damdo commented Sep 1, 2026

Copy link
Copy Markdown
Member

/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 1, 2026
@simkam

simkam commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

/retest

Let's try once again, there has been (DNS) quota issue resolved recently which might help with disconnected DNS stack issue

@damdo

damdo commented Sep 2, 2026

Copy link
Copy Markdown
Member

/override ci/prow/e2e-gcp-ovn-techpreview

The failures there are unrelated to the PR itself (which works correctly also on GCP as shown by e2e-gcp-capi-techpreview), but are instead believed to be caused by:

  • GCP API-server connectivity timeouts on port 6443 occurred in 3 of the 4 failed runs, with the affected test varying between runs (https://redhat.atlassian.net/browse/OCPBUGS-115138)
  • The Upgradeable=False condition and the NetworkSegmentation UDN / oc extract failures also occur in successful baseline runs

@openshift-ci

openshift-ci Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

@damdo: Overrode contexts on behalf of damdo: ci/prow/e2e-gcp-ovn-techpreview

Details

In response to this:

/override ci/prow/e2e-gcp-ovn-techpreview

The failures there are unrelated to the PR itself (which works correctly also on GCP as shown by e2e-gcp-capi-techpreview), but are instead believed to be caused by:

  • GCP API-server connectivity timeouts on port 6443 occurred in 3 of the 4 failed runs, with the affected test varying between runs (https://redhat.atlassian.net/browse/OCPBUGS-115138)
  • The Upgradeable=False condition and the NetworkSegmentation UDN / oc extract failures also occur in successful baseline runs

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

openshift-ci Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

@stefanonardo: The following test 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-aws-capi-disconnected-techpreview 4e3bcb7 link false /test e2e-aws-capi-disconnected-techpreview

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.

@damdo

damdo commented Sep 2, 2026

Copy link
Copy Markdown
Member

Analyzing the CI runs here I can explicitly see the splitting has happened correctly:

openshift-cluster-api-operator                     capi-installer-684d6f9698-qldrs                                            1/1     Running     0             73m    10.129.0.24    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api-operator                     capi-operator-8799b9bf5-bwxgq                                              1/1     Running     0             76m    10.130.0.14    ip-10-0-38-151.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capa-controller-manager-6658c9c47d-p8b56                                   1/1     Running     1 (63m ago)   71m    10.129.0.33    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capi-controller-manager-86c76fd8bf-qs7lx                                   1/1     Running     1 (63m ago)   72m    10.129.0.32    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capi-controllers-88cd47cf-gk6ws                                            1/1     Running     0             71m    10.129.0.35    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              machine-api-migration-c478d447-h2lfm                                       1/1     Running     0             76m    10.130.0.23    ip-10-0-38-151.us-west-1.compute.internal   <none>           <none>

and that e2es are solidly passing

/verified by @damdo

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Sep 2, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@damdo: This PR has been marked as verified by @damdo.

Details

In response to this:

Analyzing the CI runs here I can explicitly see the splitting has happened correctly:

openshift-cluster-api-operator                     capi-installer-684d6f9698-qldrs                                            1/1     Running     0             73m    10.129.0.24    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api-operator                     capi-operator-8799b9bf5-bwxgq                                              1/1     Running     0             76m    10.130.0.14    ip-10-0-38-151.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capa-controller-manager-6658c9c47d-p8b56                                   1/1     Running     1 (63m ago)   71m    10.129.0.33    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capi-controller-manager-86c76fd8bf-qs7lx                                   1/1     Running     1 (63m ago)   72m    10.129.0.32    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              capi-controllers-88cd47cf-gk6ws                                            1/1     Running     0             71m    10.129.0.35    ip-10-0-37-164.us-west-1.compute.internal   <none>           <none>
openshift-cluster-api                              machine-api-migration-c478d447-h2lfm                                       1/1     Running     0             76m    10.130.0.23    ip-10-0-38-151.us-west-1.compute.internal   <none>           <none>

and that e2es are solidly passing

/verified by @damdo

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-merge-bot
openshift-merge-bot Bot merged commit 5eb434a into openshift:main Sep 2, 2026
25 of 26 checks passed
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. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants