OCPBUGS-84491: Remove openshift-ingress terminationMessagePolicy exemption - #31435
OCPBUGS-84491: Remove openshift-ingress terminationMessagePolicy exemption#31435gcs278 wants to merge 1 commit into
Conversation
…ption The upstream fix (istio/istio#60102) adding terminationMessagePolicy= FallbackToLogsOnError to the istiod pilot container has been cherry-picked into downstream openshift-service-mesh/istio release-1.30.1 (commit 25c524c). This removes the openshift-ingress exemption from the monitor test since the violation is now fixed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Pipeline controller notification For optional jobs, comment This repository is configured in: automatic mode |
|
@gcs278: This pull request references Jira Issue OCPBUGS-84491, which is valid. 3 validation(s) were run on this bug
Requesting review from QA contact: The bug has been updated to refer to the pull request using the external bug tracker. 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. |
WalkthroughThe termination message policy monitor removes the ChangesTermination message policy monitoring
🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
I need to ensure it's fixed by running CI: |
|
Scheduling required tests: |
|
Risk analysis has seen new tests most likely introduced by this PR. New Test Risks for sha: d329291
New tests seen in this PR at sha: d329291
|
|
Whoops - I realized I need openshift/cluster-ingress-operator#1502 to merge first. We need to bump to istio 1.30 to get this fix. /wip |
|
/wip |
|
openshift/cluster-ingress-operator#1530 has merged |
|
/retest |
|
@gcs278: 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. |
|
@CodeRabbit which of my passing pre-submits validates that this flake/failure is gone? Can you confirm you do not see the terminationMessagePolicy failure or flake for openshift-ingress anywhere? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/origin"
pr="31435"
echo "== PR metadata =="
gh pr view "$pr" --repo "$repo" --json headRefOid,updatedAt,statusCheckRollup \
--jq '{headRefOid, updatedAt, checks: [.statusCheckRollup[] | {name: .name, status: .status, conclusion: .conclusion, detailsUrl: .detailsUrl}]}'
sha="$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)"
echo
echo "== Check runs for ${sha} =="
gh api "repos/${repo}/commits/${sha}/check-runs?per_page=100" \
--jq '.check_runs[] | [.name, .status, .conclusion, .details_url, .output.title, .output.summary] | `@tsv`'Length of output: 2340 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/origin"
pr="31435"
sha="d329291cd11881c9852ee3ebd4ca87d1aedf06ed"
echo "== Combined commit status =="
gh api "repos/${repo}/commits/${sha}/status" \
--jq '{state, total_count, statuses: [.statuses[] | {context, state, target_url, description, updated_at}]}'
echo
echo "== PR comments containing CI or job links =="
gh api "repos/${repo}/issues/${pr}/comments?per_page=100" --paginate \
--jq '.[] | select(.body | test("(?i)(prow|ci\\.openshift|testgrid|job|retest|verify)")) | {created_at, user: .user.login, body}'Length of output: 17049 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/origin"
sha="d329291cd11881c9852ee3ebd4ca87d1aedf06ed"
bucket="test-platform-results"
# Get every successful e2e Prow job path from legacy GitHub statuses.
mapfile -t job_prefixes < <(
gh api "repos/${repo}/commits/${sha}/status" --jq '
.statuses[]
| select(.state == "success" and (.context | startswith("ci/prow/e2e-")))
| .target_url
| capture("/view/gs/(?<bucket>[^/]+)/(?<prefix>.+)$").prefix
'
)
echo "== Successful e2e jobs =="
printf '%s\n' "${job_prefixes[@]}"
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
for prefix in "${job_prefixes[@]}"; do
echo
echo "== Artifacts: ${prefix} =="
encoded_prefix="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$prefix/")"
curl -fsSL "https://storage.googleapis.com/storage/v1/b/${bucket}/o?prefix=${encoded_prefix}&maxResults=1000" \
> "${tmpdir}/objects.json" || {
echo "Could not list public artifacts for this job."
continue
}
# Print candidate result files and download only manageable textual/JUnit artifacts.
jq -r '.items[]? | [.name, (.size|tonumber)] | `@tsv`' "${tmpdir}/objects.json" |
grep -Ei '(^|/)(junit|.*\.xml$|.*\.txt$|.*\.json$|.*\.log$|monitor)' |
head -n 100
while IFS=$'\t' read -r object size; do
case "$object" in
*junit*|*.xml|*monitor*|*events*.json|*events*.txt)
if [ "$size" -le 25000000 ]; then
encoded_object="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$object")"
curl -fsSL "https://storage.googleapis.com/download/storage/v1/b/${bucket}/o/${encoded_object}?alt=media" \
-o "${tmpdir}/artifact" || continue
matches="$(grep -ainE 'terminationMessagePolicy|FallbackToLogsOnError|openshift-ingress|all containers in ns/' "${tmpdir}/artifact" || true)"
if [ -n "$matches" ]; then
echo "-- Matches in ${object} --"
printf '%s\n' "$matches"
fi
fi
;;
esac
done < <(jq -r '.items[]? | [.name, (.size|tonumber)] | `@tsv`' "${tmpdir}/objects.json")
doneLength of output: 2514 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="openshift/origin"
sha="d329291cd11881c9852ee3ebd4ca87d1aedf06ed"
bucket="test-platform-results"
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
gh api "repos/${repo}/commits/${sha}/status" --jq '
.statuses[]
| select(.state == "success" and (.context | startswith("ci/prow/e2e-")))
| [.context, (.target_url | capture("/view/gs/[^/]+/(?<prefix>.+)$").prefix)]
| `@tsv`
' > "${tmpdir}/jobs.tsv"
echo "== Successful e2e jobs =="
cat "${tmpdir}/jobs.tsv"
while IFS=$'\t' read -r context prefix; do
echo
echo "== ${context}: ${prefix} =="
encoded_prefix="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "${prefix}/")"
if ! curl -fsSL "https://storage.googleapis.com/storage/v1/b/${bucket}/o?prefix=${encoded_prefix}&maxResults=1000" \
> "${tmpdir}/objects.json"; then
echo "Could not list public artifacts for this job."
continue
fi
jq -r '.items[]? | [.name, (.size|tonumber)] | `@tsv`' "${tmpdir}/objects.json" > "${tmpdir}/object-list.tsv"
echo "-- Candidate result artifacts --"
grep -Ei '(^|/)(junit|.*\.xml$|.*events.*\.(json|txt)$|.*monitor.*|.*summary.*\.(json|txt)$)' \
"${tmpdir}/object-list.tsv" | head -n 100 || true
while IFS=$'\t' read -r object size; do
case "$object" in
*junit*|*.xml|*monitor*|*events*.json|*events*.txt|*summary*.json|*summary*.txt)
if [ "$size" -le 25000000 ]; then
encoded_object="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$object")"
if curl -fsSL "https://storage.googleapis.com/download/storage/v1/b/${bucket}/o/${encoded_object}?alt=media" \
-o "${tmpdir}/artifact"; then
grep -ainE 'terminationMessagePolicy|FallbackToLogsOnError|openshift-ingress|all containers in ns/' \
"${tmpdir}/artifact" \
&& echo "-- End matches: ${object} --" \
|| true
fi
fi
;;
esac
done < "${tmpdir}/object-list.tsv"
done < "${tmpdir}/jobs.tsv"Length of output: 2153 🏁 Script executed: #!/bin/bash
set -euo pipefail
owner="openshift"
repo="origin"
sha="d329291cd11881c9852ee3ebd4ca87d1aedf06ed"
bucket="test-platform-results"
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
curl -fsSL \
-H 'Accept: application/vnd.github+json' \
"https://api.github.com/repos/${owner}/${repo}/commits/${sha}/status" \
> "${tmpdir}/statuses.json"
jq -r '
.statuses[]
| select(.state == "success" and (.context | startswith("ci/prow/e2e-")))
| [.context, (.target_url | capture("/view/gs/[^/]+/(?<prefix>.+)$").prefix)]
| `@tsv`
' "${tmpdir}/statuses.json" > "${tmpdir}/jobs.tsv"
echo "== Successful e2e jobs =="
cat "${tmpdir}/jobs.tsv"
while IFS=$'\t' read -r context prefix; do
echo
echo "== ${context} =="
encoded_prefix="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "${prefix}/")"
curl -fsSL \
"https://storage.googleapis.com/storage/v1/b/${bucket}/o?prefix=${encoded_prefix}&maxResults=1000" \
> "${tmpdir}/objects.json"
jq -r '.items[]? | [.name, (.size|tonumber)] | `@tsv`' "${tmpdir}/objects.json" \
> "${tmpdir}/objects.tsv"
found=0
while IFS=$'\t' read -r object size; do
case "$object" in
*junit*|*.xml|*monitor*|*events*.json|*events*.txt|*summary*.json|*summary*.txt)
if [ "$size" -le 25000000 ]; then
encoded_object="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$object")"
curl -fsSL \
"https://storage.googleapis.com/download/storage/v1/b/${bucket}/o/${encoded_object}?alt=media" \
-o "${tmpdir}/artifact" || continue
if grep -ainE 'terminationMessagePolicy|FallbackToLogsOnError|openshift-ingress|all containers in ns/' \
"${tmpdir}/artifact"; then
echo "-- Artifact: ${object} --"
found=1
fi
fi
;;
esac
done < "${tmpdir}/objects.tsv"
if [ "$found" -eq 0 ]; then
echo "No matching text found in JUnit or monitor artifacts that were available and under 25 MB."
fi
done < "${tmpdir}/jobs.tsv"Length of output: 2171
These jobs passed. The earlier successful The I cannot confirm the exact absence of the
No available output showed this test result or a related failure/flake. You are interacting with an AI system. |
|
I've confirmed manually that this is passing: /verified by CI |
|
@gcs278: 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. |
|
I saw failures on a recent hypershift job - I don't think istio 1.30 has made it into a CI/Nightly stream yet, I'm going to wait until that happens before merging this: |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: bentito, gcs278 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Summary
openshift-ingressnamespace exemption from theterminationMessagePolicymonitor testterminationMessagePolicy=FallbackToLogsOnErrorto the istiod pilot container has been cherry-picked into downstream openshift-service-mesh/istio release-1.30.1 (commit 25c524c), fixing thepods/istiod-openshift-gatewayviolationpods/gateway) were fixed in openshift/cluster-ingress-operator#1428openshift-ingressis no longer neededTest plan
[sig-arch] all containers in ns/openshift-ingress must have terminationMessagePolicy=FallbackToLogsOnErrortest should now pass instead of flaking)🤖 Generated with Claude Code