Skip to content

🌱 OPRUN-4849: Cover standalone ClusterObjectSet object lifecycle - #3168

Open
fao89 wants to merge 1 commit into
operator-framework:mainfrom
fao89:OPRUN-4849
Open

fao89 wants to merge 1 commit into
operator-framework:mainfrom
fao89:OPRUN-4849

Conversation

@fao89

@fao89 fao89 commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Description

Cover standalone ClusterObjectSet object lifecycle: omitted objects are collected
when a successor revision archives its predecessor, while retained objects keep
their UID and data.

Exercise phase progression across reconciles using controlled ConfigMap probes,
and verify that later-phase resources remain absent until earlier probes pass.
Reject stale status and API errors when checking absence. Include the existing
Secret-backed installation scenario in the focused @COSObjectLifecycle selector.

Document standalone object-controller installation, COS/COD scenario selection,
namespace discovery, and isolation requirements for component and downstream runs.

This follows the runtime and standalone scenario support merged in #3158, #3161,
and #3162.

Jira: https://redhat.atlassian.net/browse/OPRUN-4849

Validation using Go 1.26.5:

  • make verify, make lint (0 issues), and make test-unit passed.
  • 87 E2E helper tests passed with the race detector.
  • All E2E suites compile, and lifecycle step registration succeeds.
  • Standalone lifecycle run: 3 scenarios / 40 steps passed with no skipped or
    undefined steps, against object-controller without operator-controller or
    catalogd.
  • The complete branch diff against main contains 6 files.

Reviewer Checklist

  • API Go Documentation
  • Tests: Unit Tests (and E2E Tests, if appropriate)
  • Comprehensive Commit Messages
  • Links to related GitHub Issue(s)

Summary by CodeRabbit

  • Tests

    • Added standalone end-to-end scenarios covering object-set updates, cleanup, resource retention, and readiness-gated deployment phases.
    • Expanded validation to ensure resources in later phases remain unavailable until earlier phases are ready.
  • Documentation

    • Documented how to run standalone object-controller scenarios, select scenario types, and configure serial runs.
    • Clarified how standalone scenarios interact with integration tests and aggregate test runs.

Verify omitted objects are collected when a successor COS archives its
predecessor, while retained objects preserve their UID and data. Exercise
phase probes across reconciles using controlled ConfigMap readiness gates.

Reuse the existing immutable Secret installation scenario through a focused
lifecycle tag. Reject stale status and API errors in absence checks.

Document standalone controller installation, COS/COD selectors, namespace
discovery, and isolation requirements for component and downstream runs.
Keep the shared documentation here so COS and COD can merge independently.

Refs: OPRUN-4849
Signed-off-by: Fabricio Aguiar <fabricio.aguiar@gmail.com>

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
@netlify

netlify Bot commented Nov 12, 2026

Copy link
Copy Markdown

👷 Deploy request for olmv1 pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 82bee37

@openshift-ci
openshift-ci Bot requested review from pedjak and perdasilva November 12, 2026 15:17
@openshift-ci

openshift-ci Bot commented Nov 12, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign pedjak for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@coderabbitai

coderabbitai Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The object-controller e2e suite adds ClusterObjectSet lifecycle scenarios and a step that checks whether later-phase resources remain absent. The README documents component tags, standalone test selection, and run requirements.

Changes: Object-controller lifecycle coverage

Layer / File(s) Summary
Later-phase absence observation
test/internal/e2e/object-controller/steps/lifecycle_steps.go, test/internal/e2e/object-controller/steps/steps.go, test/internal/e2e/object-controller/steps/lifecycle_steps_test.go
A registered Godog step checks the current-generation Ready=False/ObjectsNotReady condition and polls for listed resources to remain absent. Tests cover observation results, API and decoding errors, and invalid inputs.
Lifecycle scenarios and suite guidance
test/e2e/object-controller/features/cos_object_lifecycle.feature, test/e2e/object-controller/features/revision.feature, test/e2e/README.md
New scenarios check revision replacement, object retention and removal, and readiness-gated phases. The README documents component tags, standalone selectors, run settings, and readiness and rejection conditions.

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

Change: Other

Possibly related PRs

Suggested reviewers: dtfranz, perdal silva, tmshort

Merge Risk: Minimal · up to 82bee

This PR adds test coverage and documentation for standalone ClusterObjectSet lifecycle behavior and does not change runtime behavior. No actionable merge-blocking risk remains.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title names the main change: standalone ClusterObjectSet object lifecycle E2E coverage. The changeset adds COS lifecycle scenarios, a later-phase absence step, and the lifecycle tag, so the title …
Description check Passed The description follows the template. It has a Description section that explains the changes and their motivation. The Reviewer Checklist is present, and the author ticked the unit-test, commit-messag…
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: Title check

Explanation

The title names the main change: standalone ClusterObjectSet object lifecycle E2E coverage. The changeset adds COS lifecycle scenarios, a later-phase absence step, and the lifecycle tag, so the title matches the primary change. It uses the 🌱 prefix that the template asks for.

Full details: Description check

Explanation

The description follows the template. It has a Description section that explains the changes and their motivation. The Reviewer Checklist is present, and the author ticked the unit-test, commit-message, and issue-link items. The API Go Documentation item is left unchecked. The change adds no exported API (the summary lists none, aside from an unexported-style step function in a test package), so that item does not block the check. The description also gives validation results and a Jira link.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 178f3b9a-7af0-4d9e-9379-57ef3cfe1f6a
Commits

Reviewing files that changed from the base of the PR and between 3d916af and 82bee37.

Files selected for processing: 6

  • test/e2e/README.md
  • test/e2e/object-controller/features/cos_object_lifecycle.feature
  • test/e2e/object-controller/features/revision.feature
  • test/internal/e2e/object-controller/steps/lifecycle_steps.go
  • test/internal/e2e/object-controller/steps/lifecycle_steps_test.go
  • test/internal/e2e/object-controller/steps/steps.go

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

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant