Skip to content

🐛 Verify pre-existing extension migration in upgrade E2E - #3125

Draft
fgiudici wants to merge 1 commit into
operator-framework:mainfrom
fgiudici:fix/oprun-4814-upgrade-coverage
Draft

fgiudici wants to merge 1 commit into
operator-framework:mainfrom
fgiudici:fix/oprun-4814-upgrade-coverage

Conversation

@fgiudici

@fgiudici fgiudici commented Nov 6, 2026

Copy link
Copy Markdown
Member

Description

The upgrade suite previously upgraded OLM only once across two scenarios.
The catalog scenario created the extension that actually crossed the upgrade,
but never checked its migration. The extension scenario created a different
extension after experimental OLM was already running. Green upgrade jobs
therefore did not demonstrate migration of a pre-existing extension.

Use one scenario that installs generated bundle 1.0.0 on standard OLM,
upgrades OLM, verifies the same extension and managed object identities,
then updates that extension to 1.0.1. For experimental destinations, require
CE -> COD -> COS controller ownership, completed archived migration revision
1/None, ready revision 2/Prevent, and revision 3 after the bundle update.
Require current-generation status and preserve COD/earlier revision UIDs.
Standard destinations continue to validate Helm-backed installs and updates.

Refresh deployed feature gates and component namespaces after installation
and upgrade, initialize the runner's logging/cleanup, and require leader
leases to point to the current deployment revision. The deterministic small
fixtures use default etcd limits and strict CRD safety.

Test-only part of OPRUN-4814. Hold pending the separate migration ownership
fix: these assertions expect migration to succeed and should fail on the
unchanged runtime. Runtime fixes and the pre-existing oversized inline
migration storage limitation are outside this PR.

Validation uses unchanged runtime source at 98bf7e3, local images built at
b394d9ad, and Kubernetes 1.37.0 in separately named disposable Kind clusters.

  • Released v1.12.0 standard -> local standard: passed, 1 scenario / 30
    steps, including the same-CE update to 1.0.1 (f4b4d0f).
  • Released v1.12.0 standard -> local experimental: failed as expected at
    the new migration assertion: 16 steps passed, 1 failed, 13 skipped
    (05b5a48b; experimental assertions unchanged in f4b4d0f).
  • Local standard -> local experimental: failed as expected at the same
    migration assertion: 16 steps passed, 1 failed, 13 skipped (05b5a48b).
  • Both experimental reproductions show CE-owned COD, completed and ready
    rev1/None still controlled by the CE, COD Progressing=False/OwnerConflict
    and Available=False/NoActiveRevision, and no revision 2. All 10 fixture
    objects are ready; etcd retains its normal 1.5 MiB request limit. No owner
    patches, CRD safety overrides, or runtime modifications were used.
  • make lint, make verify, and the focused steps/catalog tests: passed on
    f4b4d0f. The Helm decoder regression test confirms stored bundle labels are
    preserved. make test-unit passed before the test-helper-only refinements.

The failing experimental paths stop before the bundle-update steps. Those
steps and the successful rev2/rev3 ownership assertions must also pass atop
the separate runtime fix before this test PR is merged.

Reviewer Checklist

  • API Go Documentation (no API changes)
  • Tests: Unit Tests (and E2E Tests, if appropriate; expected red migration paths documented above)
  • Comprehensive Commit Messages
  • Links to related GitHub Issue(s)

Follow one ClusterExtension through standard OLM installation, the OLM
upgrade, and a subsequent bundle update. Separate scenarios with shared
once-only installers previously updated a new extension created after
the upgrade and missed failures migrating the original extension.

Record live resource identities and assert the experimental CE to COD
to COS ownership handoff, migration revision, normal rollout revisions,
and current-generation status. Retain Helm-backed standard upgrade
coverage, refresh runtime feature gates, and reject stale leader leases.

Use small generated bundles and leave migration runtime changes for a
separate fix. The experimental upgrade cases should expose the existing
ownership conflict until that fix lands.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Nov 6, 2026
@openshift-ci

openshift-ci Bot commented Nov 6, 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 grokspawn 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

@netlify

netlify Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit f4b4d0f
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/6aed8b5df25898ada8040430
😎 Deploy Preview https://deploy-preview-3125--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.

@coderabbitai

coderabbitai Bot commented Nov 6, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@fgiudici fgiudici added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 6, 2026

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

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant