OLM is unable to generate new install plans

The Operator Lifecycle Manager (OLM) is unable to generate new installation plans for updates or new installations.

Symptom

OLM is leaving Subscription objects without an InstallPlanRef and InstallPlan resulting in any future updates of existing operators or installations of new operators being able to generate install plans.

Looking at the catalog-operator log, you see the following:

$ oc logs -n openshift-operator-lifecycle-manager <catalog-operator-pod> | grep "unable to get installplan from cache"

2022-02-16T18:02:32.250375793Z time="2022-02-16T18:02:32Z" level=warning msg="unable to get installplan from cache" channel=stable id=7HkBf installplan=install-lhmkp namespace=ibm-common-services pkg=cloud-native-postgresql source=ibm-operator-catalog sub=cloud-native-postgresql-stable-ibm-operator-catalog-openshift-marketplace

Resolution

To resolve this issue, you can either delete the Subscription or delete the metadata.annotations.olm.generated-by field.

Deleting the Subscription

The deletion of previous Subscription and CSV from the namespace of that operator which need to be upgraded fixes the missing InstallPlan generation:

$ oc get subs -n [namespace_name]
[...]
$ oc delete subs [subs_names_separated_by_spaces] -n namespace_name] --wait
subscription.operators.coreos.com "old-operator-subscription" deleted
$ oc get csv -n [namespace_name]
[...]
$ oc delete csv [cvs_names_separated_by_spaces] -n [namespace_name] --wait
clusterserviceversion.operators.coreos.com "old-operator.v2.4.2" deleted
$ oc describe subs/new-operator-subscription -n <namespace_name>

 Install Plan Generation:  1
  Install Plan Ref:
    API Version:       operators.coreos.com/v1alpha1
    Kind:              InstallPlan
    Name:              install-mxw59
    Namespace:         <namespace_name>
    Resource Version:  215607
    UID:               43162fc6-c91e-4394-a836-1399c7465a11
  Installplan:
    API Version:  operators.coreos.com/v1alpha1
    Kind:         InstallPlan
    Name:         install-mxw59
    Uuid:         43162fc6-c91e-4394-a836-1399c7465a11
  Last Updated:   2022-04-25T08:24:08Z
  State:          UpgradePending

Deleting the metadata.annotations.olm.generated-by field

Simply delete the metadata.annotations.olm.generated-by field:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  annotations:
    olm.generated-by: install-zs6p2 <----------------- this annotation
  name: >-
    ibm-common-service-operator-v4.2-opencloud-operators-v4-2-openshift-marketplace
  namespace: bawent