Skip to content

✨ report ClusterObjectSet rollout as Ready=False/ObjectsNotReady - #3009

Merged
openshift-merge-bot[bot] merged 1 commit into
operator-framework:mainfrom
perdasilva:cos-ready-objectsnotready-2
Oct 14, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
operator-framework:mainfrom
perdasilva:cos-ready-objectsnotready-2

Conversation

@perdasilva

@perdasilva perdasilva commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

Part 1/5 of a series completing the ClusterObjectSet (COS) Ready condition vocabulary.

Collapses the two "rolling out" states — the in-transition RollingOut path and the per-object ProbeFailure path — into a single Ready=False/ObjectsNotReady reason. On the readiness axis these were one state observed at two instants (a pending probe already counts as not-ready), so one
reason reads more clearly.

Changes

  • Add ClusterObjectSetReasonObjectsNotReady; remove ClusterObjectSetReasonProbeFailure. COS no longer emits the shared RollingOut reason.
  • The condition message is a count ("N object(s) are not yet ready.", or "Objects are not yet ready." before any probe reports); per-object probe detail is logged at V(1) rather than carried on the condition.
  • The ProgressDeadlineExceeded overlay still wins, and keeps a generic "last status" so the reconstructed ClusterExtension Progressing message stays stable.
  • CE reconstruction: progressingFromReady maps ObjectsNotReady → Progressing=True/RollingOut (CE contract unchanged).

Scope

Experimental API only. Updates unit tests (status-condition + deadline tables), e2e status/revision/update/install features, the concept doc, and regenerates the CRD, manifests, and API reference.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Status Reporting

    • Cluster object sets now use a unified ObjectsNotReady status when objects are still being applied or have not passed readiness checks.
    • Status messages report how many objects are not ready; after the progress deadline, the message is a stable summary: “Objects are not yet ready.”
    • Progressing and availability conditions reflect the updated readiness status.
  • Documentation

    • Updated condition descriptions to explain when ObjectsNotReady is reported.

Collapse the in-transition RollingOut path and the ProbeFailure path into a
single ObjectsNotReady reason on the ClusterObjectSet Ready condition. The
condition message reports the count of not-ready objects ("N object(s) are not
yet ready."); per-object probe detail is logged at V(1) rather than carried in
the condition, and the ProgressDeadlineExceeded "last status" uses a generic
summary so the reconstructed ClusterExtension Progressing message stays stable.
Remove ClusterObjectSetReasonProbeFailure; COS no longer emits the shared
RollingOut reason. ClusterExtension Progressing still reports RollingOut while
rolling out.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
@openshift-ci
openshift-ci Bot requested review from joelanford and pedjak October 14, 2026 06:34
@netlify

netlify Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit f4cf2b1
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/6acf2261e2b67ef6a3af153f
😎 Deploy Preview https://deploy-preview-3009--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@perdasilva perdasilva added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 14, 2026
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 6a6fbf42-b3eb-455f-8526-de4b7fae069f
📥 Commits

Reviewing files that changed from the base of the PR and between 53665b0 and f4cf2b1.

📒 Files selected for processing: 14
  • api/v1/clusterobjectset_types.go
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • docs/draft/concepts/clusterobjectsets.md
  • helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
  • internal/object-controller/controllers/clusterobjectset_controller.go
  • internal/object-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/controllers/common_controller.go
  • internal/operator-controller/controllers/common_controller_test.go
  • manifests/experimental-e2e.yaml
  • manifests/experimental.yaml
  • test/e2e/features/install.feature
  • test/e2e/features/revision.feature
  • test/e2e/features/status.feature
  • test/e2e/features/update.feature

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

📝 Walkthrough

ClusterObjectSet readiness reporting now uses ObjectsNotReady instead of separate rollout and probe-failure reasons. Reconciliation reports counts of unready objects and uses a stable generic message after the progress deadline. API descriptions, condition mapping, tests, and end-to-end expectations reflect these updates.

Changes: ClusterObjectSet readiness reporting

Layer / File(s) Summary
Readiness reason contract
api/v1/clusterobjectset_types.go, applyconfigurations/api/v1/clusterobjectsetstatus.go, docs/draft/concepts/clusterobjectsets.md, helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml, manifests/experimental*.yaml
The exported reason and Ready-condition descriptions use ObjectsNotReady for objects still being applied or not passing readiness probes.
Incomplete revision reconciliation
internal/object-controller/controllers/clusterobjectset_controller.go, internal/object-controller/controllers/clusterobjectset_controller_test.go
Reconciliation collects details for each unready object, reports their count, and uses a stable generic message after the progress deadline. Tests cover these conditions and messages.
Condition mapping and scenario expectations
internal/operator-controller/controllers/common_controller.go, internal/operator-controller/controllers/common_controller_test.go, test/e2e/features/*
Operator condition mapping and end-to-end expectations use ObjectsNotReady and the updated not-ready messages.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: fao89, tmshort, pedjak

Merge Risk: ⚪ Minimal · up to f4cf2

No actionable merge-blocking issue is established for the readiness-reason change; it is mergeable after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 6 files. (8 skipped: 8… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title is concise, specific, and accurately describes the main change: reporting ClusterObjectSet rollout as Ready=False with reason ObjectsNotReady.
Description check Passed The description clearly explains the motivation, behavior changes, scope, compatibility impact, and test and documentation updates. It does not include the template's Reviewer Checklist section, but t…
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.
Full details: Docstring Coverage

Explanation

Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 6 files. (8 skipped: 8 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@perdasilva perdasilva added the lgtm Indicates that a PR is ready to be merged. label Oct 14, 2026
@openshift-ci

openshift-ci Bot commented Oct 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by:

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

@perdasilva

Copy link
Copy Markdown
Contributor Author

bringing over the approved and lgtm labels over from #2999

@openshift-merge-bot
openshift-merge-bot Bot merged commit 5f760d7 into operator-framework:main Oct 14, 2026
72 of 75 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. go-apidiff-override lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant