Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 2008356

Summary: osus operator upgrade failed due to no replace/skipRange info specified in v4.9.0 csv
Product: OpenShift Container Platform Reporter: liujia <jiajliu>
Component: OpenShift Update ServiceAssignee: Lalatendu Mohanty <lmohanty>
OpenShift Update Service sub component: operator QA Contact: liujia <jiajliu>
Status: CLOSED ERRATA Docs Contact: Kathryn Alexander <kalexand>
Severity: high    
Priority: high CC: lmohanty, pruan
Version: 4.9   
Target Milestone: ---   
Target Release: 4.9.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-10-15 16:20:30 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description liujia 2021-09-28 04:01:06 UTC
Description of problem (please be detailed as possible and provide log
snippests):
Upgrading osus operator from v4.6.0 to v4.9.0 failed. After changing the source of subscription, no upgrade happen as expected. Checking v4.9.0 csv to find that there is not upgrade related info in v4.9.0 csv which can be used for path detect.

# cat manifests/update-service-operator.clusterserviceversion.yaml|grep -E "replace|skip"|wc -l
0

# yaml2json manifests/update-service-operator.clusterserviceversion.yaml|jq .metadata
{
  "annotations": {
    "alm-examples": "[\n  {\n    \"apiVersion\": \"updateservice.operator.openshift.io/v1\",\n    \"kind\": \"UpdateService\",\n    \"metadata\": {\n      \"name\": \"sample\"\n    },\n    \"spec\": {\n      \"replicas\": 1\n    }\n  }\n]",
    "capabilities": "Basic Install",
    "description": "Creates and maintains an OpenShift Update Service instance",
    "operatorframework.io/suggested-namespace": "openshift-update-service",
    "operators.operatorframework.io/builder": "operator-sdk-v1.9.0+git",
    "operators.operatorframework.io/project_layout": "go.kubebuilder.io/v3"
  },
  "name": "update-service-operator.v4.9.0",
  "namespace": "placeholder"
}

Before triggering upgrade:
# ./oc get sub cincinnati-operator -n openshift-update-service -ojson|jq .spec
{
  "channel": "v1",
  "installPlanApproval": "Manual",
  "name": "cincinnati-operator",
  "source": "redhat-operators",
  "sourceNamespace": "openshift-marketplace",
  "startingCSV": "update-service-operator.v4.6.0"
}
# ./oc get sub cincinnati-operator -n openshift-update-service -ojson|jq .status.installedCSV
"update-service-operator.v4.6.0"
# ./oc get sub cincinnati-operator -n openshift-update-service -ojson|jq .status.currentCSV
"update-service-operator.v4.6.0"
# ./oc get ip
NAME            CSV                              APPROVAL   APPROVED
install-dx8f2   update-service-operator.v4.6.0   Manual     true
# ./oc get csv
NAME                             DISPLAY                    VERSION   REPLACES   PHASE
update-service-operator.v4.6.0   OpenShift Update Service   4.6.0                Succeeded

After changing the source of subsription:
# ./oc get sub cincinnati-operator -n openshift-update-service -ojson|jq .spec
{
  "channel": "v1",
  "installPlanApproval": "Manual",
  "name": "cincinnati-operator",
  "source": "qe-app-registry",
  "sourceNamespace": "openshift-marketplace",
  "startingCSV": "update-service-operator.v4.6.0"
}
# ./oc get sub -n openshift-update-service
NAME                  PACKAGE               SOURCE            CHANNEL
cincinnati-operator   cincinnati-operator   qe-app-registry   v1

# ./oc get csv -n openshift-update-service
NAME                             DISPLAY                    VERSION   REPLACES   PHASE
update-service-operator.v4.6.0   OpenShift Update Service   4.6.0                Succeeded

# ./oc get ip -n openshift-update-service
NAME            CSV                              APPROVAL   APPROVED
install-dx8f2   update-service-operator.v4.6.0   Manual     true

Confirmed with OLM qe that we should have replace/skipRange info defined in v4.9.0 csv so that OLM can detect the upgrade path from it.


Version of all relevant components (if applicable):
cincinnati-operator-bundle-container-v4.9.0-1
# ./oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.8.13    True        False         27h     Cluster version is 4.8.13

Does this issue impact your ability to continue to work with the product
(please explain in detail what is the user impact)?
No upgrade test can be done now.

Is there any workaround available to the best of your knowledge?


Rate from 1 - 5 the complexity of the scenario you performed that caused this
bug (1 - very simple, 5 - very complex)?


Can this issue reproducible?
always

Can this issue reproduce from the UI?


If this is a regression, please provide more details to justify this:
no

Steps to Reproduce:
1. Add latest bundle image v4.9.0 to qe pre-release test index image(quay.io/openshift-qe-optional-operators/ocp4-index:latest)
2. Install osus 4.6.0(from default redhat-operators source) on ocp v4.8
3. Edit subscription to change the `source` to qe-app-registry source(this is a catalogsource which pointed to qe pre-release index image)


Actual results:
No upgrade happen.

Expected results:
The osus operator upgrade should work.

Additional info:
https://docs.openshift.com/container-platform/4.8/operators/understanding/olm/olm-workflow.html

Comment 1 Lalatendu Mohanty 2021-09-28 15:44:31 UTC
Setting blocker - as this is not a blocker for OCP release

Comment 2 Lalatendu Mohanty 2021-09-28 18:37:17 UTC
Documentation for how to fix this available at https://olm.operatorframework.io/docs/concepts/olm-architecture/operator-catalog/creating-an-update-graph/

Comment 6 Lalatendu Mohanty 2021-09-30 18:16:39 UTC
With latest build I am using 

skips:
  - update-service-operator.v4.6.0

Comment 7 Peter Ruan 2021-10-05 03:26:44 UTC
verified with 4.8, install 4.6 version of the operator, update the source: to use qe-app-registry, upgrade initiated for 4.9 version of the operator.

Comment 8 liujia 2021-10-08 03:47:24 UTC
Thanks Perter to verify the bug during my holiday.

Just have a double check, it works now.
# ./oc get csv
NAME                             DISPLAY                    VERSION   REPLACES                         PHASE
update-service-operator.v4.9.0   OpenShift Update Service   4.9.0     update-service-operator.v4.6.0   Succeeded

# ./oc get csv update-service-operator.v4.9.0 -oyaml|grep -A3 replaces
  replaces: update-service-operator.v4.6.0
  skips:
  - update-service-operator.v4.6.0
  version: 4.9.0

Comment 10 errata-xmlrpc 2021-10-15 16:20:30 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (RHEA: OSUS enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:3735