An OperandRequest instance has no status

An OperandRequest instance is deployed by a service, but it contains no status.

Environment

This issue might occur in any IBM Cloud PakĀ® product that uses one of the following IBM Cloud PakĀ® foundational services versions for the following release types:

  • Continuous Delivery (CD) IBM Cloud Pak foundational services version 4.x
  • Support Cycle-2 version 4.6.

For more information about release types, see Release types for IBM Cloud Pak foundational services .

Symptom

An OperandRequest instance is deployed in the service namespace, but no phase, such as pending or running, is present. Also, the status in the OperandRequest instance is empty.

Cause

The Operator Lifecycle Manager (OLM) operator can't add the operators.coreos.com/<packageName>.<namespace>: "" label to the Operand Deployment Lifecycle Manager (ODLM) ClusterServiceVersion (CSV). Because network security services (NSS) can't modify the ODLM CSV, ODLM can't manage its resource in the service namespace.

Diagnostic steps

Complete these steps to check if this issue occurs in your instance.

  1. Run the following command to check if the status of an OperandRequest instance is empty. Replace the <serviceNamespace> value with your service namespace.

    $ oc get operandreqeuest -n <serviceNamespace>
    
  2. Run the following command to check the WatchNamespace environment variable of the operator. Replace the <operatorNamespace> value with your operator namespace.

    $ oc get deployment operand-deployment-lifecycle-manager -n <operatorNamespace> --no-headers -o jsonpath='{.spec.template.spec.containers[0].env[?(@.name == "WATCH_NAMESPACE")]}'
    

    If the command returns the following text, proceed to the next step. Otherwise, this issue doesn't apply to your instance.

    {"name":"WATCH_NAMESPACE","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"metadata.annotations['olm.targetNamespaces']"}}}`
    
  3. Check the label in the Operand-Deployment-Lifecycle-Manager CSV. Replace the <ODLM csvName> value with your ODLM CSV name, and replace the <operatorNamespace> value with your operator namespace.

    oc get ClusterServiceVersion <ODLM csvName> -n <operatorNamespace> --no-headers -o jsonpath='{.metadata.labels}'
    

    Check if the "operators.coreos.com/ibm-odlm.<operatorNamespace>":"" label exists in the label.

Workaround

  1. Add the "operators.coreos.com/ibm-odlm.<operatorNamespace>":"" label to the Operand-Deployment-Lifecycle-Manager CSV. Replace the <operatorNamespace> value with your operator namespace.
  2. Delete the ibm-namespace-scope-operator pod to trigger a new reconciliation.
  3. Check to confirm that the status of the OperandRequest instance appears.