-
Bug
-
Resolution: Done
-
Major
-
None
-
2.1.0.GA
-
None
-
False
-
None
-
False
-
AMQ Streams S390x csv includes replaces statement references to non-existent s390x bundles
1) The catalog index is obtained using the following (run on s390x) and then a tool is used to look through the resulting index.db
#!/bin/bash
podman run -d --name catalog registry.redhat.io/redhat/redhat-operator-index:v4.9
podman cp catalog:/database/index.db .
podman stop catalog
podman rm catalog
dir index.db
2) The related s390x bundle sequence from the catalog looks like this
Operator Bundle
name version replaces skiprange ---- ------- -------- --------- amqstreams.v1.7.3 1.7.3 amqstreams.v1.7.2 amqstreams.v1.8.0 1.8.0 amqstreams.v1.7.3 amqstreams.v1.8.1 1.8.1 amqstreams.v1.8.0 amqstreams.v1.8.2 1.8.2 amqstreams.v1.8.1 amqstreams.v1.8.3 1.8.3 amqstreams.v1.8.2 amqstreams.v1.8.4 1.8.4 amqstreams.v1.8.3 amqstreams.v2.0.0-0 2.0.0-0 amqstreams.v1.8.4 >=1.8.0 <2.0.0-0 amqstreams.v2.0.1-0 2.0.1-0 amqstreams.v2.0.0-0 >=1.8.0 <2.0.1-0 <<< 2.0.1-0 then replaces 2.0.0-0 amqstreams.v2.0.1-1 2.0.1-1 amqstreams.v2.0.1-0 >=1.8.0 <2.0.1-1 amqstreams.v2.0.1-2 2.0.1-2 amqstreams.v2.0.1-1 >=1.8.0 <2.0.1-2 amqstreams.v2.0.1-3 2.0.1-3 amqstreams.v2.0.1-2 >=1.8.0 <2.0.1-3 amqstreams.v2.1.0-0 2.1.0-0 amqstreams.v2.0.1-0 >=2.0.0-0 <2.1.0-0 <<<<< This one replaces 2.0.1.0 amqstreams.v2.1.0-1 2.1.0-1 amqstreams.v2.1.0-0 >=2.0.0-0 <2.1.0-1 amqstreams.v2.1.0-2 2.1.0-2 amqstreams.v2.1.0-1 >=2.0.0-0 <2.1.0-2 amqstreams.v2.1.0-3 2.1.0-3 amqstreams.v2.1.0-2 >=2.0.0-0 <2.1.0-3 amqstreams.v2.1.0-4 2.1.0-4 amqstreams.v2.1.0-3 >=2.0.0-0 <2.1.0-4
3) In order to build a catalog it's required that all bundles referenced in replaces statements also be included in the catalog.
The bundle registry.redhat.io/amq7/amq-streams-operator-bundle:2.0.1-0 doesn't exist
(one error is that csv for 2.1.0-0 has a replaces statement and points to it)
Prior to 2.0.1-0 only had support for amd64 - for ex 1.8.4 which v2.0.0-0 says it replaces.
docker manifest inspect registry.redhat.io/amq7/amq-streams-operator-bundle:1.8.4 { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:ea3342beb9260e19a72df1e683a6dd87e6cd5e888f396d269e62d9c4ef2c814d", "platform": { "architecture": "amd64", "os": "linux" } } ] }
The bundle for 2.0.1-0 doesn't exist
The bundle for 2.0.1-1 only supports amd64, ppc
docker manifest inspect registry.redhat.io/amq7/amq-streams-operator-bundle:2.0.1-1 Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:01ce4d3f09f11c4e3eb5e1c34dc446a6072b599e2010486e05d4043423cf395f", "platform": { "architecture": "amd64", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:cdaa6e1b8fbba2512341484c40918bf33d2f03700e72231408bee20742df3849", "platform": { "architecture": "ppc64le", "os": "linux" } } ] }
This results in the following error trying to build the catalog.
NFO[0000] adding to the registry bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" INFO[0000] running /usr/bin/podman pull registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101 bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" INFO[0005] running podman create bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" INFO[0007] running podman cp bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" INFO[0008] running podman rm bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" INFO[0009] Could not find optional dependencies file file=bundle_tmp877854841/metadata load=annotations with=./bundle_tmp877854841 INFO[0009] Could not find optional properties file file=bundle_tmp877854841/metadata load=annotations with=./bundle_tmp877854841 INFO[0009] Could not find optional dependencies file file=bundle_tmp877854841/metadata load=annotations with=./bundle_tmp877854841 INFO[0009] Could not find optional properties file file=bundle_tmp877854841/metadata load=annotations with=./bundle_tmp877854841 ERRO[0009] permissive mode disabled bundles="[registry.redhat.io/amq7/amq-streams-operator-bundle@sha256:d7e9d2cd373abfa00060b40a7bf5c9f578b5ee5face126db25d93adc1b63f101]" error="Invalid bundle amqstreams.v2.1.0-0, replaces nonexistent bundle amqstreams.v2.0.1-0" Error: Invalid bundle amqstreams.v2.1.0-0, replaces nonexistent bundle amqstreams.v2.0.1-0 Usage: opm registry add [flags] Flags: -b, --bundle-images strings comma separated list of links to bundle image --ca-file string the root certificates to use when --container-tool=none; see docker/podman docs for certificate loading instructions -c, --container-tool string tool to interact with container images (save, build, etc.). One of: [none, docker, podman] (default "none") -d, --database string relative path to database file (default "bundles.db") --debug enable debug logging -h, --help help for add --mode string graph update mode that defines how channel graphs are updated. One of: [replaces, semver, semver-skippatch] (default "replaces") --permissive allow registry load errors Global Flags: --skip-tls skip TLS certificate verification for container image registries while pulling bundles or index Failed to add dependent operator bundle to BAAS OCP s390x catalog.
Basically, the first csv to support s390x should not have a replaces statement pointing to earlier csv versions which don't support s390x.