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

OLMv1 crdUpgradeSafety fails due to unhandled OneOf changes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 4.20
    • OLM
    • Quality / Stability / Reliability
    • False
    • Hide

      None

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

      Description of problem:

      On 4.20.0-ec.5 (with TechPreviewNoUpgrade ), with OLMv1, testing an upgrade of Serverless Operator from 1.35.0 to 1.36.0, I am getting "v1beta1: ^.spec.ingress.istio.knative-local-gateway.servers: unhandled: unhandled changes found :"
      error for resolved bundle "serverless-operator.v1.36.0" with version "1.36.0": validating upgrade for CRD "knativeservings.operator.knative.dev": v1beta1: ^.spec.ingress.istio.knative-local-gateway.servers[*].tls: type: type changed : "object" -> ""
      v1beta1: ^.spec.ingress.istio.knative-local-gateway.servers[*].tls: required: new required fields: [httpsRedirect]
      v1beta1: ^.spec.ingress.istio.knative-local-gateway.servers: unhandled: unhandled changes found :
        &v1.JSONSchemaProps{
          ... // 21 identical fields
          MinProperties: nil,
          Required:      nil,
          Items: &v1.JSONSchemaPropsOrArray{
              Schema: &v1.JSONSchemaProps{
                  ... // 26 identical fields
                  AnyOf: nil,
                  Not:   nil,
                  Properties: map[string]v1.JSONSchemaProps{
                      "hosts": {Description: "One or more hosts exposed by this gateway.", Type: "array", Items: &{Schema: &{Type: "string", Format: "string"}}},
                      "port":  {Type: "object", Properties: {"name": {Description: "Label assigned to the port.", Type: "string", Format: "string"}, "number": {Description: "A valid non-negative integer port number.", Type: "integer"}, "protocol": {Description: "The protocol exposed on the port.", Type: "string", Format: "string"}, "target_port": {Description: "A valid non-negative integer target port number.", Type: "integer"}}},
                      "tls": {
                          ... // 23 identical fields
                          Items: nil,
                          AllOf: nil,
      -                   OneOf: nil,
      +                   OneOf: []v1.JSONSchemaProps{
      +                       {Required: []string{"mode", "credentialName"}},
      +                       {Required: []string{"httpsRedirect"}},
      +                   },
                          AnyOf: nil,
                          Not:   nil,
                          Properties: map[string]v1.JSONSchemaProps{
                              "credentialName": {Description: "TLS certificate name.", Type: "string", Format: "string"},
      +                       "httpsRedirect": {
      +                           Description: "If set to true, the load balancer will send a 301 redirect to HTTPS for all HTTP requests. Should be used only for HTTP listener"...,
      +                           Type:        "boolean",
      +                       },
                              "mode": {Description: "TLS mode can be SIMPLE, MUTUAL, ISTIO_MUTUAL.", Type: "string", Format: "string"},
                          },
                          AdditionalProperties: nil,
                          PatternProperties:    nil,
                          ... // 3 identical fields
                          ExternalDocs:           nil,
                          Example:                nil,
      -                   Nullable:               false,
      +                   Nullable:               true,
                          XPreserveUnknownFields: nil,
                          XEmbeddedResource:      false,
                          ... // 5 identical fields
                      },
                  },
                  AdditionalProperties: nil,
                  PatternProperties:    nil,
                  ... // 13 identical fields
              },
              JSONSchemas: nil,
          },
          AllOf: nil,
          OneOf: nil,
          ... // 18 identical fields
        }
      

       

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

         4.20.0-ec.5

      How reproducible:

          Always

      Steps to Reproduce:

          1. Create
      
      oc create -f - <<EOF
      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-serverless
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: serverless-operator-installer
        namespace: openshift-serverless
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: serverless-operator-installer-binding
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
      - kind: ServiceAccount
        name: serverless-operator-installer
        namespace: openshift-serverless
      ---
      apiVersion: olm.operatorframework.io/v1
      kind: ClusterExtension
      metadata:
        name: serverless-operator
      spec:
        namespace: openshift-serverless
        serviceAccount:
          name: serverless-operator-installer
        source:
          sourceType: Catalog
          catalog:
            packageName: serverless-operator
            version: 1.35.0
      EOF
      
      
          2. Wait until the installation succeedes
          3. oc edit ClusterExtension serverless-operator  # remove the version: 1.35.0 to upgrade to a current 1.36.0

      Actual results:

          Fails with the 'error for resolved bundle "serverless-operator.v1.36.0" with version "1.36.0": validating upgrade for CRD' errors

      Expected results:

          Succeedes

      Additional info:

          (note, currently Serverless Operator 1.35.0 and 1.36.0 are present in 4.19 catalog, but not in 4.20)

              rh-ee-cchantse Catherine Chan-Tse
              maschmid@redhat.com Marek Schmidt
              None
              None
              Xia Zhao Xia Zhao
              None
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: