Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-78092

ClusterExtension deprecation conditions not cleared after upgrading from deprecated bundle to non-deprecated bundle

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • 4.22
    • OLM
    • None
    • False
    • Hide

      None

      Show
      None
    • None
    • Moderate
    • None
    • None
    • None
    • Rejected
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Description of problem:

        After upgrading a ClusterExtension from a deprecated bundle version (1.0.1) to a non-deprecated version (1.0.3), the deprecation-related conditions (Deprecated and BundleDeprecated) remain status: True with stale messages referencing the old deprecated version.    

      Version-Release number of selected component (if applicable):

          xzha@xzha1-mac tests-extension % 
      xzha@xzha1-mac tests-extension % oc get clusterversion
      NAME      VERSION                              AVAILABLE   PROGRESSING   SINCE   STATUS
      version   4.22.0-0.nightly-2026-03-09-103941   True        False         91m     Cluster version is 4.22.0-0.nightly-2026-03-09-103941

      How reproducible:

          always

      Steps to Reproduce:

      xzha@xzha1-mac OCP-73289 % cat catalog.yaml 
      apiVersion: olm.operatorframework.io/v1
      kind: ClusterCatalog
      metadata:
        name: catalog-73289
        labels:
          example.com/support: "true"
          test-cases: ocp-73289
      spec:
        priority: 1000
        source:
          type: Image
          image:
            ref: quay.io/olmqe/olmtest-operator-index:nginxolm73289
      
      
      xzha@xzha1-mac OCP-73289 % opm render quay.io/olmqe/olmtest-operator-index:nginxolm73289 -o json | jq 'select(.schema == "olm.deprecations" and .package == "nginx73289v1")'
      {
        "schema": "olm.deprecations",
        "package": "nginx73289v1",
        "entries": [
          {
            "reference": {
              "schema": "olm.bundle",
              "name": "nginx73289v1.v1.0.1"
            },
            "message": "nginx73289v1.v1.0.1 is deprecated. Uninstall and install v1.0.3 for support."
          }
        ]
      }
      
      
      
      1. Create a ClusterExtension with a deprecated bundle:
        apiVersion: olm.operatorframework.io/v1
        kind: ClusterExtension
        metadata:
          name: extension-73289
        spec:
          namespace: ns-73289
          serviceAccount:
            name: test-73289
          progressDeadlineMinutes: 10
          source:
            sourceType: Catalog
            catalog:
              packageName: nginx73289v1
              channel: candidate-v1.0
              version: "1.0.1"  # deprecated version
              upgradeConstraintPolicy: CatalogProvided
      
      
        2. Apply the ClusterExtension:
        oc apply -f extension.yaml
      
      
        3. Verify deprecation conditions are set:
        oc get clusterextension extension-73289 -o jsonpath='{.status.conditions[?(@.type=="Deprecated")]}'
      
      
        Result:
        {
          "type": "Deprecated",
          "status": "True",
          "reason": "Deprecated",
          "message": "nginx73289v1.v1.0.1 is deprecated. Uninstall and install v1.0.3 for support."
        }
      
      
        4. Upgrade to non-deprecated version:
        oc patch ClusterExtension extension-73289 -p '{"spec":{"source":{"catalog":{"version":"1.0.3"}}}}' --type=merge
      
      
        5. Verify the installed bundle is upgraded:
        oc get clusterextension extension-73289 -o jsonpath='{.status.install.bundle}'
      
      
        Result:
        {
          "name": "nginx73289v1.v1.0.3",
          "version": "1.0.3"
        }
      
      
        6. Check deprecation conditions again:
        oc get clusterextension extension-73289 -o jsonpath='{.status.conditions}' | jq '.[] | select(.type | test("Deprecated"))'     
      
       {
          "lastTransitionTime": "2026-03-10T02:23:18Z",
          "message": "nginx73289v1.v1.0.1 is deprecated. Uninstall and install v1.0.3 for support.",
          "observedGeneration": 2,
          "reason": "Deprecated",
          "status": "True",
          "type": "Deprecated"
        }
        {
          "lastTransitionTime": "2026-03-10T02:23:18Z",
          "message": "nginx73289v1.v1.0.1 is deprecated. Uninstall and install v1.0.3 for support.",
          "observedGeneration": 2,
          "reason": "Deprecated",
          "status": "True",
          "type": "BundleDeprecated"
        }

      Actual results:

        After upgrading to the non-deprecated version 1.0.3, the deprecation conditions remain unchanged  

      Expected results:

          After upgrading to a non-deprecated bundle, the deprecation conditions should be updated
      
      - lastTransitionTime: "2026-03-10T02:38:55Z"
          message: not deprecated
          observedGeneration: 1
          reason: NotDeprecated
          status: "False"
          type: Deprecated
      
       - lastTransitionTime: "2026-03-10T02:38:57Z"
          message: bundle not deprecated
          observedGeneration: 1
          reason: NotDeprecated
          status: "False"
          type: BundleDeprecated

      Additional info:

          

              rh-ee-cchantse Catherine Chan-Tse
              rhn-support-xzha Xia Zhao
              Jian Zhang Jian Zhang
              None
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: