Skip to content

OCPBUGS-77283: bump kubevirt fedora containerDisk to multi-arch v1.8.2 + permanent exception#31284

Open
qinqon wants to merge 1 commit into
openshift:mainfrom
qinqon:ocpbugs-77283-kubevirt-fedora-permanent-exception
Open

OCPBUGS-77283: bump kubevirt fedora containerDisk to multi-arch v1.8.2 + permanent exception#31284
qinqon wants to merge 1 commit into
openshift:mainfrom
qinqon:ocpbugs-77283-kubevirt-fedora-permanent-exception

Conversation

@qinqon

@qinqon qinqon commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

What

Two related changes for the KubeVirt Fedora fedora-with-test-tooling-container-disk image used by the VM live-migration networking tests (test/extended/networking/livemigration.go):

  1. Bump the mirrored tag from the single-arch 20241024_891122a6fc to v1.8.2, which upstream publishes as an OCI index covering amd64/arm64/s390x. Updates the mirror allowlist key, the test reference, and the generated zz_generated.txt mapping.
  2. Record a permanent multi-arch manifest-list exception in test/extended/util/image/README.md.

Why

Even at v1.8.2 the upstream image has no ppc64le variant, because KubeVirt does not currently support the ppc64le architecture (support was removed in kubevirt/kubevirt#14976). Bumping to the multi-arch v1.8.2 index closes the gap for the supported arches, while the documented --allow-missing-architectures exception (already present in the verify-image-manifest-lists presubmit in openshift/release) covers the still-missing ppc64le.

Restoring ppc64le is tracked upstream by KubeVirt VEP-258 (kubevirt/enhancements#258). This exception should be revisited once that lands.

Important

An image-mirror owner must mirror quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 into quay.io/openshift/community-e2e-images before this merges, otherwise the live-migration tests will hit ImagePullBackOff.

Ref

Summary by CodeRabbit

  • Documentation
    • Clarified architecture support for a container image and added a permanent-exception note with link to upstream tracking for future review.
  • Tests
    • Updated test infrastructure to use the newer tagged KubeVirt Fedora container image (v1.8.2).

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@qinqon: This pull request references Jira Issue OCPBUGS-77283, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

What

Records a permanent multi-architecture manifest-list exception for the KubeVirt Fedora fedora-with-test-tooling-container-disk image in test/extended/util/image/README.md.

Why

This containerDisk is used by the VM live-migration networking tests (test/extended/networking/livemigration.go). The upstream image (quay.io/kubevirt/fedora-with-test-tooling-container-disk) ships a manifest list for amd64, arm64 and s390x only — it has no ppc64le variant, because KubeVirt does not currently support the ppc64le architecture (support was removed in kubevirt/kubevirt#14976).

A --allow-missing-architectures exception already exists in the verify-image-manifest-lists presubmit in openshift/release; this PR documents it as permanent with justification, following the process in this README.

Restoring ppc64le is tracked upstream by KubeVirt VEP-258 (kubevirt/enhancements#258). This exception should be revisited once that lands.

Ref

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci Bot requested review from bertinatto and ingvagabund June 11, 2026 08:46
@openshift-ci openshift-ci Bot added the e2e-images-update Related to images used by e2e tests label Jun 11, 2026
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Walkthrough

Bump the quay.io/kubevirt/fedora-with-test-tooling-container-disk tag to v1.8.2 in tests/allowlist and VM template, and add a permanent exception in the image README noting the image is multi-arch for amd64, arm64, and s390x but excludes ppc64le.

Changes

KubeVirt Fedora image updates

Layer / File(s) Summary
Bump image tag in tests and allowlist
test/extended/util/image/image.go, test/extended/networking/livemigration.go
Replace the quay.io/kubevirt/fedora-with-test-tooling-container-disk tag with v1.8.2 in the allowedImages map and the VM creation template.
Add permanent exception to image README
test/extended/util/image/README.md
Add a permanent exceptions entry documenting that e2e-quay-io-kubevirt-fedora-with-test-tooling-container-disk provides manifests for amd64, arm64, and s390x but not ppc64le, with upstream tracking reference.

🎯 2 (Simple) | ⏱️ ~10 minutes


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Ote Binary Stdout Contract ❌ Error The new file test/extended/util/image/image.go contains fmt.Printf() calls to stdout (lines 82, 101) in getImages() function, which is called during test initialization (via LocationFor in Describe... Replace fmt.Printf() calls with klog.SetOutput(os.Stderr) or direct writes to os.Stderr to prevent stdout corruption in OTE binary JSON output.
✅ Passed checks (14 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR changes only documentation and image references in test bodies/config, not test names. All existing Ginkgo test declarations (Describe, It, Context) remain static with no dynamic content.
Test Structure And Quality ✅ Passed PR makes minimal image reference updates (+1/-1 lines per file) and documentation changes. No new Ginkgo test code is added, making the test structure check not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to: documentation update in README.md, image tag update in existing test livemigration.go, and allowlist update in image.go utility...
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; PR only updates image version references and documentation in existing tests and utility files.
Topology-Aware Scheduling Compatibility ✅ Passed PR contains only test code and test documentation changes (image references and exception documentation); no deployment manifests, operators, controllers, or scheduling constraints are introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to: documentation updates, image tag version bumps, and allowlist configuration updates to existing tests.
No-Weak-Crypto ✅ Passed PR contains only image version updates and documentation additions. No weak crypto algorithms, custom crypto implementations, or non-constant-time secret comparisons are introduced or modified.
Container-Privileges ✅ Passed PR contains no container manifests or privilege configurations. Changes are image reference updates (tag bumps) and documentation of existing image exception; no privileged, hostPID, hostNetwork, h...
No-Sensitive-Data-In-Logs ✅ Passed PR contains only generic debug messages ("initialization" status) and HTTP test responses. No passwords, tokens, API keys, PII, session IDs, hostnames, or customer data exposed in logs.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: bumping the kubevirt fedora containerDisk image to v1.8.2 and documenting a permanent multi-arch manifest exception.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label Jun 11, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@qinqon qinqon changed the title OCPBUGS-77283: document permanent multi-arch exception for kubevirt fedora containerDisk OCPBUGS-77283: bump kubevirt fedora containerDisk to multi-arch v1.8.2 + permanent exception Jun 11, 2026
@openshift-ci

openshift-ci Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: qinqon
Once this PR has been reviewed and has the lgtm label, please assign bertinatto for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@qinqon qinqon force-pushed the ocpbugs-77283-kubevirt-fedora-permanent-exception branch from 2fb26fc to c1aef31 Compare June 11, 2026 09:09
…xception

The kubevirt fedora-with-test-tooling containerDisk used by the VM
live-migration networking tests was mirrored from a single-arch (amd64)
tag (20241024_891122a6fc). Bump it to v1.8.2, which upstream publishes
as an OCI index covering amd64/arm64/s390x, so we mirror a genuine
multi-arch image. Updates the mirror allowlist key, the livemigration
test reference, and the generated upstream->quay mapping.

The image still has no ppc64le variant, because KubeVirt dropped ppc64le
support (kubevirt/kubevirt#14976). Record the existing
--allow-missing-architectures exception (verify-image-manifest-lists
presubmit in openshift/release) as a permanent exception with
justification in the README. It should be revisited once KubeVirt
VEP-258 (kubevirt/enhancements#258) restores ppc64le support.

Assisted-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Enrique Llorente <ellorent@redhat.com>
@qinqon qinqon force-pushed the ocpbugs-77283-kubevirt-fedora-permanent-exception branch from c1aef31 to 9489957 Compare June 11, 2026 09:10

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/extended/util/image/image.go`:
- Line 63: The listed image tag
"quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2" in
test/extended/util/image/image.go is single-arch (amd64) and must be replaced
with a multi-arch manifest-list tag (or the tests/docs updated to declare an
exception); update the map entry to point to a tag that provides a manifest list
for amd64/arm64/s390x (excluding ppc64le) and also ensure the mirrored
"quay.io/openshift/community-e2e-images" entry matches the same multi-arch set
so the image resolution and architecture checks in this test file succeed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: c6f8d8ee-a8f7-45fc-bd3e-1479708d49d1

📥 Commits

Reviewing files that changed from the base of the PR and between 967122a and 2fb26fc.

⛔ Files ignored due to path filters (1)
  • test/extended/util/image/zz_generated.txt is excluded by !**/zz_generated*
📒 Files selected for processing (2)
  • test/extended/networking/livemigration.go
  • test/extended/util/image/image.go


// used by KubeVirt test to start fedora VMs
"quay.io/kubevirt/fedora-with-test-tooling-container-disk:20241024_891122a6fc": -1,
"quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2": -1,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify the KubeVirt Fedora v1.8.2 tag exists and list its architectures

# Check if the tag exists and list supported architectures
skopeo inspect --raw docker://quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 | jq -r '.manifests[]? | select(.platform) | "\(.platform.os)/\(.platform.architecture)"' | sort -u

# If the above returns nothing, it might be a single-arch image (which would be unexpected)
# In that case, check if it's a valid image at all
skopeo inspect docker://quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 > /dev/null 2>&1 && echo "Image exists" || echo "Image not found"

Repository: openshift/origin

Length of output: 139


🌐 Web query:

quay.io api v2 manifest list endpoint /v2/{namespace}/{repo}/manifests/{tag} bearer token WWW-Authenticate

💡 Result:

The quay.io container registry adheres to the Docker Registry HTTP API V2 specification [1][2]. The manifest endpoint used to fetch or manipulate image manifests (including manifest lists) is /v2/{namespace}/{repo}/manifests/{tag} [2][3]. Authentication via Bearer Token When making an unauthenticated request to a protected v2 endpoint, the registry will return a 401 Unauthorized status code along with a WWW-Authenticate header [1][4][5]. This header provides the necessary information for the client to authenticate, typically formatted as follows [2][4][5]: WWW-Authenticate: Bearer realm="{auth-url}",service="{service-name}" To obtain a token: 1. Extract the realm and service from the WWW-Authenticate header [4][5]. 2. Perform a GET request to the specified realm (e.g., https://quay.io/v2/auth) with the service, scope (e.g., repository:{namespace}/{repo}:pull), and any required credentials [6][4]. 3. The response will contain a JSON object with a token field [6][4]. 4. Use this token in subsequent API requests by including an Authorization header: Authorization: Bearer {token} [6][7][2]. Manifest List Details A manifest list (or "fat manifest") allows a single tag to point to multiple image manifests across different platforms [8][9]. Clients distinguish manifest lists from standard image manifests by checking the Content-Type header in the response, which for manifest lists should be application/vnd.docker.distribution.manifest.list.v2+json [8][9]. To ensure the registry returns the correct manifest format, clients should include an Accept header in their request indicating support for the desired manifest content types [7][2].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

IMG="quay.io/kubevirt/fedora-with-test-tooling-container-disk"
TAG="v1.8.2"

echo "== Tool availability =="
command -v curl >/dev/null && echo "curl: yes" || echo "curl: no"
command -v jq >/dev/null && echo "jq: yes" || echo "jq: no"
command -v skopeo >/dev/null && echo "skopeo: yes" || echo "skopeo: no"
command -v docker >/dev/null && echo "docker: yes" || echo "docker: no"

echo "== Query Quay manifest list via registry API =="
# Try manifest list accept header
MANIFEST_URL="https://quay.io/v2/kubevirt/fedora-with-test-tooling-container-disk/manifests/${TAG}"

# Get auth challenge (if any)
HDR="$(curl -sSI \
  -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json' \
  "$MANIFEST_URL" | tr -d '\r')"

echo "$HDR" | sed -n '1,30p'

AUTH_WWW="$(echo "$HDR" | awk -F': ' '/^WWW-Authenticate: /{sub(/^WWW-Authenticate: /,""); print}')"

if [[ -n "${AUTH_WWW:-}" ]]; then
  echo "== Bearer auth challenge detected =="
  echo "WWW-Authenticate: $AUTH_WWW"

  # Parse realm and service and scope
  REALM="$(echo "$AUTH_WWW" | sed -n 's/.*realm="\([^"]*\)".*/\1/p')"
  SERVICE="$(echo "$AUTH_WWW" | sed -n 's/.*service="\([^"]*\)".*/\1/p')"
  # scope usually like: repository:kubevirt/fedora-with-test-tooling-container-disk:pull
  SCOPE="$(echo "$AUTH_WWW" | sed -n 's/.*scope="\([^"]*\)".*/\1/p')"

  if [[ -z "${REALM:-}" || -z "${SERVICE:-}" ]]; then
    echo "Failed to parse realm/service from WWW-Authenticate; cannot proceed."
    exit 2
  fi

  TOKEN_URL="${REALM}?service=${SERVICE}"
  if [[ -n "${SCOPE:-}" ]]; then
    TOKEN_URL="${TOKEN_URL}&scope=${SCOPE}"
  fi

  echo "Token URL: $TOKEN_URL"
  TOKEN="$(curl -sSL "$TOKEN_URL" | python3 - <<'PY'
import sys, json
data=sys.stdin.read()
j=json.loads(data)
print(j.get("token",""))
PY
)"
  if [[ -z "$TOKEN" ]]; then
    echo "Failed to obtain token from Quay."
    exit 3
  fi

  echo "Got token (length): ${`#TOKEN`}"
  RESP="$(curl -sSL \
    -H "Authorization: Bearer $TOKEN" \
    -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json' \
    "$MANIFEST_URL")"
else
  echo "== No auth challenge; fetching manifest directly =="
  RESP="$(curl -sSL \
    -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json' \
    "$MANIFEST_URL")"
fi

echo "== Manifest fetch ok; parsing platforms =="
python3 - <<'PY'
import json,sys
resp=json.loads(sys.stdin.read())
# manifest list v2 schema has "manifests"
manifests = resp.get("manifests") or []
if not manifests:
    # if it's single manifest, treat as one platform if present
    plat = resp.get("platform") or {}
    arch = (plat.get("architecture") or "")
    os_ = (plat.get("os") or "")
    if arch and os_:
        print(f"{os_}/{arch}")
    else:
        print("NO_MANIFEST_LIST_OR_PLATFORMS")
    sys.exit(0)

plats=set()
for m in manifests:
    p=m.get("platform") or {}
    os_=p.get("os")
    arch=p.get("architecture")
    if os_ and arch:
        plats.add(f"{os_}/{arch}")
for x in sorted(plats):
    print(x)
PY <<< "$RESP"

Repository: openshift/origin

Length of output: 794


🏁 Script executed:

#!/bin/bash
set -euo pipefail

IMG="kubevirt/fedora-with-test-tooling-container-disk"
TAG="v1.8.2"
URL="https://quay.io/v2/${IMG}/manifests/${TAG}"

echo "== HEAD/GET with manifest-list Accept =="
resp_headers_and_body="$(mktemp)"
# Fetch body and capture status+content-type
body="$(curl -sS -D "$resp_headers_and_body" \
  -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.v1+json' \
  "$URL")"

status="$(awk 'NR==1{print $2}' "$resp_headers_and_body")"
ctype="$(awk 'tolower($1)=="content-type:"{print $2}' "$resp_headers_and_body" | head -n1)"
echo "HTTP status: $status"
echo "Content-Type: $ctype"

echo "== Top-level keys =="
python3 - <<'PY' "$body"
import json,sys
data=json.loads(sys.argv[1])
print("keys:", sorted(list(data.keys())))
PY "$(printf '%s' "$body")" || true

echo "== Does it contain manifests[]? =="
echo "$body" | jq -r 'if (.manifests? | type)=="array" then "manifests_count="+((.manifests|length|tostring)) else "no_manifests_array" end'

echo "== Extract platforms if manifests[] exists =="
echo "$body" | jq -r '
  if (.manifests? | type)=="array" then
    [.manifests[]
     | select(.platform != null)
     | "\(.platform.os)/\(.platform.architecture)"]
    | unique | sort | .[]
  else
    empty
  end'

echo "== If single manifest: try extract architecture from config (best-effort) =="
# For schema v2/v1, may have .architecture/.config/os/.config/architecture depending on schema.
echo "$body" | jq -r '
  (
    if .architecture? and .os? then "\(.os)/\(.architecture)" else empty end
  ),
  (
    if .config? and (.config.platform?) then "\(.config.platform.os)/\(.config.platform.architecture)" else empty end
  ),
  (
    if .config? and .config.os? and .config.architecture? then "\(.config.os)/\(.config.architecture)" else empty end
  )
' | head -n20

Repository: openshift/origin

Length of output: 461


🏁 Script executed:

#!/bin/bash
set -euo pipefail

IMG="kubevirt/fedora-with-test-tooling-container-disk"
TAG="v1.8.2"
URL="https://quay.io/v2/${IMG}/manifests/${TAG}"

tmpdir="$(mktemp -d)"
hdr="$tmpdir/headers.txt"
body="$tmpdir/body.json"

curl -sS -D "$hdr" -o "$body" \
  -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.v1+json' \
  "$URL" >/dev/null

status="$(awk 'NR==1{print $2}' "$hdr" | head -n1)"
ctype="$(awk -F': ' 'tolower($1)=="content-type"{print $2}' "$hdr" | head -n1 | tr -d '\r')"

echo "HTTP status: $status"
echo "Content-Type: $ctype"
echo "Body size: $(wc -c < "$body") bytes"

echo "== jq: top-level keys =="
jq -r 'keys|sort|join(", ")' < "$body" | head -c 5000
echo

echo "== jq: manifests array type and count (if any) =="
jq -r '(.manifests? | type) as $t | if $t=="array" then "manifests_type=array\nmanifests_count="+( (.manifests|length|tostring) ) else "manifests_type="+$t end' < "$body"

echo "== jq: platforms from manifests[] (if any) =="
jq -r '
  if (.manifests? | type)=="array" then
    [.manifests[]
     | select(.platform? != null)
     | "\(.platform.os)/\(.platform.architecture)"]
    | unique | sort | .[]
  else empty end
' < "$body"

echo "== jq: schema v1 architecture/os (best-effort) =="
jq -r '
  if (.os? != null and .architecture? != null) then "\(.os)/\(.architecture)" else empty end
' < "$body"

echo "== jq: any .platform fields present (best-effort) =="
jq -r '
  .. | objects | .platform? // empty
' < "$body" 2>/dev/null | head -n 50

rm -rf "$tmpdir"

Repository: openshift/origin

Length of output: 468


🏁 Script executed:

#!/bin/bash
set -euo pipefail

IMG="kubevirt/fedora-with-test-tooling-container-disk"
TAG="v1.8.2"
URL="https://quay.io/v2/${IMG}/manifests/${TAG}"

tmpdir="$(mktemp -d)"
hdr="$tmpdir/headers.txt"
body="$tmpdir/body.json"

curl -sS -D "$hdr" -o "$body" \
  -H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.v1+json' \
  "$URL" >/dev/null

echo "== Content-Type =="
awk -F': ' 'tolower($1)=="content-type"{print $2}' "$hdr" | head -n1 | tr -d '\r'
echo

echo "== Manifest fields =="
jq -r '"schemaVersion=" + (.schemaVersion|tostring) +
       "\narchitecture=" + (.architecture // "null") +
       "\nname=" + (.name // "null") +
       "\ntag=" + (.tag // "null") +
       "\nfsLayers_count=" + ((.fsLayers|length)|tostring)' < "$body"

echo
echo "== architecture from schema v1 (raw) =="
jq -r '.architecture // empty' < "$body"

rm -rf "$tmpdir"

Repository: openshift/origin

Length of output: 319


Quay v1.8.2 is single-arch (amd64) — expected multi-arch manifest list not provided

In test/extended/util/image/image.go (line 63), quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 resolves to a schema v1 single image manifest (architecture=amd64, no manifests[] list), so it does not provide a manifest list for amd64/arm64/s390x with ppc64le excluded as required. Update to a tag that publishes the expected multi-arch manifest list (or adjust the documented exception/tests accordingly); also ensure the mirrored quay.io/openshift/community-e2e-images image matches the intended architectures.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/extended/util/image/image.go` at line 63, The listed image tag
"quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2" in
test/extended/util/image/image.go is single-arch (amd64) and must be replaced
with a multi-arch manifest-list tag (or the tests/docs updated to declare an
exception); update the map entry to point to a tag that provides a manifest list
for amd64/arm64/s390x (excluding ppc64le) and also ensure the mirrored
"quay.io/openshift/community-e2e-images" entry matches the same multi-arch set
so the image resolution and architecture checks in this test file succeed.

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@qinqon: This pull request references Jira Issue OCPBUGS-77283, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @zhaozhanqi

Details

In response to this:

What

Two related changes for the KubeVirt Fedora fedora-with-test-tooling-container-disk image used by the VM live-migration networking tests (test/extended/networking/livemigration.go):

  1. Bump the mirrored tag from the single-arch 20241024_891122a6fc to v1.8.2, which upstream publishes as an OCI index covering amd64/arm64/s390x. Updates the mirror allowlist key, the test reference, and the generated zz_generated.txt mapping.
  2. Record a permanent multi-arch manifest-list exception in test/extended/util/image/README.md.

Why

Even at v1.8.2 the upstream image has no ppc64le variant, because KubeVirt does not currently support the ppc64le architecture (support was removed in kubevirt/kubevirt#14976). Bumping to the multi-arch v1.8.2 index closes the gap for the supported arches, while the documented --allow-missing-architectures exception (already present in the verify-image-manifest-lists presubmit in openshift/release) covers the still-missing ppc64le.

Restoring ppc64le is tracked upstream by KubeVirt VEP-258 (kubevirt/enhancements#258). This exception should be revisited once that lands.

[!IMPORTANT]
An image-mirror owner must mirror quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 into quay.io/openshift/community-e2e-images before this merges, otherwise the live-migration tests will hit ImagePullBackOff.

Ref

Summary by CodeRabbit

  • Documentation
  • Clarified architecture support for a container image and added a permanent-exception note with link to upstream tracking for future review.
  • Tests
  • Updated test infrastructure to use the newer tagged KubeVirt Fedora container image (v1.8.2).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

@openshift-ci-robot: GitHub didn't allow me to request PR reviews from the following users: zhaozhanqi.

Note that only openshift members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

@qinqon: This pull request references Jira Issue OCPBUGS-77283, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @zhaozhanqi

In response to this:

What

Two related changes for the KubeVirt Fedora fedora-with-test-tooling-container-disk image used by the VM live-migration networking tests (test/extended/networking/livemigration.go):

  1. Bump the mirrored tag from the single-arch 20241024_891122a6fc to v1.8.2, which upstream publishes as an OCI index covering amd64/arm64/s390x. Updates the mirror allowlist key, the test reference, and the generated zz_generated.txt mapping.
  2. Record a permanent multi-arch manifest-list exception in test/extended/util/image/README.md.

Why

Even at v1.8.2 the upstream image has no ppc64le variant, because KubeVirt does not currently support the ppc64le architecture (support was removed in kubevirt/kubevirt#14976). Bumping to the multi-arch v1.8.2 index closes the gap for the supported arches, while the documented --allow-missing-architectures exception (already present in the verify-image-manifest-lists presubmit in openshift/release) covers the still-missing ppc64le.

Restoring ppc64le is tracked upstream by KubeVirt VEP-258 (kubevirt/enhancements#258). This exception should be revisited once that lands.

[!IMPORTANT]
An image-mirror owner must mirror quay.io/kubevirt/fedora-with-test-tooling-container-disk:v1.8.2 into quay.io/openshift/community-e2e-images before this merges, otherwise the live-migration tests will hit ImagePullBackOff.

Ref

Summary by CodeRabbit

  • Documentation
  • Clarified architecture support for a container image and added a permanent-exception note with link to upstream tracking for future review.
  • Tests
  • Updated test infrastructure to use the newer tagged KubeVirt Fedora container image (v1.8.2).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e2e-images-update Related to images used by e2e tests jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants