Skip to content

Call RevisionEngine.Teardown when CER is archived#6

Closed
perdasilva wants to merge 98 commits intomainfrom
fix-cer-archival-teardown
Closed

Call RevisionEngine.Teardown when CER is archived#6
perdasilva wants to merge 98 commits intomainfrom
fix-cer-archival-teardown

Conversation

@perdasilva
Copy link
Copy Markdown
Owner

Summary

  • Call revisionEngine.Teardown() when a ClusterExtensionRevision enters the Archived lifecycle state, ensuring managed resources removed between bundle versions are cleaned up from the cluster
  • Move RevisionEngine creation before the teardown/reconcile branch so it is available for both paths
  • Handle incomplete teardown (requeue after 5s) and teardown errors (propagate for controller retry) — previously errors were silently swallowed
  • Add dummy-configmap to the v1.0.0 test bundle (absent in v1.2.0) and assert its removal in the "Each update creates a new revision" e2e test

Test plan

  • Unit tests pass (Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion)
  • New unit test: requeue when archived revision teardown is incomplete
  • New unit test: error propagation when archived revision teardown fails
  • teardown() coverage improved from 68.8% to 93.8%
  • E2e: "Each update creates a new revision" verifies dummy-configmap is removed after archival

🤖 Generated with Claude Code

perdasilva and others added 30 commits December 12, 2025 12:18
…rk#2383)

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
…framework#2382)

In order to fully support multiple replicas, we need to be able to run
our tests in a multi-node environment, but we don't _always_ want to
run in a multi-node test environment.

Update the experimental-e2e to run a 2-node kind cluster (both control-
plane).

Update the `kind-load` recipe to directly load a docker image via
`load docker-image`, since `load image-archive` has issues with
multi-node clusters.

Signed-off-by: Todd Short <tshort@redhat.com>
Rather than litter the root directory with kind configs, add them to
a subdirectory.
Also rename the experimental one to indicate it's for 2 nodes.

Signed-off-by: Todd Short <tshort@redhat.com>
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.14.2 to 4.14.3.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…framework#2387)

Bumps [github.com/klauspost/compress](https://github.com/klauspost/compress) from 1.18.1 to 1.18.2.
- [Release notes](https://github.com/klauspost/compress/releases)
- [Commits](klauspost/compress@v1.18.1...v1.18.2)

---
updated-dependencies:
- dependency-name: github.com/klauspost/compress
  dependency-version: 1.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Replace traditional Go e2e tests with Godog (Cucumber for Go) to improve
test readability and maintainability through behavior-driven development.

Changes:
- Convert existing test scenarios to Gherkin feature files
- Implement reusable step definitions in steps/steps.go
- Add scenario hooks for setup/teardown and feature gate detection
- Provide comprehensive documentation in test/e2e/README.md
- Remove legacy test files (cluster_extension_install_test.go, etc.)

Benefits:
- Human-readable test scenarios serve as living documentation
- Better separation between test specification and implementation
- Easier collaboration between technical and non-technical stakeholders
- Reduced code duplication through reusable step definitions

Assisted-By: "Claude <noreply@anthropic.com>"
This version requires golang 1.24.6 (which is our max version) but also
supports golang 1.25.3. This is the maximum version of goreleaser that
we can move to given our golang version constraints of having to support
golang 1.24 while moving to golang 1.25.

Updates the config file to v2

Signed-off-by: Todd Short <tshort@redhat.com>
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.18.0 to 0.19.0.
- [Commits](golang/sync@v0.18.0...v0.19.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rk#2392)

Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.10.1 to 1.10.2.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](spf13/cobra@v1.10.1...v1.10.2)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  dependency-version: 1.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [platformdirs](https://github.com/tox-dev/platformdirs) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/CHANGES.rst)
- [Commits](tox-dev/platformdirs@4.5.0...4.5.1)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-version: 4.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Todd Short <tshort@redhat.com>
…d conftest (operator-framework#2393)

Replace the e2e NetworkPolicy tests with static analysis tools that validate
NetworkPolicy configurations at build time rather than runtime.

Tools:
- kube-score: https://github.com/zegl/kube-score
- conftest: https://www.conftest.dev/
- OPA (Open Policy Agent): https://www.openpolicyagent.org/docs/latest/policy-language/

Changes:
- Add kube-score via bingo for validating deployed NetworkPolicy resources
- Add conftest via bingo for OPA-based policy validation of Helm charts
- Add OPA policies to enforce NetworkPolicy requirements:
  - Deny-all default policy must exist
  - catalogd-controller-manager must allow ingress on ports 7443, 8443, 9443
  - operator-controller-controller-manager must allow ingress on port 8443
  - Both controllers must have general egress enabled
  - Prometheus NetworkPolicy must allow ingress/egress (when deployed)
- Add lint-helm target integration with conftest policy checks
- Add lint-deployed-resources target for runtime validation with kube-score
- Add conftest validation to manifest generation
- Add CI workflow to detect NetworkPolicy changes in PRs and post a comment
- Remove network_policy_test.go as tests are now covered by static analysis

This approach provides faster feedback by catching NetworkPolicy issues during
helm linting and manifest generation rather than requiring a full e2e test run.

Co-authored-by: Claude <noreply@anthropic.com>
)

Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.17.2 to 10.18.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](facelessuser/pymdown-extensions@10.17.2...10.18)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.18'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.18.2 to 1.19.2.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](cert-manager/cert-manager@v1.18.2...v1.19.2)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.6.0...2.6.1)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.30.0 to 0.31.0.
- [Commits](golang/mod@v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.39.0 to 0.40.0.
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](golang/tools@v0.39.0...v0.40.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tor-framework#2414)

Bumps [github.com/operator-framework/api](https://github.com/operator-framework/api) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/operator-framework/api/releases)
- [Changelog](https://github.com/operator-framework/api/blob/master/RELEASE.md)
- [Commits](operator-framework/api@v0.36.0...v0.37.0)

---
updated-dependencies:
- dependency-name: github.com/operator-framework/api
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#2412)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.1 to 5.5.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5.5.1...v5.5.2)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.19.3 to 3.19.4.
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](helm/helm@v3.19.3...v3.19.4)

---
updated-dependencies:
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.19.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.6.1...2.6.2)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.18 to 10.19.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](facelessuser/pymdown-extensions@10.18...10.19)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: '10.19'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.19 to 10.19.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](facelessuser/pymdown-extensions@10.19...10.19.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…or-framework#2421)

Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.29 to 1.7.30.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](containerd/containerd@v1.7.29...v1.7.30)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-version: 1.7.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…work#2422)

Bumps [github.com/BurntSushi/toml](https://github.com/BurntSushi/toml) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/BurntSushi/toml/releases)
- [Commits](BurntSushi/toml@v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: github.com/BurntSushi/toml
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.0 to 9.7.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](squidfunk/mkdocs-material@9.7.0...9.7.1)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
jianzhangbjz and others added 29 commits January 29, 2026 04:25
Bumps [regex](https://github.com/mrabarnett/mrab-regex) from 2025.11.3 to 2026.1.15.
- [Changelog](https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt)
- [Commits](mrabarnett/mrab-regex@2025.11.3...2026.1.15)

---
updated-dependencies:
- dependency-name: regex
  dependency-version: 2026.1.15
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
…mework#2468)

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
…framework#2470)

Bumps [github.com/klauspost/compress](https://github.com/klauspost/compress) from 1.18.2 to 1.18.3.
- [Release notes](https://github.com/klauspost/compress/releases)
- [Commits](klauspost/compress@v1.18.2...v1.18.3)

---
updated-dependencies:
- dependency-name: github.com/klauspost/compress
  dependency-version: 1.18.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es (operator-framework#2463)

* test: ensure single/own namespace increase coverage for both runtimes

Add E2E test scenarios for single/own namespace support that run for
both Helm and Boxcutter runtimes:

1. Invalid DNS-1123 watchNamespace - tests namespace name validation
2. Reject watchNamespace for AllNamespaces-only operators

Tests use assertions compatible with both runtimes. Unit tests in
provider_test.go provide comprehensive validation coverage via shared
RegistryV1ManifestProvider.

Achieves 100% parity with downstream OCP test coverage.

* test: improve error message assertions for validation scenarios

Enhance both new test scenarios with more complete error message assertions:

1. DNS-1123 validation test: Now checks for the full error context
   including "invalid ClusterExtension configuration: invalid target
   namespaces [invalid-namespace-]: a lowercase RFC 1123 subdomain..."
   instead of just "lowercase RFC 1123".

2. AllNamespaces operator rejection test: Now verifies the complete error
   about "invalid ClusterExtension configuration: supported install modes
   [AllNamespaces] do not support target namespaces" instead of just
   "watchNamespace".

These more comprehensive assertions better demonstrate that proper
validation is occurring and provide clearer test documentation of the
expected error behavior.

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…ad of "Absent" (operator-framework#2465)

* Make config errors permanent instead of retrying

When configuration is invalid, mark it as a permanent error so the
system doesn't keep trying to install it over and over. This saves
resources and makes it clear the user needs to fix their config.

Assisted-by: Claude <noreply@anthropic.com>

* Show "Failed" status when config is wrong

Before: Invalid config showed status as "Absent" which was confusing
After: Shows "Failed" so users know something is wrong

Only checks the latest attempt, not old ones that don't matter anymore.

Assisted-by: Claude <noreply@anthropic.com>

* Fix status not updating when BOXCUTTER config fails

BOXCUTTER runtime was returning early on config errors without
setting the status. Now it updates the status first so users can
see what went wrong.

Assisted-by: Claude <noreply@anthropic.com>

* Add tests for config error handling

Tests check:
- Config errors are permanent (not retried)
- Status shows "Failed" when config is wrong
- Namespace names are validated
- AllNamespaces operators reject watchNamespace config

Includes both unit tests and end-to-end tests.

Assisted-by: Claude <noreply@anthropic.com>

* Remove 'terminal error:' prefix from status messages

When TerminalError is used, unwrap it before showing the error
message in status conditions. This prevents the 'terminal error:'
prefix from appearing in user-facing messages.

Changes:
- Add UnwrapTerminal() helper function to cleanly unwrap terminal errors
- Use the helper in setStatusProgressing and wrapErrorWithResolutionInfo
- Don't set Installed condition when Progressing is Blocked (terminal error)
  since the Progressing condition already provides all necessary information

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Add custom TerminalError with granular Reason support

Previously, all terminal errors used the generic "Blocked" reason in
the Progressing condition. This wasn't semantically correct - "Blocked"
was intended for external blockers like resource collisions, not for
user configuration errors.

This commit introduces a custom TerminalError type that can carry a
specific Reason field, allowing more precise categorization of terminal
errors in status conditions.

Changes:
- Add ReasonInvalidConfiguration constant for configuration errors
- Create NewTerminalError(reason, err) to wrap errors with a reason
- Add ExtractTerminalReason(err) to retrieve the reason from errors
- Update setStatusProgressing to use extracted reason when available
- Fall back to ReasonBlocked for backward compatibility with plain
  reconcile.TerminalError() usage
- Update config validation to use ReasonInvalidConfiguration
- Update tests and e2e expectations accordingly

Result:
- Config errors now show: Progressing: False, Reason: InvalidConfiguration
- Generic terminal errors show: Progressing: False, Reason: Blocked
- More helpful and semantically correct status reporting

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Update internal/operator-controller/controllers/boxcutter_reconcile_steps.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…upgrades (operator-framework#2440)

* (fix) Helm to Boxcutter migration during OLM upgrade

When upgrading OLM from standard (Helm runtime) to experimental
(Boxcutter runtime), the BoxcutterStorageMigrator creates a
ClusterExtensionRevision from the existing Helm release. However,
the migrated revision was created without status conditions, causing
a race condition where it wasn't recognized as "Installed".

Assisted-by: CLAUDE

* Update internal/operator-controller/applier/boxcutter_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update internal/operator-controller/applier/boxcutter.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add test requested by copilot

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
…#2471)

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](facelessuser/soupsieve@2.8.1...2.8.2)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…or-framework#2475)

Bumps [pkg.package-operator.run/boxcutter](https://github.com/package-operator/boxcutter) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/package-operator/boxcutter/releases)
- [Commits](package-operator/boxcutter@v0.8.0...v0.8.1)

---
updated-dependencies:
- dependency-name: pkg.package-operator.run/boxcutter
  dependency-version: 0.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager) from 1.19.2 to 1.19.3.
- [Release notes](https://github.com/cert-manager/cert-manager/releases)
- [Changelog](https://github.com/cert-manager/cert-manager/blob/master/RELEASE.md)
- [Commits](cert-manager/cert-manager@v1.19.2...v1.19.3)

---
updated-dependencies:
- dependency-name: github.com/cert-manager/cert-manager
  dependency-version: 1.19.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…erator-framework#2469)

This PR implements **Phase 2** of the [Deployment Configuration RFC](https://docs.google.com/document/d/18O4qBvu5I4WIJgo5KU1opyUKcrfgk64xsI3tyXxmVEU/edit?tab=t.0):
extending the OLMv1 bundle renderer to apply `DeploymentConfig` customizations to operator deployments.

Building on the foundation from operator-framework#2454, this PR enables the renderer to
accept and apply deployment configuration when rendering registry+v1 bundles.
The implementation follows OLMv0's behavior patterns to ensure compatibility and correctness.

The next PR will wire up the config in the `ClusterExtension` controller by parsing `spec.install.config`
to convert to `DeploymentConfig` and thread `DeploymentConfig` through the controller's render call chain
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](facelessuser/soupsieve@2.8.2...2.8.3)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…framework#2480)

Add the owner-kind label to ClusterExtensionRevision resources to
ensure they are properly labeled with both owner-kind and owner-name.

Previously, only the owner-name label was set on the ClusterExtensionRevision
resource itself. The owner-kind label was only applied to objects within the
revision, but not to the revision resource.

This change updates the buildClusterExtensionRevision function to set both
labels.OwnerKindKey (ClusterExtension) and labels.OwnerNameKey on the
ClusterExtensionRevision metadata.

Also fixed variable name collision where local variable 'labels' shadowed
the imported 'labels' package by renaming it to 'mergedLabels'.

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Per Goncalves da Silva <pegoncal@redhat.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
…framework#2482)

**Summary**

Completes Phase 3 of the [Deployment Configuration RFC](https://docs.google.com/document/d/1bDo3W1asZqjJTgZy7BcVOGtKOEukp0vUi5CO1ac3vwc/edit?usp=sharing).
Extracts `deploymentConfig` from validated ClusterExtension
configuration and passes it to the bundle renderer.

Builds on:
- (PR2454)[operator-framework#2454]: Config API and JSON schema validation
- (PR2469)[operator-framework#2469]: Renderer support for applying deployment customizations

This completes the RFC - users can now customize operator deployments via
ClusterExtension.spec.config.inline:

```
config:
  configType: Inline
  inline:
    watchNamespace: "some-namespace"
    deploymentConfig:
      env:
        - name: TEST_ENV
          value: test-value
      nodeSelector:
        kubernetes.io/os: linux
```
…or-framework#2484)

Bumps [pkg.package-operator.run/boxcutter](https://github.com/package-operator/boxcutter) from 0.8.1 to 0.9.0.
- [Release notes](https://github.com/package-operator/boxcutter/releases)
- [Commits](package-operator/boxcutter@v0.8.1...v0.9.0)

---
updated-dependencies:
- dependency-name: pkg.package-operator.run/boxcutter
  dependency-version: 0.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tor-framework#2485)

Bumps [github.com/operator-framework/api](https://github.com/operator-framework/api) from 0.37.0 to 0.38.0.
- [Release notes](https://github.com/operator-framework/api/releases)
- [Changelog](https://github.com/operator-framework/api/blob/master/RELEASE.md)
- [Commits](operator-framework/api@v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: github.com/operator-framework/api
  dependency-version: 0.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [packaging](https://github.com/pypa/packaging) from 25.0 to 26.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](pypa/packaging@25.0...26.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.10 to 3.10.1.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](Python-Markdown/markdown@3.10.0...3.10.1)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ework#2492)

Bumps [github.com/operator-framework/operator-registry](https://github.com/operator-framework/operator-registry) from 1.61.0 to 1.62.0.
- [Release notes](https://github.com/operator-framework/operator-registry/releases)
- [Commits](operator-framework/operator-registry@v1.61.0...v1.62.0)

---
updated-dependencies:
- dependency-name: github.com/operator-framework/operator-registry
  dependency-version: 1.62.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…amework#2498)

Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.16.2 to 5.16.5.
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](go-git/go-git@v5.16.2...v5.16.5)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-version: 5.16.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.20 to 10.20.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/commits)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.20.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pathspec](https://github.com/cpburnz/python-pathspec) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/cpburnz/python-pathspec/releases)
- [Changelog](https://github.com/cpburnz/python-pathspec/blob/master/CHANGES.rst)
- [Commits](cpburnz/python-pathspec@v1.0.3...v1.0.4)

---
updated-dependencies:
- dependency-name: pathspec
  dependency-version: 1.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
When a ClusterExtensionRevision transitions to the Archived lifecycle
state, invoke the revision engine's Teardown method to clean up managed
resources that are no longer part of the active revision. This ensures
resources removed between bundle versions (e.g. a ConfigMap present in
v1.0.0 but absent in v1.2.0) are deleted from the cluster.

Changes:
- Move RevisionEngine creation before the teardown check so it is
  available for both teardown and reconcile paths
- Pass RevisionEngine and boxcutter Revision into teardown()
- Call revisionEngine.Teardown() for archived revisions and handle
  incomplete teardown (requeue after 5s) and errors (return error
  for controller retry)
- Remove redundant lifecycle state check and fix swallowed teardown
  error
- Add unit tests for incomplete teardown requeue and teardown error
  propagation (teardown coverage: 68.8% -> 93.8%)
- Add dummy-configmap to v1.0.0 test bundle (absent in v1.2.0) and
  assert it is removed in the "Each update creates a new revision"
  e2e test

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
@perdasilva perdasilva closed this Feb 11, 2026
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.

9 participants