Skip to content

CNTRLPLANE-550: Refactor CLI client creation to use dependency injection for testability - #8474

Closed
hypershift-jira-solve-ci[bot] wants to merge 3 commits into
openshift:mainfrom
hypershift-community:fix-CNTRLPLANE-550-v2
Closed

CNTRLPLANE-550: Refactor CLI client creation to use dependency injection for testability#8474
hypershift-jira-solve-ci[bot] wants to merge 3 commits into
openshift:mainfrom
hypershift-community:fix-CNTRLPLANE-550-v2

Conversation

@hypershift-jira-solve-ci

@hypershift-jira-solve-ci hypershift-jira-solve-ci Bot commented May 11, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

Replaces all direct util.GetClient() calls in the CLI command paths (cluster create, destroy, dump, and nodepool create) with a ClientFn dependency injection pattern. Each options struct gains a ClientFn func() (crclient.Client, error) field and a GetClient() helper that falls back to util.GetClient() when ClientFn is nil, preserving full backward compatibility.

This eliminates the FAKE_CLIENT environment variable workaround in util/client.go, which only returned an empty fake client with no way to pre-populate objects or assert interactions. Tests can now inject properly configured fake clients directly, enabling meaningful unit tests that verify actual controller behavior against pre-seeded Kubernetes objects.

Key changes:

  • cmd/cluster/core/create.go: Add ClientFn to RawCreateOptions, thread GetClient through prototypeResources, apply, and Validate
  • cmd/cluster/core/destroy.go: Add ClientFn to DestroyOptions, update GetCluster and DestroyCluster
  • cmd/cluster/core/dump.go: Add ClientFn to DumpOptions, update dumpGuestCluster and DumpCluster
  • cmd/nodepool/core/create.go: Add ClientFn to CreateNodePoolOptions, update CreateNodePool
  • cmd/util/client.go: Remove FAKE_CLIENT environment variable workaround
  • All platform create tests (AWS, Azure, GCP, KubeVirt, OpenStack, PowerVS): Migrate from t.Setenv("FAKE_CLIENT", "true") to explicit ClientFn injection
  • New unit tests: TestGetCluster, TestDestroyOptionsGetClient, TestCreateOptionsGetClient, TestValidateWithInjectedClient, TestDumpOptionsGetClient, TestCreateNodePoolOptionsGetClient

Which issue(s) this PR fixes:

Fixes https://redhat.atlassian.net/browse/CNTRLPLANE-550

Special notes for your reviewer:

  • All ClientFn fields use json:"-" tags to prevent serialization, consistent with the existing BeforeApply pattern on RawCreateOptions
  • The apply() function signature changes to accept a clientFn parameter instead of calling util.GetClient() directly — this is an internal function not part of any public API
  • No behavioral changes at runtime — the GetClient() helpers default to util.GetClient() when ClientFn is nil

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Always review AI generated responses prior to use.
Generated with Claude Code via /jira:solve [CNTRLPLANE-550](https://redhat.atlassian.net/browse/CNTRLPLANE-550)


Note: This PR was auto-generated by the jira-agent periodic CI job in response to CNTRLPLANE-550. See the full report for token usage, cost breakdown, and detailed phase output.

Summary by CodeRabbit

  • Refactor
    • Standardized Kubernetes client acquisition across cluster and node pool commands to enable injected clients and improve maintainability; no user-visible behavior changes.
  • Tests
    • Updated unit tests to use injected fake clients rather than an environment-variable-based fake client, improving test reliability.

@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 May 11, 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 May 11, 2026
@openshift-ci-robot

openshift-ci-robot commented May 11, 2026

Copy link
Copy Markdown

@hypershift-jira-solve-ci[bot]: This pull request references CNTRLPLANE-550 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 this PR does / why we need it:

Replaces all direct util.GetClient() calls in the CLI command paths (cluster create, destroy, dump, and nodepool create) with a ClientFn dependency injection pattern. Each options struct gains a ClientFn func() (crclient.Client, error) field and a GetClient() helper that falls back to util.GetClient() when ClientFn is nil, preserving full backward compatibility.

This eliminates the FAKE_CLIENT environment variable workaround in util/client.go, which only returned an empty fake client with no way to pre-populate objects or assert interactions. Tests can now inject properly configured fake clients directly, enabling meaningful unit tests that verify actual controller behavior against pre-seeded Kubernetes objects.

Key changes:

  • cmd/cluster/core/create.go: Add ClientFn to RawCreateOptions, thread GetClient through prototypeResources, apply, and Validate
  • cmd/cluster/core/destroy.go: Add ClientFn to DestroyOptions, update GetCluster and DestroyCluster
  • cmd/cluster/core/dump.go: Add ClientFn to DumpOptions, update dumpGuestCluster and DumpCluster
  • cmd/nodepool/core/create.go: Add ClientFn to CreateNodePoolOptions, update CreateNodePool
  • cmd/util/client.go: Remove FAKE_CLIENT environment variable workaround
  • All platform create tests (AWS, Azure, GCP, KubeVirt, OpenStack, PowerVS): Migrate from t.Setenv("FAKE_CLIENT", "true") to explicit ClientFn injection
  • New unit tests: TestGetCluster, TestDestroyOptionsGetClient, TestCreateOptionsGetClient, TestValidateWithInjectedClient, TestDumpOptionsGetClient, TestCreateNodePoolOptionsGetClient

Which issue(s) this PR fixes:

Fixes https://redhat.atlassian.net/browse/CNTRLPLANE-550

Special notes for your reviewer:

  • All ClientFn fields use json:"-" tags to prevent serialization, consistent with the existing BeforeApply pattern on RawCreateOptions
  • The apply() function signature changes to accept a clientFn parameter instead of calling util.GetClient() directly — this is an internal function not part of any public API
  • No behavioral changes at runtime — the GetClient() helpers default to util.GetClient() when ClientFn is nil

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Always review AI generated responses prior to use.
Generated with Claude Code via /jira:solve [CNTRLPLANE-550](https://redhat.atlassian.net/browse/CNTRLPLANE-550)

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

@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 37211c34-fcc0-4740-a9d2-364d253a3c7f

📥 Commits

Reviewing files that changed from the base of the PR and between 90f2ccd and db9b0d2.

📒 Files selected for processing (16)
  • cmd/cluster/aws/create.go
  • cmd/cluster/aws/create_test.go
  • cmd/cluster/azure/create_test.go
  • cmd/cluster/core/create.go
  • cmd/cluster/core/create_test.go
  • cmd/cluster/core/destroy.go
  • cmd/cluster/core/destroy_test.go
  • cmd/cluster/core/dump.go
  • cmd/cluster/core/dump_test.go
  • cmd/cluster/gcp/create_test.go
  • cmd/cluster/kubevirt/create_test.go
  • cmd/cluster/openstack/create_test.go
  • cmd/cluster/powervs/create_test.go
  • cmd/nodepool/core/create.go
  • cmd/nodepool/core/create_test.go
  • cmd/util/client.go
💤 Files with no reviewable changes (1)
  • cmd/util/client.go
🚧 Files skipped from review as they are similar to previous changes (15)
  • cmd/cluster/gcp/create_test.go
  • cmd/cluster/aws/create.go
  • cmd/cluster/azure/create_test.go
  • cmd/cluster/aws/create_test.go
  • cmd/cluster/powervs/create_test.go
  • cmd/cluster/core/dump_test.go
  • cmd/cluster/core/destroy_test.go
  • cmd/cluster/core/create.go
  • cmd/cluster/core/dump.go
  • cmd/nodepool/core/create_test.go
  • cmd/cluster/openstack/create_test.go
  • cmd/cluster/kubevirt/create_test.go
  • cmd/nodepool/core/create.go
  • cmd/cluster/core/destroy.go
  • cmd/cluster/core/create_test.go

📝 Walkthrough

Walkthrough

This pull request adds dependency injection for Kubernetes clients across cluster and nodepool commands. Option structs (create, destroy, dump, nodepool create) gain a ClientFn field and a GetClient() method that calls the injected factory when present, otherwise falling back to util.GetClient(). util.GetClient() no longer inspects FAKE_CLIENT. Call sites were updated to use the new GetClient() methods and tests were changed to inject controller-runtime fake clients via ClientFn instead of setting FAKE_CLIENT.

Sequence Diagram(s)

sequenceDiagram
    participant CLI
    participant Options as RawCreateOptions / OtherOptions
    participant util as util.GetClient()
    participant K8s as Kubernetes API
    CLI->>Options: invoke operation (create/destroy/dump/createNodePool)
    Options->>Options: call GetClient()
    alt ClientFn provided
        Options->>Options: call ClientFn()
        Options->>K8s: use returned client to interact
    else ClientFn nil
        Options->>util: call util.GetClient()
        util->>K8s: build real controller-runtime client and return
        Options->>K8s: use returned client to interact
    end
Loading
sequenceDiagram
    title Old behavior (pre-change) for test flows
    participant CLI
    participant util as util.GetClient()
    participant K8sFake as Fake client creation
    participant K8sReal as Real Kubernetes API
    CLI->>util: call util.GetClient()
    alt FAKE_CLIENT env set
        util->>K8sFake: return controller-runtime fake client
        CLI->>K8sFake: use fake client
    else
        util->>K8sReal: build real client and return
        CLI->>K8sReal: use real client
    end
Loading

Possibly related PRs

  • openshift/hypershift#8309: Modifies cmd/cluster/core/create.go and related validation/prototype resource logic, touching the same create-path functions adjusted by this PR.
🚥 Pre-merge checks | ✅ 10 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Structure And Quality ⚠️ Warning Tests lack meaningful assertion failure messages (Criterion 4). Most Expect() calls have no diagnostic messages, making test failures hard to diagnose. Add custom failure messages to all assertion calls. Example: g.Expect(err).ToNot(HaveOccurred(), "failed to get client from ClientFn")
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and specifically describes the main change: refactoring client creation to use dependency injection for improved testability. It is concise, clear, and covers the primary objective of the changeset.
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 PR uses standard Go testing (not Ginkgo). All new test names are static, descriptive, and contain no dynamic values, conforming to test naming best practices.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests are added. All test additions are standard Go unit tests using testing.T. The custom check targets Ginkgo patterns and is not applicable here.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Check is for Ginkgo e2e tests. PR only adds standard Go unit tests with testing.T. No Ginkgo tests (It, Describe, Context, When) found. Check not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only CLI tooling and tests, not deployment manifests, operators, or controllers. The topology-aware check does not apply.
Ote Binary Stdout Contract ✅ Passed No process-level stdout writes added. ClientFn injection pattern has no print statements. Existing fmt.Printf calls in CreateCluster/CreateNodePool are not process-level code.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR adds only standard Go unit tests in cmd/ directory, not Ginkgo e2e tests. Zero Ginkgo imports found. Custom check applies only to new Ginkgo e2e tests, so it is not applicable.

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

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

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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

@openshift-ci

openshift-ci Bot commented May 11, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci Bot added area/cli Indicates the PR includes changes for CLI area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform and removed do-not-merge/needs-area labels May 11, 2026
@codecov

codecov Bot commented May 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 62.50000% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 39.88%. Comparing base (bf4693b) to head (db9b0d2).
⚠️ Report is 1177 commits behind head on main.

Files with missing lines Patch % Lines
cmd/cluster/core/create.go 45.45% 6 Missing ⚠️
cmd/cluster/core/dump.go 57.14% 3 Missing ⚠️
cmd/nodepool/core/create.go 66.66% 2 Missing ⚠️
cmd/cluster/core/destroy.go 85.71% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8474      +/-   ##
==========================================
+ Coverage   39.85%   39.88%   +0.03%     
==========================================
  Files         751      751              
  Lines       92601    92618      +17     
==========================================
+ Hits        36907    36943      +36     
+ Misses      53021    53001      -20     
- Partials     2673     2674       +1     
Files with missing lines Coverage Δ
cmd/cluster/aws/create.go 41.59% <100.00%> (ø)
cmd/util/client.go 0.00% <ø> (ø)
cmd/cluster/core/destroy.go 19.13% <85.71%> (+10.21%) ⬆️
cmd/nodepool/core/create.go 21.96% <66.66%> (+1.72%) ⬆️
cmd/cluster/core/dump.go 4.84% <57.14%> (+0.57%) ⬆️
cmd/cluster/core/create.go 54.92% <45.45%> (+0.90%) ⬆️
Flag Coverage Δ
cmd-support 34.13% <62.50%> (+0.09%) ⬆️
cpo-hostedcontrolplane 40.53% <ø> (ø)
cpo-other 40.11% <ø> (ø)
hypershift-operator 50.36% <ø> (ø)
other 30.70% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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

OpenShift CI Bot and others added 3 commits May 11, 2026 20:04
Add ClientFn function field to RawCreateOptions, DestroyOptions,
DumpOptions, and CreateNodePoolOptions to enable client injection.
Each struct gets a GetClient() helper that defaults to util.GetClient
when ClientFn is nil, preserving backward compatibility.

This replaces all direct util.GetClient() calls in the cluster
create, destroy, dump, and nodepool create paths with calls through
the injected client factory, enabling proper unit testing without
requiring a live cluster connection.

The FAKE_CLIENT environment variable workaround in util/client.go
is removed as it is no longer needed — tests can now inject fake
clients directly through the ClientFn field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace t.Setenv("FAKE_CLIENT", "true") with explicit ClientFn
injection across all platform create tests (AWS, Azure, GCP,
KubeVirt, OpenStack, PowerVS) and the core destroy test.

Add new unit tests demonstrating the improved testability:
- TestGetCluster: validates cluster lookup with pre-seeded objects
- TestDestroyOptionsGetClient: verifies ClientFn dispatch
- TestCreateOptionsGetClient: verifies promotion through embedding
- TestValidateWithInjectedClient: tests cluster-existence validation
  with a pre-seeded HostedCluster in the fake client

These new tests exercise code paths that were previously untestable
because the FAKE_CLIENT workaround only returned an empty client
with no way to pre-populate objects or assert interactions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add json:"-" tags to ClientFn fields on DestroyOptions, DumpOptions,
and CreateNodePoolOptions for serialization safety, matching the
existing pattern on RawCreateOptions. Add missing GetClient() test
coverage for DumpOptions and CreateNodePoolOptions. Use
WithScheme(hyperapi.Scheme) in platform test fake clients for
future-proofing. Standardize on NewWithT over NewGomegaWithT in new
test code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci

openshift-ci Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Stale PRs are closed after 21d of inactivity.

If this PR is still relevant, comment to refresh it or remove the stale label.
Mark the PR as fresh by commenting /remove-lifecycle stale.

If this PR is safe to close now please do so with /close.

/lifecycle stale

@openshift-ci openshift-ci Bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 11, 2026
@bryan-cox

Copy link
Copy Markdown
Member

/approve

@bryan-cox

Copy link
Copy Markdown
Member

/remove lifecycle/stale

@openshift-ci

openshift-ci Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bryan-cox, hypershift-jira-solve-ci[bot]

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

The pull request process is described here

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

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

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

Copy link
Copy Markdown
Member

/remove-lifecycle stale

@openshift-ci openshift-ci Bot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 17, 2026
@celebdor
celebdor marked this pull request as ready for review June 18, 2026 09:25
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 18, 2026
@openshift-ci
openshift-ci Bot requested review from devguyio and sjenning June 18, 2026 09:25
@openshift-ci

openshift-ci Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

@hypershift-jira-solve-ci[bot]: 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.

@bryan-cox

Copy link
Copy Markdown
Member

/rebase

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

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

openshift-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

PR needs rebase.

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.

@hypershift-jira-solve-ci

hypershift-jira-solve-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Test Failure Analysis Complete

Job Information

Test Failure Analysis

Error

tide: Not mergeable. PR has a merge conflict.
mergeStateStatus: DIRTY
mergeable: CONFLICTING

Summary

This is not a test failure — it is a merge conflict preventing the PR from being mergeable. The PR branch (fix-CNTRLPLANE-550-v2) was last committed to on 2026-05-11 and has not been rebased since. The main branch has advanced by 622 commits in the ~56 days since, and at least 4 of those commits modified the same files that PR #8474 touches. The tide merge controller correctly detected the conflict and set the PR status to error. All five e2e Prow CI jobs (e2e-aks, e2e-aws, e2e-aws-upgrade-hypershift-operator, e2e-kubevirt-aws-ovn-reduced, e2e-v2-aws) remain in PENDING state with "Waiting for pipeline condition to trigger" — they were never triggered because the merge conflict blocks the CI pipeline gate.

Root Cause

The root cause is a stale branch with merge conflicts against main. The PR refactors CLI client creation across multiple cmd/ files, and several commits merged to main after the PR was created have modified the same files, creating irreconcilable merge conflicts.

The most significant conflicting commit is CNTRLPLANE-596 (c937cc7a, merged 2026-06-24), which added --kubeconfig flag support to create and destroy cluster commands — touching 4 of the same files PR #8474 modifies:

  • cmd/cluster/aws/create.go
  • cmd/cluster/core/create.go
  • cmd/cluster/core/destroy.go
  • cmd/util/client.go

This is particularly problematic because CNTRLPLANE-596 also refactored client creation patterns in these files (changing how kubeconfig/client options are wired), which directly overlaps with PR #8474's dependency injection refactoring of the same client creation code.

Additional conflicting commits:

  • errorlint fix (92766c6f, merged 2026-05-27) — modified cmd/cluster/core/create.go
  • CAPO/ORC update (7d68d39d, merged 2026-06-25) — modified cmd/cluster/core/dump.go
  • CAPI 1.11 upgrade (33db3970, merged 2026-06-02) — modified cmd/cluster/core/dump.go
Recommendations
  1. Rebase the branch onto current main: The PR branch must be rebased against main to resolve the merge conflicts. Given the 622-commit gap and 4+ conflicting commits, this will require manual conflict resolution.

  2. Pay special attention to CNTRLPLANE-596 conflicts: The --kubeconfig flag changes in cmd/util/client.go and cmd/cluster/core/create.go/destroy.go will need careful integration with the dependency injection pattern introduced by this PR. The refactored ClientFn approach must account for the new kubeconfig flag wiring.

  3. Re-run CI after rebase: Once conflicts are resolved and the branch is force-pushed, all pending Prow CI jobs (e2e-aks, e2e-aws, etc.) should automatically trigger. The tide status will clear once GitHub detects the branch is mergeable again.

  4. Consider closing if superseded: Given the PR was authored by a bot (hypershift-jira-solve-ci) and has been stale for ~56 days, evaluate whether the CNTRLPLANE-596 changes have already addressed parts of CNTRLPLANE-550's goals, potentially making this PR partially or fully redundant.

Evidence
Evidence Detail
Tide status state: error — "Not mergeable. PR has a merge conflict."
GitHub merge state mergeStateStatus: DIRTY, mergeable: CONFLICTING
Branch staleness Last commit: 2026-05-11, main is 622 commits ahead
Key conflicting commit c937cc7a (CNTRLPLANE-596, merged Jun 24) — touches cmd/util/client.go, cmd/cluster/core/create.go, cmd/cluster/core/destroy.go, cmd/cluster/aws/create.go
Additional conflict (1) 92766c6f (errorlint fix, merged May 27) — touches cmd/cluster/core/create.go
Additional conflict (2) 7d68d39d (CAPO/ORC update, merged Jun 25) — touches cmd/cluster/core/dump.go
Additional conflict (3) 33db3970 (CAPI 1.11 upgrade, merged Jun 2) — touches cmd/cluster/core/dump.go
Pending CI jobs 5 e2e jobs stuck at "Waiting for pipeline condition to trigger" — never ran
Passing checks All GitHub Actions (unit tests, lint, verify, codespell, envtest) passed on May 11

@bryan-cox

Copy link
Copy Markdown
Member

/rebase

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

@bryan-cox

Copy link
Copy Markdown
Member

/rebase

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

@bryan-cox

Copy link
Copy Markdown
Member

/rebase

@github-actions

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

@openshift-ci

openshift-ci Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Stale PRs are closed after 21d of inactivity.

If this PR is still relevant, comment to refresh it or remove the stale label.
Mark the PR as fresh by commenting /remove-lifecycle stale.

If this PR is safe to close now please do so with /close.

/lifecycle stale

@openshift-ci openshift-ci Bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 21, 2026
@bryan-cox

Copy link
Copy Markdown
Member

/rebase

@github-actions

Copy link
Copy Markdown

🤖 Rebasing PR onto main: workflow run

@bryan-cox

Copy link
Copy Markdown
Member

/close

@openshift-ci openshift-ci Bot closed this Aug 26, 2026
@openshift-ci

openshift-ci Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

@bryan-cox: Closed this PR.

Details

In response to this:

/close

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.

@bryan-cox
bryan-cox deleted the fix-CNTRLPLANE-550-v2 branch September 3, 2026 11:31
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. area/cli Indicates the PR includes changes for CLI area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants