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

Bug 1726453

Summary: Ingress operator does not have a level gate
Product: OpenShift Container Platform Reporter: Justin Pierce <jupierce>
Component: NetworkingAssignee: Dan Mace <dmace>
Networking sub component: router QA Contact: Hongan Li <hongli>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: urgent CC: aos-bugs, mifiedle
Version: 4.1.z   
Target Milestone: ---   
Target Release: 4.2.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: 2019-10-16 06:33:03 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 Justin Pierce 2019-07-02 21:29:43 UTC
Description of problem:
The ingress clusteroperator does not set a level gate which allows the CVO to incorrectly believe it has been upgraded even if it fails to. 

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

Steps to Reproduce:
1. oc adm release extract --to=/tmp/folder quay.io/openshift-release-dev/ocp-release:4.1.4
2. edit 0000_50_cluster-ingress-operator_03-cluster-operator.yaml and notice it does not have the level gate present in, for example, 0000_50_cluster-monitoring-operator_05-clusteroperator.yaml

status:
  versions:
  - name: operator
    version: "4.1.4"


Actual results:
Without this level gate, the CVO can pass by the operator during the upgrade even if the operator fails to upgrade. 

Additional info:
Urgency at request of ccoleman. release info should include:
status:
  versions:
  - name: operator
    version: "0.0.1-snapshot"

Comment 1 Dan Mace 2019-07-24 21:08:21 UTC
Here's abbreviated output from my cluster:

$  oc get clusteroperator ingress -o yaml
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
  name: ingress
spec: {}
status:
  versions:
  - name: operator
    version: 4.2.0-0.ci-2019-07-24-105737
  - name: ingress-controller
    version: registry.svc.ci.openshift.org/ocp/4.2-2019-07-24-105737@sha256:fa21c0544c23edbcf94f69e829e40885745f1174278e26c220c706564355cc48

So it's not clear to me what the problem is. Is this request to add a dummy value to the status field of our clusteroperator manifest[1]? If so, can you help me understand what purpose that dummy value serves? Maybe I'm misunderstanding the requirement.

[1] https://github.com/openshift/cluster-monitoring-operator/blob/master/manifests/0000_50_cluster_monitoring_operator_05-clusteroperator.yaml

Comment 2 Dan Mace 2019-07-25 13:39:55 UTC
(In reply to Dan Mace from comment #1)
> Here's abbreviated output from my cluster:
> 
> $  oc get clusteroperator ingress -o yaml
> apiVersion: config.openshift.io/v1
> kind: ClusterOperator
> metadata:
>   name: ingress
> spec: {}
> status:
>   versions:
>   - name: operator
>     version: 4.2.0-0.ci-2019-07-24-105737
>   - name: ingress-controller
>     version:
> registry.svc.ci.openshift.org/ocp/4.2-2019-07-24-105737@sha256:
> fa21c0544c23edbcf94f69e829e40885745f1174278e26c220c706564355cc48
> 
> So it's not clear to me what the problem is. Is this request to add a dummy
> value to the status field of our clusteroperator manifest[1]? If so, can you
> help me understand what purpose that dummy value serves? Maybe I'm
> misunderstanding the requirement.
> 
> [1]
> https://github.com/openshift/cluster-monitoring-operator/blob/master/
> manifests/0000_50_cluster_monitoring_operator_05-clusteroperator.yaml

My new understanding is that CVO learns the operator's version keys by reading the keys declared in the clusteroperator manifest.

Comment 4 Hongan Li 2019-07-29 00:43:01 UTC
Verified with 4.2.0-0.nightly-2019-07-28-222114 the issue has been fixed.

# oc adm release extract --to=/tmp/2114 "registry.svc.ci.openshift.org/ocp/release:4.2.0-0.nightly-2019-07-28-222114"

# cat 0000_50_cluster-ingress-operator_03-cluster-operator.yaml 
# This resource is not created by CVO, it is only used as a communication
# mechanism to tell the CVO which ClusterOperator resource to wait for.
# IngressController creates and updates this resource.
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
  name: ingress
status:
  versions:
    - name: operator
      version: "4.2.0-0.nightly-2019-07-28-222114"

Comment 6 errata-xmlrpc 2019-10-16 06:33:03 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, 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-2019:2922