Skip to content

OCPBUGS-99921: Dump istiod logs and gateway state on GatewayAPI test failure - #31454

Merged
openshift-merge-bot[bot] merged 4 commits into
openshift:mainfrom
gcs278:gatewayapi-dump-debug-on-failure
Jul 30, 2026
Merged

OCPBUGS-99921: Dump istiod logs and gateway state on GatewayAPI test failure#31454
openshift-merge-bot[bot] merged 4 commits into
openshift:mainfrom
gcs278:gatewayapi-dump-debug-on-failure

Conversation

@gcs278

@gcs278 gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a JustAfterEach hook to the GatewayAPI controller e2e tests that captures istiod pod logs, gateway status, deployments/services, and GatewayClass status when a test fails
  • This fires before AfterEach cleanup, so the istiod pod and gateway resources are still alive when diagnostics are captured
  • Without this, when istiod silently fails to reconcile a Gateway (as seen in periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance-serial #2081545455786790912), the pod gets replaced before the cluster dump runs, making root cause analysis impossible

Test plan

  • Verify the test binary compiles: go build ./test/extended/router/
  • On a test failure, confirm istiod logs, gateway YAML, deployments/services, and GatewayClass YAML appear in the test output

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Improved failure diagnostics for Gateway API test runs.
    • On spec failure, the test framework now automatically captures and logs relevant Istiod logs plus detailed YAML output for key Gateway API resources (including the targeted GatewayClass), with clearer messaging when any data collection step fails.

When a GatewayAPI test fails, the istiod pod may be replaced before the
cluster dump captures its logs, making root cause analysis impossible.

Add a JustAfterEach hook that fires on failure before AfterEach cleanup
to capture istiod pod logs, gateway status conditions, deployments,
services, and GatewayClass status while everything is still alive.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@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
openshift-ci Bot requested review from Miciah and rfredette July 30, 2026 02:31
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Walkthrough

Updates the Gateway API test cleanup hook to collect Istiod logs and Gateway-related resource YAML when a spec fails, using the deployment identifier and logging explicit errors when resource queries fail.

Changes

Gateway API diagnostics

Layer / File(s) Summary
Failure diagnostics hook
test/extended/router/gatewayapicontroller.go
Runs diagnostics when the current spec fails, dumps Istiod logs using istiodDeployment, retrieves YAML for Gateways, Deployments/Services, and the targeted GatewayClass, and logs command failures.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: miciah, rfredette


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
No-Sensitive-Data-In-Logs ❌ Error The new JustAfterEach dumps raw istiod pod logs and full Gateway/GatewayClass YAML with no redaction, which can expose hostnames and other sensitive data. Restrict debug output to non-sensitive fields or add redaction/allowlists before logging pod logs and resource YAML.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: capturing istiod logs and GatewayAPI state when tests fail.
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 All Ginkgo titles in the modified file are static string literals; the new JustAfterEach hook only adds diagnostics and no dynamic test names.
Test Structure And Quality ✅ Passed Adds only a failure-only JustAfterEach diagnostic hook; no new tests, no new waits without timeouts, and it matches existing repo patterns.
Microshift Test Compatibility ✅ Passed The new JustAfterEach only reads standard Kubernetes resources/logs (GatewayClass, Deployments, Services, pods) and uses no unsupported OpenShift APIs.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR only adds failure-time diagnostics in JustAfterEach; it introduces no new node/topology assumptions or multi-node scheduling behavior.
Topology-Aware Scheduling Compatibility ✅ Passed PASS: The change is test-only debug logging in a JustAfterEach hook; no manifests, replicas, affinity, node selectors, or topology assumptions were added.
Ote Binary Stdout Contract ✅ Passed PASS: the new logging is only inside JustAfterEach; no init/TestMain/main or stdout print calls were added in router package process-level code.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR only adds a failure-only JustAfterEach dump hook; it uses in-cluster oc/pod-log commands and adds no IPv4 assumptions or external-network calls.
No-Weak-Crypto ✅ Passed The changed test hook only adds logging and YAML dumps; no weak-crypto APIs, custom crypto, or secret comparisons were introduced.
Container-Privileges ✅ Passed Only a test hook changed; diff shows no privileged fields or manifest securityContext additions, and existing pod spec keeps allowPrivilegeEscalation false.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@gcs278 gcs278 changed the title Dump istiod logs and gateway state on GatewayAPI test failure OCPBUGS-99921: Dump istiod logs and gateway state on GatewayAPI test failure Jul 30, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. labels Jul 30, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-99921, 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:

Summary

  • Add a JustAfterEach hook to the GatewayAPI controller e2e tests that captures istiod pod logs, gateway status, deployments/services, and GatewayClass status when a test fails
  • This fires before AfterEach cleanup, so the istiod pod and gateway resources are still alive when diagnostics are captured
  • Without this, when istiod silently fails to reconcile a Gateway (as seen in periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance-serial #2081545455786790912), the pod gets replaced before the cluster dump runs, making root cause analysis impossible

Test plan

  • Verify the test binary compiles: go build ./test/extended/router/
  • On a test failure, confirm istiod logs, gateway YAML, deployments/services, and GatewayClass YAML appear in the test output

🤖 Generated with Claude Code

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-robot openshift-ci-robot added the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Jul 30, 2026
@gcs278

gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@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 Jul 30, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-99921, which is valid. The bug has been moved to the POST state.

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 New, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @melvinjoseph86

Details

In response to this:

/jira refresh

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 a review from melvinjoseph86 July 30, 2026 02:33

@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/router/gatewayapicontroller.go`:
- Around line 225-235: Update the three diagnostic oc get blocks in the
surrounding test hook to add else branches that log each command’s err via
e2e.Logf when Output fails, while preserving the existing successful-output
logging and original test failure behavior.
🪄 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: faee1921-7097-4130-9599-e37ad0381459

📥 Commits

Reviewing files that changed from the base of the PR and between ed2a43c and 68b1ce1.

📒 Files selected for processing (1)
  • test/extended/router/gatewayapicontroller.go

Comment thread test/extended/router/gatewayapicontroller.go Outdated
@gcs278

gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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

gcs278 and others added 3 commits July 29, 2026 22:35
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-99921, 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 @melvinjoseph86

Details

In response to this:

Summary

  • Add a JustAfterEach hook to the GatewayAPI controller e2e tests that captures istiod pod logs, gateway status, deployments/services, and GatewayClass status when a test fails
  • This fires before AfterEach cleanup, so the istiod pod and gateway resources are still alive when diagnostics are captured
  • Without this, when istiod silently fails to reconcile a Gateway (as seen in periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance-serial #2081545455786790912), the pod gets replaced before the cluster dump runs, making root cause analysis impossible

Test plan

  • Verify the test binary compiles: go build ./test/extended/router/
  • On a test failure, confirm istiod logs, gateway YAML, deployments/services, and GatewayClass YAML appear in the test output

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
  • Improved failure diagnostics for Gateway API test runs.
  • On spec failure, the test framework now automatically captures and logs relevant Istiod logs plus detailed YAML output for key Gateway API resources (including the targeted GatewayClass), with clearer messaging when any data collection step fails.

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.

@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/router/gatewayapicontroller.go`:
- Around line 217-239: The failure diagnostics in the g.JustAfterEach hook use
unbounded pod-log and oc command execution. Thread a timeout-aware context or
runner through DumpPodLogsStartingWithInNamespace and each oc get invocation so
hung API or CLI calls terminate within a bounded period while preserving the
existing diagnostic output and error handling.
🪄 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: 8ebf7019-9cdd-4d3b-a1fe-999cbae88f8d

📥 Commits

Reviewing files that changed from the base of the PR and between 68b1ce1 and ac68c09.

📒 Files selected for processing (1)
  • test/extended/router/gatewayapicontroller.go

Comment on lines +217 to +239
g.JustAfterEach(func() {
if g.CurrentSpecReport().Failed() {
e2e.Logf("=== Dumping Gateway API debug info after test failure ===")

exutil.DumpPodLogsStartingWithInNamespace(istiodDeployment, ingressNamespace, oc)

if output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("gateways.gateway.networking.k8s.io", "-n", ingressNamespace, "-o", "yaml").Output(); err == nil {
e2e.Logf("Gateways in %s:\n%s", ingressNamespace, output)
} else {
e2e.Logf("Failed to get gateways in %s: %v", ingressNamespace, err)
}

if output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("deployments,services", "-n", ingressNamespace, "-o", "wide").Output(); err == nil {
e2e.Logf("Deployments and services in %s:\n%s", ingressNamespace, output)
} else {
e2e.Logf("Failed to get deployments/services in %s: %v", ingressNamespace, err)
}

if output, err := oc.AsAdmin().WithoutNamespace().Run("get").Args("gatewayclasses.gateway.networking.k8s.io", gatewayClassName, "-o", "yaml").Output(); err == nil {
e2e.Logf("GatewayClass %s:\n%s", gatewayClassName, output)
} else {
e2e.Logf("Failed to get GatewayClass %s: %v", gatewayClassName, err)
}

@coderabbitai coderabbitai Bot Jul 30, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

set -euo pipefail

printf '\n== gatewayapicontroller.go ==\n'
sed -n '190,260p' test/extended/router/gatewayapicontroller.go | cat -n

printf '\n== framework.go slice around DumpPodLogsStartingWithInNamespace ==\n'
rg -n "DumpPodLogsStartingWithInNamespace|context.Background|WithTimeout|timeout" test/extended/util/framework.go
sed -n '600,700p' test/extended/util/framework.go | cat -n

Repository: openshift/origin

Length of output: 16469


🏁 Script executed:

set -euo pipefail

printf '\n== CLI type and Run/Output implementation ==\n'
rg -n "type CLI struct|func \(.*CLI.*\) Run\(|func \(.*\) Output\(|timeout" test/extended/util test/extended -g '!**/*_test.go'

printf '\n== likely file candidates ==\n'
fd -a 'framework.go' test/extended/util
fd -a '*.go' test/extended/util | sed -n '1,120p'

Repository: openshift/origin

Length of output: 50375


🏁 Script executed:

set -euo pipefail

printf '\n== util files ==\n'
fd -a '' test/extended/util | sed -n '1,200p'

printf '\n== search for CLI definition files ==\n'
rg -n --glob 'test/extended/util/*.go' 'type CLI struct|type CLI interface|func .*Run\(' test/extended/util

Repository: openshift/origin

Length of output: 12843


🏁 Script executed:

set -euo pipefail

sed -n '85,220p' test/extended/util/client.go | cat -n
printf '\n== Run/Output area ==\n'
sed -n '930,1045p' test/extended/util/client.go | cat -n

Repository: openshift/origin

Length of output: 10442


🏁 Script executed:

set -euo pipefail

sed -n '1045,1145p' test/extended/util/client.go | cat -n

Repository: openshift/origin

Length of output: 4326


Bound the failure diagnostics path.

DumpPodLogsStartingWithInNamespace and the oc get calls here use unbounded contexts/exec, so a hung API or CLI call can stall this failure hook indefinitely and delay teardown. Thread a timeout-aware context or runner through these diagnostics.

🤖 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/router/gatewayapicontroller.go` around lines 217 - 239, The
failure diagnostics in the g.JustAfterEach hook use unbounded pod-log and oc
command execution. Thread a timeout-aware context or runner through
DumpPodLogsStartingWithInNamespace and each oc get invocation so hung API or CLI
calls terminate within a bounded period while preserving the existing diagnostic
output and error handling.

Sources: Path instructions, Learnings

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

fair point, but I think it's out-of-scope for this PR

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@gcs278, understood—this is a reasonable follow-up rather than a blocker for this diagnostics-focused PR. Would you like me to open a GitHub issue to track bounding the Gateway API failure-diagnostic commands?


🧠 Learnings used
Learnt from: ngopalak-redhat
Repo: openshift/origin PR: 31339
File: test/extended/node/node_utils.go:304-306
Timestamp: 2026-06-25T02:59:24.710Z
Learning: In openshift/origin Go test helper code under test/extended/, avoid switching to context.Background() for deferred cleanup that must run after the spec/test context is canceled. Instead, detach cancellation from the existing context (e.g., ctxNoCancel := context.WithoutCancel(ctx)) to preserve context values, then apply an explicit timeout to keep cleanup bounded (e.g., context.WithTimeout(ctxNoCancel, ...)) so cleanup can complete safely without relying on an uncanceled root context.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

no not really

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@gcs278, understood. I won’t open a follow-up issue.


🧠 Learnings used
Learnt from: ngopalak-redhat
Repo: openshift/origin PR: 31339
File: test/extended/node/node_utils.go:304-306
Timestamp: 2026-06-25T02:59:24.710Z
Learning: In openshift/origin Go test helper code under test/extended/, avoid switching to context.Background() for deferred cleanup that must run after the spec/test context is canceled. Instead, detach cancellation from the existing context (e.g., ctxNoCancel := context.WithoutCancel(ctx)) to preserve context values, then apply an explicit timeout to keep cleanup bounded (e.g., context.WithTimeout(ctxNoCancel, ...)) so cleanup can complete safely without relying on an uncanceled root context.

You are interacting with an AI system.

@gcs278

gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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

@gcs278

gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@rikatz

rikatz commented Jul 30, 2026

Copy link
Copy Markdown
Member

/lgtm

@gcs278

gcs278 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

CI jobs are currently passing, so at least it's not breaking any existing job.

/verified by CI

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 30, 2026
@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 30, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This PR has been marked as verified by CI.

Details

In response to this:

CI jobs are currently passing, so at least it's not breaking any existing job.

/verified by CI

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 Jul 30, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gcs278, rikatz

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

The pull request process is described 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

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@gcs278: all tests passed!

Full PR test history. Your PR dashboard.

Details

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. I understand the commands that are listed here.

@openshift-merge-bot
openshift-merge-bot Bot merged commit 118982e into openshift:main Jul 30, 2026
22 checks passed
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: Jira Issue Verification Checks: Jira Issue OCPBUGS-99921
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-99921 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Details

In response to this:

Summary

  • Add a JustAfterEach hook to the GatewayAPI controller e2e tests that captures istiod pod logs, gateway status, deployments/services, and GatewayClass status when a test fails
  • This fires before AfterEach cleanup, so the istiod pod and gateway resources are still alive when diagnostics are captured
  • Without this, when istiod silently fails to reconcile a Gateway (as seen in periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance-serial #2081545455786790912), the pod gets replaced before the cluster dump runs, making root cause analysis impossible

Test plan

  • Verify the test binary compiles: go build ./test/extended/router/
  • On a test failure, confirm istiod logs, gateway YAML, deployments/services, and GatewayClass YAML appear in the test output

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
  • Improved failure diagnostics for Gateway API test runs.
  • On spec failure, the test framework now automatically captures and logs relevant Istiod logs plus detailed YAML output for key Gateway API resources (including the targeted GatewayClass), with clearer messaging when any data collection step fails.

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.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. 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. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants