NE-2829: images/router/f5: Delete F5 router Dockerfile - #826
Conversation
Delete the images/router/f5/ directory, which contained the
Dockerfile and supporting files for the F5 BIG-IP router plugin image.
These are the last remaining artifacts of the F5 router plugin, whose
Go implementation was already removed.
The F5 router code was deleted in three stages:
1. The Go source and tests were removed from this repository in
PR openshift#46 (commit 2c04e3a).
2. The F5 router image was removed from the Prow CI
configuration in openshift/release PR #74313 (commit
7a5d5f1a3cd66a16ae8d28a8c4e7ffdd43f8fde1).
3. The F5 router image was removed from the ART build
configuration in openshift-eng/ocp-build-data (commit
ccb97c75b58a1706d2111c396cf6c3437bc6e05e).
This commit completes the cleanup by deleting the four files that
remained under images/router/f5/:
- Dockerfile (CentOS-based image definition)
- Dockerfile.rhel (RHEL-based image definition)
- .cccp.yml (container build service config)
- bin/.gitignore (placeholder for copied binary)
This commit resolves NE-2829.
https://issues.redhat.com/browse/NE-2829
* images/router/f5/Dockerfile: Delete file.
* images/router/f5/Dockerfile.rhel: Delete file.
* images/router/f5/.cccp.yml: Delete file.
* images/router/f5/bin/.gitignore: Delete file.
Assisted-by: Chai Bot (OpenShift AI Helpdesk)
|
@Miciah: This pull request references NE-2829 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
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. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (4)
💤 Files with no reviewable changes (4)
📝 WalkthroughWalkthroughRemoved the F5 router image configuration, both Dockerfiles, and the 🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
/lgtm sorry, I was here, saw this PR and though "well this is a fast one to get it done" :) |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: rikatz The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/verified by e2e |
|
@rikatz: This PR has been marked as verified by DetailsIn response to this:
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. |
|
/jira refresh @coderabbitai, please analyse the CI failures on this PR. |
|
@Miciah: This pull request references NE-2829 which is a valid jira issue. DetailsIn response to this:
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. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/router"
pr="826"
head_sha="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq '.headRefOid')"
printf 'PR head SHA: %s\n\n' "$head_sha"
echo "== Combined commit status =="
gh api "repos/$repo/commits/$head_sha/status" \
--jq '.statuses[] | [.state, .context, (.description // ""), (.target_url // "")] | `@tsv`' \
|| true
echo
echo "== Check runs (non-successful first) =="
gh api --paginate "repos/$repo/commits/$head_sha/check-runs?per_page=100" \
--jq '.check_runs[] | select(.conclusion != "success" and .conclusion != "skipped" and .conclusion != "neutral") | [.status, (.conclusion // ""), .name, (.details_url // ""), (.output.title // ""), (.output.summary // "")] | `@tsv`' \
|| true
echo
echo "== Recent PR workflow runs =="
gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')" --limit 30 \
--json databaseId,name,status,conclusion,event,workflowName,url,headSha \
--jq --arg sha "$head_sha" '.[] | select(.headSha == $sha) | [.databaseId, .workflowName, .name, .status, (.conclusion // ""), .url] | `@tsv`' \
|| trueLength of output: 5741 🏁 Script executed: #!/bin/bash
set -euo pipefail
urls=(
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144"
)
for url in "${urls[@]}"; do
job="${url##*/}"
page="/tmp/prow-${job}.html"
echo "===== $job: result page ====="
curl --fail --silent --show-error --location "$url" -o "$page"
echo "-- Job-state/failure excerpts --"
grep -Ein -m 30 \
'failure|failed|error|infra|test|artifact|build-log|finished\.json' \
"$page" \
| sed -E 's/<[^>]*>/ /g; s/[[:space:]]+/ /g' \
|| true
echo "-- Candidate artifact URLs --"
grep -Eo 'https?://[^"<> ]+|href="[^"]+"' "$page" \
| sed -E 's/^href="//; s/"$//' \
| grep -E 'build-log\.txt|finished\.json|junit|artifacts|gcsweb' \
| head -n 40 \
|| true
echo
doneLength of output: 11357 🏁 Script executed: #!/bin/bash
set -euo pipefail
base="https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_router/826"
jobs=(
"pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440:artifacts/e2e-aws-fips"
"pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208:artifacts/e2e-aws-serial"
"pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144:artifacts/e2e-agnostic"
)
for entry in "${jobs[@]}"; do
job="${entry%%:*}"
artifact_root="${entry#*:}"
root="$base/$job"
echo "===== $job ====="
echo "-- Job completion --"
curl --fail --silent --show-error --location "$root/finished.json" | jq -c . || true
echo
echo "-- Step completion records with nonzero/failed values --"
for step in \
"ipi-install-install" \
"openshift-e2e-test" \
"ipi-deprovision-deprovision" \
"aws-deprovision-verification"; do
url="$root/$artifact_root/$step/finished.json"
response="$(curl --silent --show-error --location "$url" || true)"
if [ -n "$response" ]; then
printf '%s: %s\n' "$step" "$response"
fi
done
echo
echo "-- Build-log failure excerpts --"
curl --fail --silent --show-error --location "$root/build-log.txt" \
| grep -Ein -C 3 \
'FAIL|FAILURE|ERROR|panic:|timed out|timeout|test.*failed|exit code [^0]|non-zero|unable to' \
| tail -n 160 \
|| true
echo
doneLength of output: 164254
The remaining relevant checks passed, including This PR only removes the obsolete F5 BIG-IP image Dockerfiles/configuration; it does not alter the HAProxy router implementation or payload. No code change to this PR is indicated by these failures. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/router"
pr="826"
echo "== Pull request =="
gh pr view "$pr" --repo "$repo" --json number,url,headRefName,headRefOid,baseRefName,mergeStateStatus,statusCheckRollup \
--jq '{number,url,headRefName,headRefOid,baseRefName,mergeStateStatus,checks: [.statusCheckRollup[] | {name,conclusion,status,detailsUrl,workflowName}]}'
sha="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)"
echo
echo "== Check runs for head SHA: $sha =="
gh api "repos/$repo/commits/$sha/check-runs?per_page=100" \
--jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at,output:{title:.output.title,summary:.output.summary}}'
echo
echo "== Legacy commit statuses for head SHA: $sha =="
gh api "repos/$repo/commits/$sha/status" \
--jq '{state, statuses: [.statuses[] | {context,state,target_url,description,created_at}]}'
echo
echo "== GitHub Actions jobs associated with this PR (if any) =="
gh api "repos/$repo/actions/runs?event=pull_request&per_page=100" \
--jq --argjson pr "$pr" '.workflow_runs[] | select(.pull_requests[]?.number == $pr) | {id,name,status,conclusion,html_url,created_at,updated_at}' || trueLength of output: 7443 🏁 Script executed: #!/bin/bash
set -euo pipefail
urls=(
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144"
)
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
for url in "${urls[@]}"; do
job="${url##*/}"
page="$tmp/$job.html"
echo "===== JOB $job: page metadata and artifact links ====="
curl --fail --location --silent --show-error "$url" -o "$page"
grep -Eio 'https?://[^"<> ]+|href="[^"]+"' "$page" \
| sed -E 's/^href="//; s/"$//' \
| grep -Ei '(build-log|finished\.json|junit|artifacts|gcs|storage\.googleapis|log)' \
| head -80 || true
echo
echo "===== JOB $job: relevant visible failure text ====="
sed -E 's/<[^>]*>/ /g; s/ / /g; s/"/"/g; s/&/\&/g' "$page" \
| tr -s '[:space:]' ' ' \
| grep -Eio '.{0,180}(fail(ed|ure)?|error|timeout|panic|flake).{0,360}' \
| head -30 || true
echo
doneLength of output: 4253 🏁 Script executed: #!/bin/bash
set -euo pipefail
base_paths=(
"pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440"
"pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208"
"pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144"
)
bucket="test-platform-results"
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
for path in "${base_paths[@]}"; do
job="${path##*/}"
echo "===== JOB $job: available artifacts ====="
index="$tmp/$job-index.html"
curl --fail --location --silent --show-error \
"https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/$bucket/$path/" \
-o "$index"
grep -Eio 'href="[^"]+"' "$index" | sed -E 's/^href="//;s/"$//' | head -200 || true
echo
echo "===== JOB $job: finished metadata ====="
for name in finished.json metadata.json; do
if curl --fail --location --silent \
"https://storage.googleapis.com/$bucket/$path/$name" -o "$tmp/$job-$name"; then
cat "$tmp/$job-$name"
echo
fi
done
echo
echo "===== JOB $job: build-log failure excerpts ====="
if curl --fail --location --silent \
"https://storage.googleapis.com/$bucket/$path/build-log.txt" -o "$tmp/$job-build-log.txt"; then
echo "-- final 250 lines --"
tail -250 "$tmp/$job-build-log.txt"
echo "-- error/failure matches (last 80) --"
grep -Ein '(error|failed|failure|panic|timeout|unable to|not found|test .* fail)' \
"$tmp/$job-build-log.txt" | tail -80 || true
else
echo "build-log.txt was not accessible at the expected root path."
fi
echo
doneLength of output: 186230
The failures are not attributable to this PR’s removal of the deprecated F5 image files. Recommendation: retry the three failed Prow jobs; no code change to this cleanup PR is indicated by these logs. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/router"
pr="826"
echo "== PR checks =="
gh pr checks "$pr" --repo "$repo" --json name,state,link,workflow,bucket,completedAt,startedAt 2>&1 || true
echo
echo "== Check runs with non-success conclusions =="
gh api "repos/$repo/commits/$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)/check-runs?per_page=100" \
--jq '.check_runs[] | select(.conclusion != "success" and .conclusion != null) | {name, status, conclusion, details_url, output: {title: .output.title, summary: .output.summary, text: .output.text}, started_at, completed_at}' 2>&1 || true
echo
echo "== Recent workflow runs for PR =="
gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq .headRefName)" --limit 30 \
--json databaseId,name,status,conclusion,event,url,createdAt,updatedAt,headSha 2>&1 || trueLength of output: 5096 🏁 Script executed: #!/bin/bash
set -euo pipefail
urls=(
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440"
"https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/openshift_router/826/pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208"
)
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
for url in "${urls[@]}"; do
job="$(basename "$(dirname "$url")")"
build="$(basename "$url")"
prefix="https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_router/826/${job}/${build}"
echo "===== ${job} (${build}) : Prow page ====="
curl --fail --location --silent --show-error "$url" -o "$workdir/${build}.html" || true
grep -Eio '.{0,180}(error|fail(ed|ure)?|panic|timeout|installer|cluster|test).{0,300}' "$workdir/${build}.html" \
| head -80 || true
echo "===== ${job} (${build}) : build-log ====="
curl --fail --location --silent --show-error "$prefix/build-log.txt" -o "$workdir/${build}.log" || true
if [[ -s "$workdir/${build}.log" ]]; then
grep -Ein '(^|[^[:alpha:]])(error|failed|failure|panic|fatal|timeout|timed out|flake|aborted)([^[:alpha:]]|$)' "$workdir/${build}.log" \
| tail -120 || true
else
echo "build-log.txt unavailable at $prefix/build-log.txt"
fi
echo "===== ${job} (${build}) : finished metadata ====="
curl --fail --location --silent --show-error "$prefix/finished.json" || true
echo
echo
doneLength of output: 128558 🏁 Script executed: #!/bin/bash
set -euo pipefail
base="https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_router/826"
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
declare -A jobs=(
[agnostic]="pull-ci-openshift-router-master-e2e-agnostic/2082481955089158144/artifacts/e2e-agnostic/openshift-e2e-test/artifacts/junit/junit_e2e__20260729-161925.xml"
[fips]="pull-ci-openshift-router-master-e2e-aws-fips/2082481587663933440/artifacts/e2e-aws-fips/openshift-e2e-test/artifacts/junit/junit_e2e__20260729-162425.xml"
[serial]="pull-ci-openshift-router-master-e2e-aws-serial-2of2/2082481177322590208/artifacts/e2e-aws-serial/openshift-e2e-test/artifacts/junit/junit_e2e__20260729-162021.xml"
)
for name in agnostic fips serial; do
echo "===== ${name} failed JUnit cases ====="
curl --fail --location --silent --show-error "${base}/${jobs[$name]}" -o "$workdir/${name}.xml"
python3 - "$workdir/${name}.xml" <<'PY'
import sys
import xml.etree.ElementTree as ET
root = ET.parse(sys.argv[1]).getroot()
count = 0
for case in root.iter("testcase"):
failures = list(case.findall("failure")) + list(case.findall("error"))
if not failures:
continue
count += 1
print(f"name: {case.get('name', '')}")
print(f"classname: {case.get('classname', '')}")
for failure in failures:
print(f"type: {failure.get('type', '')}")
print(f"message: {failure.get('message', '')}")
text = (failure.text or "").strip().replace("\x1b", "")
print("details:", text[:3000])
print("---")
print(f"failed_cases={count}")
PY
doneLength of output: 7553
Recommendation: retrigger the three failed e2e jobs. No code change to this PR is indicated by the logs. |
|
@coderabbitai, can we accurately attribute these failures to OCPBUGS-77056? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🔍 Additional research query:
Length of output: 32 🤖 web_search executed:
Length of output: 10393 🤖 web_search executed:
Length of output: 12230 🤖 web_search executed:
Length of output: 17986 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/router"
pr_head="$(gh pr view 826 --repo "$repo" --json headRefOid,updatedAt --jq '[.headRefOid, .updatedAt] | `@tsv`')"
bug_pr="$(gh pr view 822 --repo "$repo" --json mergeCommit,mergedAt,state,url --jq '{mergeCommit: (.mergeCommit.oid // ""), mergedAt, state, url}')"
printf 'PR `#826` head and update time:\n%s\n\n' "$pr_head"
printf 'OCPBUGS-77056 PR `#822`:\n%s\n\n' "$bug_pr"
head_sha="$(printf '%s\n' "$pr_head" | cut -f1)"
bug_sha="$(printf '%s\n' "$bug_pr" | jq -r '.mergeCommit')"
if [[ -n "$bug_sha" && "$bug_sha" != "null" ]]; then
echo "== Is OCPBUGS-77056 merge commit an ancestor of PR `#826` head? =="
gh api "repos/$repo/compare/$bug_sha...$head_sha" \
--jq '{status,ahead_by,behind_by,merge_base_commit: .merge_base_commit.sha}' \
|| true
echo
echo "== Commit metadata =="
gh api "repos/$repo/commits/$head_sha" --jq '{sha: .sha, date: .commit.committer.date, message: .commit.message}'
gh api "repos/$repo/commits/$bug_sha" --jq '{sha: .sha, date: .commit.committer.date, message: .commit.message}'
fiLength of output: 3495
So I would revise the earlier recommendation: do not treat the two router e2e failures as unrelated flakes; they are credibly attributable to |
|
Let's wait for #829 to merge and then rerun the failed CI jobs. |
|
@Miciah: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions 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. I understand the commands that are listed here. |
Delete the
images/router/f5/directory, which contained the Dockerfile and supporting files for the F5 BIG-IP router plugin image. These are the last remaining artifacts of the F5 router plugin, whose Go implementation was already removed.The F5 router code was deleted in three stages:
The Go source and tests were removed from this repository in PR Delete obsolete F5 code #46 (commit 2c04e3a).
The F5 router image was removed from the Prow CI configuration in router: Remove F5 image release#74313 (commit openshift/release@7a5d5f1).
The F5 router image was removed from the ART build configuration in openshift-eng/ocp-build-data (commit openshift-eng/ocp-build-data@ccb97c7).
This PR completes the cleanup by deleting the four files that remained under
images/router/f5/:Dockerfile(CentOS-based image definition)Dockerfile.rhel(RHEL-based image definition).cccp.yml(container build service config)bin/.gitignore(placeholder for copied binary)