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

[v2] manifest list catalog with 1 manifest fails due to invalid checksum digest format

XMLWordPrintable

    • Quality / Stability / Reliability
    • False
    • Hide

      None

      Show
      None
    • None
    • Low
    • None
    • None
    • None
    • CLID Sprint 274, CLID Sprint 275
    • 2
    • Done
    • Release Note Not Required
    • N/A
    • None
    • None
    • None
    • None

      This is a clone of issue OCPBUGS-55114. The following is the description of the original issue:

      Description of problem:

          When mirroring operators using oc-mirror v2 mirror-to-mirror flow, if the catalog is a manifest list that contains a single manifest, the following error is returned:
      [ERROR]  : [OperatorImageCollector] the digests seem to be incorrect for $catalog: invalid checksum digest format

      It appears to be caused by this line of code, which only checks for more than one manifest, not more than zero manifests. In cases where a manifest list is used but only one manifest is present, that if statement is ignored and the digest is taken from oci.Config, which is a zero value and therefore the digest is always invalid.

      Adding another architecture to the manifest list solves this issue even if that architecture is never used.

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

          Tried on two different versions:
      Client Version: version.Info{Major:"", Minor:"", GitVersion:"4.17.0-202503210032.p0.g39bedc7.assembly.stream.el9-39bedc7", GitCommit:"39bedc78d79bd13ea7271e5d4c72a12890b05631", GitTreeState:"clean", BuildDate:"2025-03-21T03:28:52Z", GoVersion:"go1.22.12 (Red Hat 1.22.12-1.el8_10) X:strictfipsruntime", Compiler:"gc", Platform:"linux/amd64"}
      
      Client Version: version.Info{Major:"", Minor:"", GitVersion:"4.18.0-202502100934.p0.gc00c7c9.assembly.stream.el9-c00c7c9", GitCommit:"c00c7c9f973ed593b639db63102101a4ab911033", GitTreeState:"clean", BuildDate:"2025-02-10T10:20:58Z", GoVersion:"go1.22.9 (Red Hat 1.22.9-1.module+el8.10.0+22500+aee717ef) X:strictfipsruntime", Compiler:"gc", Platform:"linux/amd64"}

      How reproducible:

          always

      Steps to Reproduce:

          1. Use oc-mirror v2 in the mirror-to-mirror flow with an operator catalog that is a manifest list with only one architecture. This can be achieved by generating a Dockerfile with opm and building it into a manifest list.
          2. Executing the mirroring always fails with the same error message (see description).
          3.
          

      Actual results:

          Mirroring fails immediately with an error (see description).

      Expected results:

          Mirroring completes successfully.

      Additional info:

          Command used to produce workdir:
      oc mirror --v2 -c /tmp/mirror-catalog-cdpj37sx/ImageSetConfiguration.yaml  --retry-times 3 --retry-delay 60s  --authfile /home/kni/combined-secret.json  --workspace file:///tmp/mirror-catalog-cdpj37sx  --log-level trace docker://registry.kni-qe-15.lab.eng.rdu2.redhat.com:5000
      
      ImageSetConfiguration.yaml is in attached google drive

      google drive with workdir

              rdossant Rafael Fonseca dos Santos
              rh-ee-klaskosk Kirsten Laskoski
              None
              None
              Nidan Gavali Nidan Gavali
              None
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: