Skip to content

CNTRLPLANE-993: feat(API): Add controlPlaneUpToDate condition#6300

Closed
enxebre wants to merge 1 commit intoopenshift:mainfrom
enxebre:controlplaneuptodate-condition
Closed

CNTRLPLANE-993: feat(API): Add controlPlaneUpToDate condition#6300
enxebre wants to merge 1 commit intoopenshift:mainfrom
enxebre:controlplaneuptodate-condition

Conversation

@enxebre
Copy link
Member

@enxebre enxebre commented Jun 19, 2025

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed upon the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

Summary by CodeRabbit

  • New Features

    • Introduced ControlPlaneUpToDate status condition reporting version alignment, availability, and rollout completeness of management-side control‑plane components; surfaced on HostedControlPlane and propagated to HostedCluster.
  • Documentation

    • Expanded API reference with ControlPlaneUpToDate and a broad set of additional condition types describing HostedCluster/HCP state.
  • Tests

    • Added unit tests for the new reconciliation checks.
    • Updated e2e readiness checks to stop requiring the new condition.
  • Chores

    • Updated expected/support condition defaults to include the new condition.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 19, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 19, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.20.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1751 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add e2e coverage once agreed with the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

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.

@enxebre enxebre marked this pull request as draft June 19, 2025 13:55
@openshift-ci openshift-ci bot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. do-not-merge/needs-area labels Jun 19, 2025
@openshift-ci openshift-ci bot requested review from csrwng and hasueki June 19, 2025 13:56
@openshift-ci openshift-ci bot added area/api Indicates the PR includes changes for the API area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release labels Jun 19, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jun 19, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: enxebre

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 area/documentation Indicates the PR includes changes for documentation approved Indicates a PR has been approved by an approver from all required OWNERS files. area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release and removed do-not-merge/needs-area labels Jun 19, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 19, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.20.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add e2e coverage once agreed with the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

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.

@enxebre enxebre force-pushed the controlplaneuptodate-condition branch from 89ceb1c to 93c7d44 Compare June 19, 2025 14:19
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jun 19, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.20.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed with the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

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-robot
Copy link

openshift-ci-robot commented Jun 19, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.20.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed upon the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

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.

@enxebre enxebre force-pushed the controlplaneuptodate-condition branch 2 times, most recently from f50b3d8 to 25453b2 Compare June 19, 2025 14:26
@enxebre
Copy link
Member Author

enxebre commented Jun 19, 2025

cc @wking @typeid

@muraee
Copy link
Contributor

muraee commented Jun 20, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Jun 20, 2025
Copy link
Member

@typeid typeid left a comment

Choose a reason for hiding this comment

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

Added some very minor nits on the comment grammar, logic wise it looks good to me though. Thanks for the heads up on this :)

@enxebre enxebre force-pushed the controlplaneuptodate-condition branch from 25453b2 to 3ab02fa Compare June 23, 2025 13:01
@openshift-ci openshift-ci bot added area/testing Indicates the PR includes changes for e2e testing and removed lgtm Indicates that a PR is ready to be merged. labels Jun 23, 2025
@enxebre enxebre force-pushed the controlplaneuptodate-condition branch 2 times, most recently from 5e97854 to 5ed926d Compare June 23, 2025 14:33
@openshift-ci openshift-ci bot requested a review from jparrill September 4, 2025 13:55
@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 4, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.21.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed upon the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

Summary by CodeRabbit

  • New Features

  • Introduced a ControlPlaneUpToDate status condition that evaluates version, availability and rollout of management-side control‑plane components, surfaced on HostedControlPlane and propagated to HostedCluster.

  • Documentation

  • Expanded API reference with the new condition and a larger set of condition types describing HostedCluster/HCP state.

  • Tests

  • Added unit tests for the new reconciliation logic.

  • Updated e2e readiness checks to stop requiring the new condition.

  • Chores

  • Adjusted expected/support condition defaults to include the new condition.

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (3)
api/hypershift/v1beta1/hostedcluster_conditions.go (1)

23-29: Tighten wording; add an explicit semantics note.

Small doc polish and a clarifying sentence that the Status reflects version alignment only (availability/rollout carried in Message). Mirrors the current implementation behavior.

Apply this diff:

-	// ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
-	// This is a useful semantic to make decisions decoupled from the ability of components running on the data plane to roll out during an upgrade to a specific version.
-	// For example, acknowledge that none of the components running management side are vulnerable to a specific CVE.
-	// For example, don't block HostedCluster upgrades when there's no data plane compute.
-	// Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, as the versions of OVN Control plane components are still dictated by the ability of the data plane to rollout.
+	// ControlPlaneUpToDate indicates whether the control-plane components running on the management side are up to date with the desired release version.
+	// This is useful for decisions decoupled from the data-plane’s ability to roll out during an upgrade to a specific version.
+	// For example, acknowledge that management-side components are not vulnerable to a specific CVE.
+	// For example, do not block HostedCluster upgrades when there is no data-plane compute.
+	// Note: the condition Status reflects version alignment only; component availability and rollout details are reported in the Message for context.
+	// Until https://issues.redhat.com/browse/OCPSTRAT-1454 is resolved, this condition has limited value because OVN control‑plane component versions are still dictated by data‑plane rollout ability.
control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (1)

3495-3561: Fix “” message when all components are up to date; minor cleanups

  • Message becomes the literal string “” when there are no errors. Emit AllIsWell instead.
  • Precompute expectedVersion to avoid repeated calls.
  • Nit: use lowerCamelCase for rolloutCompleteCondition.

Apply:

 func (r *HostedControlPlaneReconciler) reconcileControlPlaneUpToDateCondition(ctx context.Context, hcp *hyperv1.HostedControlPlane, releaseImage *releaseinfo.ReleaseImage) error {
 	var componentErrors []error

@@
 	// Check if all components version matches HCP spec release version.
 	// Capture any errors for RolloutCompleteCondition and AvailableCondition whether version matches or not.
 	reason := hyperv1.AsExpectedReason
 	controlPlaneUpToDateStatus := metav1.ConditionTrue
+	expectedVersion := releaseImage.Version()
 	for _, component := range componentList.Items {
-		if component.Status.Version != releaseImage.Version() {
-			componentErrors = append(componentErrors, fmt.Errorf("component %q version %q does not match expected version %s", component.Name, component.Status.Version, releaseImage.Version()))
+		if component.Status.Version != expectedVersion {
+			componentErrors = append(componentErrors, fmt.Errorf("component %q version %q does not match expected version %s", component.Name, component.Status.Version, expectedVersion))
 			controlPlaneUpToDateStatus = metav1.ConditionFalse
 			reason = "VersionMismatch"
 		}
 
 		availableCondition := meta.FindStatusCondition(component.Status.Conditions, string(hyperv1.ControlPlaneComponentAvailable))
@@
-		RolloutCompleteCondition := meta.FindStatusCondition(component.Status.Conditions, string(hyperv1.ControlPlaneComponentRolloutComplete))
-		if RolloutCompleteCondition == nil {
+		rolloutCompleteCondition := meta.FindStatusCondition(component.Status.Conditions, string(hyperv1.ControlPlaneComponentRolloutComplete))
+		if rolloutCompleteCondition == nil {
 			componentErrors = append(componentErrors, fmt.Errorf("component %s rollout is not complete. Reason: Unknown", component.Name))
 
 		}
-		if RolloutCompleteCondition != nil && RolloutCompleteCondition.Status != metav1.ConditionTrue {
-			componentErrors = append(componentErrors, fmt.Errorf("component %s rollout is not complete. Reason: %s, Message: %s", component.Name, RolloutCompleteCondition.Reason, RolloutCompleteCondition.Message))
+		if rolloutCompleteCondition != nil && rolloutCompleteCondition.Status != metav1.ConditionTrue {
+			componentErrors = append(componentErrors, fmt.Errorf("component %s rollout is not complete. Reason: %s, Message: %s", component.Name, rolloutCompleteCondition.Reason, rolloutCompleteCondition.Message))
 		}
 	}
 
+	agg := utilerrors.NewAggregate(componentErrors)
+	msg := hyperv1.AllIsWellMessage
+	if agg != nil {
+		msg = agg.Error()
+	}
+
 	upToDateCondition := metav1.Condition{
 		Type:               string(hyperv1.ControlPlaneUpToDate),
 		Status:             controlPlaneUpToDateStatus,
 		Reason:             reason,
-		Message:            fmt.Sprint(utilerrors.NewAggregate(componentErrors)),
+		Message:            msg,
 		ObservedGeneration: hcp.Generation,
 	}
 	meta.SetStatusCondition(&hcp.Status.Conditions, upToDateCondition)
 	return nil
 }
docs/content/reference/api.md (1)

4700-4706: Tighten wording, fix style, add behavior note; update Go doc comment and re-run make api-docs

  • Use “control plane”/“data plane” consistently in lower case.
  • Prefer “running on the management side.”
  • Use the verb form “roll out.”
  • Replace “none of the components” with “no components.”
  • Add an explicit note that the condition reflects version alignment only; availability/rollout do not affect True/False (only the message), per design.

Apply in source (not this generated file), then regenerate:

-<td><p>ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
-This is a useful semantic to make decisions decoupled from the ability of components running on the data plane to roll out during an upgrade to a specific version.
-For example, acknowledge that none of the components running management side are vulnerable to a specific CVE.
-For example, don’t block HostedCluster upgrades when there’s no data plane compute.
-Until <a href="https://issues.redhat.com/browse/OCPSTRAT-1454">https://issues.redhat.com/browse/OCPSTRAT-1454</a> is fixed, this condition has limited value, as the versions of OVN Control plane components are still dictated by the ability of the data plane to rollout.</p>
+<td><p>ControlPlaneUpToDate indicates whether the control plane components running on the management side are up to date with the desired release version.
+This condition enables decisions decoupled from the data plane’s ability to roll out during an upgrade to a specific version.
+For example, acknowledge that no components running on the management side are vulnerable to a specific CVE.
+For example, don’t block HostedCluster upgrades when there is no data plane compute.
+Until <a href="https://issues.redhat.com/browse/OCPSTRAT-1454">https://issues.redhat.com/browse/OCPSTRAT-1454</a> is fixed, this condition has limited value because the versions of OVN control plane components are still dictated by the data plane’s ability to roll out.
+Note: this condition reflects only version alignment; availability/rollout issues may appear in the message but do not affect the condition status.</p>

Note: Update the Go doc comment that generates this block and run make api-docs; don’t hand-edit this file. Also run make verify-codespell for markdown.

🧹 Nitpick comments (3)
vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (1)

23-29: Keep vendor docs in sync with API and clarify semantics.

Mirror the same wording/semantics note here to avoid drift between api/ and vendor/.

Apply this diff:

-	// ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
-	// This is a useful semantic to make decisions decoupled from the ability of components running on the data plane to roll out during an upgrade to a specific version.
-	// For example, acknowledge that none of the components running management side are vulnerable to a specific CVE.
-	// For example, don't block HostedCluster upgrades when there's no data plane compute.
-	// Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, as the versions of OVN Control plane components are still dictated by the ability of the data plane to rollout.
+	// ControlPlaneUpToDate indicates whether the control-plane components running on the management side are up to date with the desired release version.
+	// This is useful for decisions decoupled from the data-plane’s ability to roll out during an upgrade to a specific version.
+	// For example, acknowledge that management-side components are not vulnerable to a specific CVE.
+	// For example, do not block HostedCluster upgrades when there is no data-plane compute.
+	// Note: the condition Status reflects version alignment only; component availability and rollout details are reported in the Message for context.
+	// Until https://issues.redhat.com/browse/OCPSTRAT-1454 is resolved, this condition has limited value because OVN control‑plane component versions are still dictated by data‑plane rollout ability.
hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go (1)

803-823: Avoid mutating HCP conditions by pointer aliasing.

You assign the pointer returned by meta.FindStatusCondition to condition, then mutate ObservedGeneration. That mutates the HCP object in-memory (even if not persisted) and risks subtle side effects during this reconcile. Copy before modifying.

Apply this diff:

-		if hcp != nil {
-			hcpCondition := meta.FindStatusCondition(hcp.Status.Conditions, string(hyperv1.ControlPlaneUpToDate))
-			if hcpCondition != nil {
-				condition = hcpCondition
-			} else {
-				condition.Message = "Condition not found in the HCP"
-			}
-		}
+		if hcp != nil {
+			if src := meta.FindStatusCondition(hcp.Status.Conditions, string(hyperv1.ControlPlaneUpToDate)); src != nil {
+				// Copy to avoid mutating the HCP condition instance.
+				copied := *src
+				condition = &copied
+			} else {
+				condition.Message = "Condition not found in the HCP"
+			}
+		}
control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (1)

331-332: Watch on ControlPlaneComponent added — consider filtering to reduce reconcile noise

Optional: add a predicate to only enqueue when Status.Version or relevant conditions change to avoid excessive reconciles on metadata-only updates.

Apply via builder predicate on this watch (e.g., custom predicate.Funcs on Update/Delete).

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between ae86843 and eb81f58.

📒 Files selected for processing (8)
  • api/hypershift/v1beta1/hostedcluster_conditions.go (1 hunks)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (3 hunks)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go (1 hunks)
  • docs/content/reference/api.md (1 hunks)
  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go (1 hunks)
  • support/conditions/conditions.go (1 hunks)
  • test/e2e/util/util.go (1 hunks)
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • support/conditions/conditions.go
  • test/e2e/util/util.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
🧰 Additional context used
📓 Path-based instructions (9)
**/!(*.pb).go

📄 CodeRabbit inference engine (.cursor/rules/100-go-mistakes.mdc)

**/!(*.pb).go: Avoid variable shadowing
Do not over-nest control flow (e.g., nested if or for blocks)
Avoid init() functions unless absolutely necessary
Keep functions small and focused
Prefer composition over inheritance (via embedding)
Use the functional options pattern for constructors where flexibility is needed
Avoid defining interfaces until you need them
Do not return interfaces from constructors or public APIs
Define interfaces on the consumer side, not the producer side
Keep interfaces small and focused (generally 1–2 methods)
Avoid embedding pointer types unless necessary
Don’t overuse getters/setters — prefer public fields when it makes sense
Use value receivers when the method doesn't mutate state or require pointer semantics
Do not use util, common, or similarly vague package names
Avoid package name collisions by using clear, unique names
Do not expose unnecessary symbols (keep exported API minimal)
Distinguish between nil and empty slices
Avoid memory leaks from slicing large arrays
Always check the capacity when copying or appending slices
Preallocate slice capacity when size is known ahead of time
Always initialize maps before use
Check existence with the two-value assignment (val, ok := m[key])
Be aware that ranging over a map is in random order
Always check errors — don’t ignore them
Wrap errors with context when rethrowing
Avoid panics except in truly unrecoverable cases
Use errors.Is and errors.As for error comparison in Go 1.20+
Always defer cancel() when using context.WithCancel
Do not leak goroutines — ensure they exit cleanly
Avoid data races — use mutexes or channels appropriately
Never close a channel from the receiving side
Keep imports grouped and ordered: stdlib, external, internal
Avoid magic numbers — use named constants
Prefer explicit over implicit — especially in exported APIs
Only use generics when they simplify code or add real flexibility
Avoid over-engineering with type parameters
Be cautious with constraint complexity — keep...

Files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • api/hypershift/v1beta1/hostedcluster_conditions.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go
**/*.go

📄 CodeRabbit inference engine (.cursor/rules/code-formatting.mdc)

Use make lint-fix after writing Go code to automatically fix most linting issues

Follow the rules defined in @100-go-mistakes.mdc for Go code

Files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • api/hypershift/v1beta1/hostedcluster_conditions.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go
hypershift-operator/controllers/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

Place operator controller implementations under hypershift-operator/controllers/

Files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
{hypershift-operator,control-plane-operator}/controllers/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

{hypershift-operator,control-plane-operator}/controllers/**/*.go: Controller code should follow controller-runtime patterns with proper error handling and requeuing
Use controller-runtime structured logging in controllers

Files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
{hypershift-operator,control-plane-operator}/controllers/**

📄 CodeRabbit inference engine (AGENTS.md)

Place platform-specific implementations within their respective controller subdirectories to keep platform logic isolated

Files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
api/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

After modifying API types in the api/ package, run make api to regenerate APIs and CRDs

Files:

  • api/hypershift/v1beta1/hostedcluster_conditions.go
api/**

📄 CodeRabbit inference engine (AGENTS.md)

api/**: API definitions and CRDs must reside under the api/ directory
Prefer API version v1beta1; use feature gates for experimental functionality
Generate CRDs via controller-gen using the OpenShift-specific tooling for this repository

Files:

  • api/hypershift/v1beta1/hostedcluster_conditions.go
control-plane-operator/controllers/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

Place control-plane controller implementations under control-plane-operator/controllers/

Files:

  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
**/*.md

📄 CodeRabbit inference engine (.cursor/rules/code-formatting.mdc)

For markdown files, use make verify-codespell to catch spelling errors

Files:

  • docs/content/reference/api.md
🧠 Learnings (3)
📓 Common learnings
Learnt from: enxebre
PR: openshift/hypershift#6300
File: control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go:3494-3550
Timestamp: 2025-09-04T09:50:08.095Z
Learning: The ControlPlaneUpToDate condition in Hypershift is specifically designed to track version alignment between control plane components and the desired release version. Availability and rollout status checks are captured for informational purposes in the message but do not affect the True/False status of the condition itself. This separation of concerns allows tracking version correctness independently from operational readiness.
📚 Learning: 2025-09-04T09:50:08.095Z
Learnt from: enxebre
PR: openshift/hypershift#6300
File: control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go:3494-3550
Timestamp: 2025-09-04T09:50:08.095Z
Learning: The ControlPlaneUpToDate condition in Hypershift is specifically designed to track version alignment between control plane components and the desired release version. Availability and rollout status checks are captured for informational purposes in the message but do not affect the True/False status of the condition itself. This separation of concerns allows tracking version correctness independently from operational readiness.

Applied to files:

  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • api/hypershift/v1beta1/hostedcluster_conditions.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go
  • docs/content/reference/api.md
📚 Learning: 2025-08-29T18:49:17.570Z
Learnt from: CR
PR: openshift/hypershift#0
File: AGENTS.md:0-0
Timestamp: 2025-08-29T18:49:17.570Z
Learning: Applies to {hypershift-operator,control-plane-operator}/controllers/**/*.go : Controller code should follow controller-runtime patterns with proper error handling and requeuing

Applied to files:

  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
🧬 Code graph analysis (2)
hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go (2)
api/hypershift/v1beta1/hostedcluster_conditions.go (2)
  • ControlPlaneUpToDate (28-28)
  • StatusUnknownReason (209-209)
vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (2)
  • ControlPlaneUpToDate (28-28)
  • StatusUnknownReason (209-209)
control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (3)
api/hypershift/v1beta1/controlplanecomponent_types.go (4)
  • ControlPlaneComponent (87-98)
  • ControlPlaneComponentList (102-111)
  • ControlPlaneComponentAvailable (20-20)
  • ControlPlaneComponentRolloutComplete (22-22)
support/releaseinfo/releaseinfo.go (1)
  • ReleaseImage (39-42)
api/hypershift/v1beta1/hostedcluster_conditions.go (2)
  • ControlPlaneUpToDate (28-28)
  • AsExpectedReason (210-210)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Red Hat Konflux / control-plane-operator-main-on-pull-request
  • GitHub Check: Red Hat Konflux / hypershift-operator-main-on-pull-request
🔇 Additional comments (3)
vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (1)

23-29: Vendor and API definitions in sync. Verified ControlPlaneUpToDate appears exactly once in both api/…/hostedcluster_conditions.go and vendor/…/hostedcluster_conditions.go with no duplicates.

control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (2)

781-783: LGTM: UpToDate condition reconciliation call placed correctly

Invocation after release image lookup and before the status Patch is appropriate.


3523-3550: Semantics match intent: version alignment drives Status; availability/rollout are informational

This aligns with the documented design for ControlPlaneUpToDate. No change needed.

@enxebre enxebre changed the title CNTRLPLANE-993: Add controlPlaneUpToDate condition CNTRLPLANE-993: Feat(API) Add controlPlaneUpToDate condition Sep 4, 2025
@enxebre
Copy link
Member Author

enxebre commented Sep 4, 2025

/test verify

@enxebre enxebre changed the title CNTRLPLANE-993: Feat(API) Add controlPlaneUpToDate condition CNTRLPLANE-993: Feat(API): Add controlPlaneUpToDate condition Sep 4, 2025
@enxebre enxebre force-pushed the controlplaneuptodate-condition branch from eb81f58 to cd86662 Compare September 4, 2025 17:02
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Sep 4, 2025
@enxebre enxebre changed the title CNTRLPLANE-993: Feat(API): Add controlPlaneUpToDate condition CNTRLPLANE-993: feat(API): Add controlPlaneUpToDate condition Sep 4, 2025
@rtheis
Copy link
Contributor

rtheis commented Sep 4, 2025

/uncc rtheis

@openshift-ci openshift-ci bot removed the request for review from rtheis September 4, 2025 17:05
@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 4, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.21.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed upon the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

Summary by CodeRabbit

  • New Features

  • Introduced a ControlPlaneUpToDate status condition that reports version alignment, availability, and rollout completeness of management-side control‑plane components; exposed on HostedControlPlane and propagated to HostedCluster.

  • Documentation

  • Expanded API reference with the new condition and a broader set of condition types describing HostedCluster/HCP state.

  • Tests

  • Added unit tests for the new reconciliation logic.

  • Updated e2e readiness checks to stop requiring the new condition.

  • Chores

  • Updated expected/support condition defaults to include the new condition.

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
docs/content/reference/api.md (1)

4700-4706: Fix wording, hyphenation, and document Status semantics for ControlPlaneUpToDate (update Go doc comments and re-run make api-docs)

Generated text has style/grammar issues (“management side”, “rollout”), and it’s missing the key contract: Status reflects version alignment only. Please update the source Go doc comments for the condition (not this generated file), then run make api-docs.

-</tr><tr><td><p>&#34;ControlPlaneUpToDate&#34;</p></td>
-<td><p>ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
-This is a useful semantic to make decisions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
-E.g. Acknowledge that none of the components running management side are vulnerable to a specific CVE.
-E.g. Don’t block HC upgrades when there’s no data plane compute.
-Until <a href="https://issues.redhat.com/browse/OCPSTRAT-1454">https://issues.redhat.com/browse/OCPSTRAT-1454</a> is fixed, this condition has limited value, as the versions of OVN Control plane components are still dictated by the ability of the data plane to rollout.</p>
+</tr><tr><td><p>&#34;ControlPlaneUpToDate&#34;</p></td>
+<td><p>ControlPlaneUpToDate indicates whether the control plane components running on the management side are up to date with the desired release version.
+This condition enables decisions that are decoupled from the data plane’s ability to roll out during an upgrade to a specific version.
+For example, acknowledge that no components running on the management side are vulnerable to a specific CVE.
+For example, don’t block HostedCluster upgrades when there is no data-plane compute.
+Note: the Status reflects only version alignment; availability and rollout details may be included in the message for context but do not affect the True/False value.
+Until <a href="https://issues.redhat.com/browse/OCPSTRAT-1454">https://issues.redhat.com/browse/OCPSTRAT-1454</a> is fixed, this condition has limited value because the versions of OVN control plane components are still dictated by the data plane’s ability to roll out.</p>

Also run: make verify-codespell for the regenerated docs.

🧹 Nitpick comments (2)
support/conditions/conditions.go (2)

33-35: Add a brief clarifying comment to avoid conflating “up to date” with availability.

Apply:

-        hyperv1.ClusterVersionProgressing: metav1.ConditionFalse,
-        hyperv1.ControlPlaneUpToDate:      metav1.ConditionTrue,
+        hyperv1.ClusterVersionProgressing: metav1.ConditionFalse,
+        // ControlPlaneUpToDate reflects version alignment of management-side control plane components only;
+        // availability/rollout are orthogonal and reflected elsewhere.
+        hyperv1.ControlPlaneUpToDate:      metav1.ConditionTrue,

39-41: Typo in comment (“tooday”).

Apply:

-        // TODO: hyperv1.ValidOIDCConfiguration should really be platform-agnostic, but tooday it's not
+        // TODO: hyperv1.ValidOIDCConfiguration should really be platform-agnostic, but today it's not
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between eb81f58 and cd86662.

📒 Files selected for processing (8)
  • api/hypershift/v1beta1/hostedcluster_conditions.go (1 hunks)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go (3 hunks)
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go (1 hunks)
  • docs/content/reference/api.md (1 hunks)
  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go (1 hunks)
  • support/conditions/conditions.go (1 hunks)
  • test/e2e/util/util.go (1 hunks)
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • api/hypershift/v1beta1/hostedcluster_conditions.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go
  • vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go
  • hypershift-operator/controllers/hostedcluster/hostedcluster_controller.go
  • test/e2e/util/util.go
  • control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go
🧰 Additional context used
📓 Path-based instructions (4)
**/!(*.pb).go

📄 CodeRabbit inference engine (.cursor/rules/100-go-mistakes.mdc)

**/!(*.pb).go: Avoid variable shadowing
Do not over-nest control flow (e.g., nested if or for blocks)
Avoid init() functions unless absolutely necessary
Keep functions small and focused
Prefer composition over inheritance (via embedding)
Use the functional options pattern for constructors where flexibility is needed
Avoid defining interfaces until you need them
Do not return interfaces from constructors or public APIs
Define interfaces on the consumer side, not the producer side
Keep interfaces small and focused (generally 1–2 methods)
Avoid embedding pointer types unless necessary
Don’t overuse getters/setters — prefer public fields when it makes sense
Use value receivers when the method doesn't mutate state or require pointer semantics
Do not use util, common, or similarly vague package names
Avoid package name collisions by using clear, unique names
Do not expose unnecessary symbols (keep exported API minimal)
Distinguish between nil and empty slices
Avoid memory leaks from slicing large arrays
Always check the capacity when copying or appending slices
Preallocate slice capacity when size is known ahead of time
Always initialize maps before use
Check existence with the two-value assignment (val, ok := m[key])
Be aware that ranging over a map is in random order
Always check errors — don’t ignore them
Wrap errors with context when rethrowing
Avoid panics except in truly unrecoverable cases
Use errors.Is and errors.As for error comparison in Go 1.20+
Always defer cancel() when using context.WithCancel
Do not leak goroutines — ensure they exit cleanly
Avoid data races — use mutexes or channels appropriately
Never close a channel from the receiving side
Keep imports grouped and ordered: stdlib, external, internal
Avoid magic numbers — use named constants
Prefer explicit over implicit — especially in exported APIs
Only use generics when they simplify code or add real flexibility
Avoid over-engineering with type parameters
Be cautious with constraint complexity — keep...

Files:

  • support/conditions/conditions.go
**/*.go

📄 CodeRabbit inference engine (.cursor/rules/code-formatting.mdc)

Use make lint-fix after writing Go code to automatically fix most linting issues

Follow the rules defined in @100-go-mistakes.mdc for Go code

Files:

  • support/conditions/conditions.go
support/**/*.go

📄 CodeRabbit inference engine (AGENTS.md)

Define common, shared interfaces and utilities under support/ packages

Files:

  • support/conditions/conditions.go
**/*.md

📄 CodeRabbit inference engine (.cursor/rules/code-formatting.mdc)

For markdown files, use make verify-codespell to catch spelling errors

Files:

  • docs/content/reference/api.md
🧠 Learnings (2)
📓 Common learnings
Learnt from: enxebre
PR: openshift/hypershift#6300
File: control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go:3494-3550
Timestamp: 2025-09-04T09:50:08.095Z
Learning: The ControlPlaneUpToDate condition in Hypershift is specifically designed to track version alignment between control plane components and the desired release version. Availability and rollout status checks are captured for informational purposes in the message but do not affect the True/False status of the condition itself. This separation of concerns allows tracking version correctness independently from operational readiness.
📚 Learning: 2025-09-04T09:50:08.095Z
Learnt from: enxebre
PR: openshift/hypershift#6300
File: control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller.go:3494-3550
Timestamp: 2025-09-04T09:50:08.095Z
Learning: The ControlPlaneUpToDate condition in Hypershift is specifically designed to track version alignment between control plane components and the desired release version. Availability and rollout status checks are captured for informational purposes in the message but do not affect the True/False status of the condition itself. This separation of concerns allows tracking version correctness independently from operational readiness.

Applied to files:

  • support/conditions/conditions.go
  • docs/content/reference/api.md
🧬 Code graph analysis (1)
support/conditions/conditions.go (2)
api/hypershift/v1beta1/hostedcluster_conditions.go (1)
  • ControlPlaneUpToDate (28-28)
vendor/github.com/openshift/hypershift/api/hypershift/v1beta1/hostedcluster_conditions.go (1)
  • ControlPlaneUpToDate (28-28)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Red Hat Konflux / hypershift-operator-main-on-pull-request
  • GitHub Check: Red Hat Konflux / control-plane-operator-main-on-pull-request
🔇 Additional comments (1)
support/conditions/conditions.go (1)

34-35: Cross-version tolerance confirmed

Tests in test/e2e/util/util.go explicitly delete ControlPlaneUpToDate for older releases (<4.20), and the condition is defined in both the in-repo API and vendor.

ControlPlaneUpToDate indicates whether the control plane components running management
side are up to date with the desired release version.

This is a useful semantic to make decissions decoupled from the ability of components
running on the data plane to rollout during an upgrade to a specific version.

E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.

Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value,
since OVN Control plane components will be still dictated by the ability of the data plane to rollout.
@enxebre enxebre force-pushed the controlplaneuptodate-condition branch from cd86662 to f2fd2c8 Compare September 4, 2025 21:22
@openshift-ci-robot
Copy link

openshift-ci-robot commented Sep 4, 2025

@enxebre: This pull request references CNTRLPLANE-993 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 "4.21.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it:

ControlPlaneUpToDate indicates whether the control plane components running management side are up to date with the desired release version.
This is a useful semantic to make decissions decoupled from the ability of components running on the data plane to rollout during an upgrade to a specific version.
E.g. Acknowledge that none of the components running management side is vunerable to a specific CVE.
E.g. Don't block subsequent HC upgrades when there's no data plane compute.
Until https://issues.redhat.com/browse/OCPSTRAT-1454 is fixed, this condition has limited value, since OVN Control plane components will be still dictated by the ability of the data plane to rollout.

Will add unit/e2e coverage once agreed upon the approach.

Which issue(s) this PR fixes (optional, use fixes #<issue_number>(, fixes #<issue_number>, ...) format, where issue_number might be a GitHub issue, or a Jira story:
Fixes #

Checklist

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

Summary by CodeRabbit

  • New Features

  • Introduced ControlPlaneUpToDate status condition reporting version alignment, availability, and rollout completeness of management-side control‑plane components; surfaced on HostedControlPlane and propagated to HostedCluster.

  • Documentation

  • Expanded API reference with ControlPlaneUpToDate and a broad set of additional condition types describing HostedCluster/HCP state.

  • Tests

  • Added unit tests for the new reconciliation checks.

  • Updated e2e readiness checks to stop requiring the new condition.

  • Chores

  • Updated expected/support condition defaults to include the new condition.

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.

@enxebre
Copy link
Member Author

enxebre commented Sep 5, 2025

/test e2e-aks
/test e2e-aws-4-20

@muraee
Copy link
Contributor

muraee commented Sep 5, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Sep 5, 2025
@jparrill
Copy link
Contributor

jparrill commented Sep 5, 2025

/uncc @jparrill

@openshift-ci openshift-ci bot removed the request for review from jparrill September 5, 2025 08:17
@enxebre
Copy link
Member Author

enxebre commented Sep 5, 2025

/verify help

@enxebre
Copy link
Member Author

enxebre commented Sep 5, 2025

/verified help

@openshift-ci-robot
Copy link

@enxebre: The /verified command must be used with one of the following actions: by, later, remove, or bypass. See https://docs.ci.openshift.org/docs/architecture/jira/#premerge-verification for more information.

Details

In response to this:

/verified help

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
Contributor

openshift-ci bot commented Dec 15, 2025

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

Test name Commit Details Required Rerun command
ci/prow/e2e-kubevirt-aws-ovn d51d42a link false /test e2e-kubevirt-aws-ovn
ci/prow/e2e-kubevirt-metal-conformance d51d42a link false /test e2e-kubevirt-metal-conformance
ci/prow/e2e-azure-aks-ovn-conformance d51d42a link false /test e2e-azure-aks-ovn-conformance
ci/prow/e2e-kubevirt-azure-ovn d51d42a link false /test e2e-kubevirt-azure-ovn
ci/prow/e2e-aws-4-20 f2fd2c8 link true /test e2e-aws-4-20
ci/prow/e2e-kubevirt-aws-ovn-reduced f2fd2c8 link true /test e2e-kubevirt-aws-ovn-reduced
ci/prow/e2e-aks f2fd2c8 link true /test e2e-aks
ci/prow/e2e-aks-4-20 f2fd2c8 link true /test e2e-aks-4-20
ci/prow/e2e-aws-upgrade-hypershift-operator f2fd2c8 link true /test e2e-aws-upgrade-hypershift-operator
ci/prow/unit f2fd2c8 link true /test unit
ci/prow/e2e-aws f2fd2c8 link true /test e2e-aws
ci/prow/e2e-aks-4-21 f2fd2c8 link true /test e2e-aks-4-21
ci/prow/e2e-aws-4-21 f2fd2c8 link true /test e2e-aws-4-21

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-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 15, 2025
@openshift-merge-robot
Copy link
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.

@enxebre
Copy link
Member Author

enxebre commented Feb 27, 2026

closing in favour of openshift/enhancements#1950

@enxebre enxebre closed this Feb 27, 2026
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/api Indicates the PR includes changes for the API area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/testing Indicates the PR includes changes for e2e testing 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. 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.

9 participants