Skip to content

[WIP]OCPEDGE-2827: tolerate one NotReady CP node in EnsureNodesReady for degraded TNF - #31442

Open
Neilhamza wants to merge 1 commit into
openshift:mainfrom
Neilhamza:fix/ensure-nodes-ready-degraded-tnf
Open

[WIP]OCPEDGE-2827: tolerate one NotReady CP node in EnsureNodesReady for degraded TNF#31442
Neilhamza wants to merge 1 commit into
openshift:mainfrom
Neilhamza:fix/ensure-nodes-ready-degraded-tnf

Conversation

@Neilhamza

@Neilhamza Neilhamza commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary

On intentionally degraded Two Node Fencing (TNF) clusters where one master is shut down, EnsureNodesReady in BeforeEach hooks blocks all 13 test files under test/extended/node/ because it fails on any NotReady node with no bypass.

This adds a targeted carve-out: when DEGRADED_NODE=true (already wired via PR #30649) AND the cluster topology is DualReplica (TNF) AND exactly one node is NotReady AND that node is a control-plane node (verified via getControlPlaneNodes), the precondition gate passes and the test runs normally.

Condition order: ClusterDegraded (bool, free) -> len==1 (free) -> IsTwoNodeFencing (API call) -> CP label check, so healthy/non-degraded runs short-circuit before any API call.

The check remains strict for:

  • Non-degraded clusters (no env var)
  • Non-TNF topologies
  • More than one NotReady node (both TNF nodes down)
  • NotReady worker nodes on a TNF cluster with added compute

Validation

Aggregated degraded run against this PR shows zero EnsureNodesReady/BeforeEach failures in test/extended/node/ — the 9 previously blocked sig-node tests now run and pass. Remaining lane failures are unrelated (TLS port-forward, UDN network segmentation, PLR resize — tracked separately in the release repo skip list).

Failing CI lanes

  • periodic-ci-openshift-release-main-nightly-4.22-e2e-metal-ovn-two-node-fencing-degraded
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ovn-two-node-fencing-dualstack-degraded

Jira: https://redhat.atlassian.net/browse/OCPEDGE-2827

@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 the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 28, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@Neilhamza: This pull request references OCPEDGE-2827 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.

Details

In response to this:

Summary

On intentionally degraded Two Node Fencing (TNF) clusters where one master is shut down, EnsureNodesReady in BeforeEach hooks blocks all 13 test files under test/extended/node/ because it fails on any NotReady node with no bypass.

This change adds a targeted carve-out: when DEGRADED_NODE=true (already wired via PR #30649) AND the cluster topology is DualReplica (TNF), tolerate exactly one NotReady control-plane node. This follows the same ClusterDegraded && IsTwoNodeFencing() pattern used in test/extended/operators/certs.go.

The check remains strict for non-degraded clusters, non-TNF topologies, multiple NotReady nodes, and NotReady worker nodes.

Why not skip the tests?

Adding tests to TEST_SKIPS requires maintenance as new tests are added to the 13 affected files. Since all 13 files funnel through EnsureNodesReady, fixing the single choke point automatically covers future tests.

Failing CI lanes

  • periodic-ci-openshift-release-main-nightly-4.22-e2e-metal-ovn-two-node-fencing-degraded
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ovn-two-node-fencing-dualstack-degraded

Jira: https://redhat.atlassian.net/browse/OCPEDGE-2827

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 commented Jul 28, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

EnsureNodesReady now permits the expected single NotReady control-plane node in degraded TNF clusters with two-node fencing. Other cases continue to require no NotReady nodes.

Changes

Node readiness handling

Layer / File(s) Summary
Degraded readiness exception
test/extended/node/node_utils.go
EnsureNodesReady logs and returns when the sole NotReady node is a control-plane node in the specified degraded fencing scenario; otherwise it preserves the empty-list assertion.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Suggested reviewers: asahay19, bhargavigudi, mrunalp


Caution

Pre-merge checks failed

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

  • Ignore

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error New framework.Logf prints raw node.Name, which can expose internal hostnames in test logs. Remove the node name or redact it (e.g. log a generic message or an ordinal/hashed identifier) before emitting the message.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (13 passed)
Check name Status Explanation
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 only changes node_utils.go utility logic; no Ginkgo It/Describe/Context titles were added or modified, so no unstable test names.
Test Structure And Quality ✅ Passed PASS: Change is a shared readiness helper only; it doesn’t add/alter Ginkgo It blocks, waits, or resource lifecycle, and existing assertions include messages.
Microshift Test Compatibility ✅ Passed No new Ginkgo tests were added; the diff only changes EnsureNodesReady, and the affected suites already have SkipOnMicroShift/apigroup guards.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo tests were added; only the EnsureNodesReady helper changed, so the SNO test-compatibility check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Only a test readiness gate changed; no pod specs, selectors, anti-affinity, spread constraints, replicas, or PDBs were added.
Ote Binary Stdout Contract ✅ Passed The only new log is inside EnsureNodesReady, which is invoked from BeforeEach hooks, not main/init/TestMain/suite setup.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Only EnsureNodesReady helper changed; no new Ginkgo test bodies, IPv4 literals, or external connectivity were added.
No-Weak-Crypto ✅ Passed Changed code only adds node-readiness logic; no MD5/SHA1/DES/RC4/ECB/custom crypto or secret comparisons found.
Container-Privileges ✅ Passed Only test/extended/node/node_utils.go changed; the diff adds node-readiness logic and no container privilege/security-context settings.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: tolerating one NotReady control-plane node during degraded TNF readiness checks.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
openshift-ci Bot requested review from mrunalp and sairameshv July 28, 2026 16:52
@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Neilhamza
Once this PR has been reviewed and has the lgtm label, please assign cpmeadors 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

@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/node/node_utils.go`:
- Around line 1006-1009: Update isControlPlaneNode to return (bool, error),
preserving the classification result while propagating failures from the
Nodes().Get lookup instead of converting them to false. Update EnsureNodesReady
and all callers to handle and assert the returned error so API lookup failures
are reported distinctly from a NotReady node.
🪄 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: 573730f8-9b15-4f19-ae06-966c3ffb9ad1

📥 Commits

Reviewing files that changed from the base of the PR and between 203a39d and 5df8d5b.

📒 Files selected for processing (1)
  • test/extended/node/node_utils.go

Comment thread test/extended/node/node_utils.go Outdated
Comment on lines +1006 to +1009
func isControlPlaneNode(ctx context.Context, oc *exutil.CLI, nodeName string) bool {
node, err := oc.AdminKubeClient().CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{})
if err != nil {
return false

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 | ⚡ Quick win

Propagate the node lookup error.

Line [1007] can fail, but Line [1008] silently converts that failure into false. A transient API error will then fall through to the readiness assertion and be reported as a NotReady node instead of an inability to classify it. Return (bool, error) and propagate/assert the error from EnsureNodesReady, or reuse the node returned by the initial list.

🤖 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/node/node_utils.go` around lines 1006 - 1009, Update
isControlPlaneNode to return (bool, error), preserving the classification result
while propagating failures from the Nodes().Get lookup instead of converting
them to false. Update EnsureNodesReady and all callers to handle and assert the
returned error so API lookup failures are reported distinctly from a NotReady
node.

Source: Path instructions

@Neilhamza
Neilhamza force-pushed the fix/ensure-nodes-ready-degraded-tnf branch from 5df8d5b to 37eeb67 Compare July 28, 2026 16:56
@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/8e038bb0-8aa5-11f1-9537-77918f9bbb03-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn 5

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/04a6a3b0-8aa6-11f1-9fe7-da6c8b8c8de2-0

@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

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/retest

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/f4990ee0-8b1d-11f1-9b3a-26d65f39e96e-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn 5

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/fa2112e0-8b1d-11f1-8f1b-d09c5195f877-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/9d156510-8b22-11f1-9ddd-15883f653acd-0

@Neilhamza
Neilhamza force-pushed the fix/ensure-nodes-ready-degraded-tnf branch from 37eeb67 to 9713c89 Compare July 29, 2026 07:56
@Neilhamza

Copy link
Copy Markdown
Contributor Author

@coderabbitai perform full review

@openshift-ci-robot

Copy link
Copy Markdown

@Neilhamza: This pull request references OCPEDGE-2827 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 either version "5.0." or "openshift-5.0.", but it targets "openshift-4.23" instead.

Details

In response to this:

Summary

On intentionally degraded Two Node Fencing (TNF) clusters where one master is shut down, EnsureNodesReady in BeforeEach hooks blocks all 13 test files under test/extended/node/ because it fails on any NotReady node with no bypass.

This change adds a targeted carve-out: when DEGRADED_NODE=true (already wired via PR #30649) AND the cluster topology is DualReplica (TNF), tolerate exactly one NotReady control-plane node. This follows the same ClusterDegraded && IsTwoNodeFencing() pattern used in test/extended/operators/certs.go.

The check remains strict for non-degraded clusters, non-TNF topologies, multiple NotReady nodes, and NotReady worker nodes.

Why not skip the tests?

Adding tests to TEST_SKIPS requires maintenance as new tests are added to the 13 affected files. Since all 13 files funnel through EnsureNodesReady, fixing the single choke point automatically covers future tests.

Failing CI lanes

  • periodic-ci-openshift-release-main-nightly-4.22-e2e-metal-ovn-two-node-fencing-degraded
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ovn-two-node-fencing-dualstack-degraded

Jira: https://redhat.atlassian.net/browse/OCPEDGE-2827

Summary by CodeRabbit

  • Bug Fixes
  • Improved cluster readiness handling for degraded two-node clusters.
  • When two-node fencing is enabled, readiness checks now tolerate exactly one NotReady control-plane/master node and continue instead of failing.
  • Any other NotReady-node scenario still results in a test failure to maintain strict validation.

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 commented Jul 29, 2026

Copy link
Copy Markdown

@Neilhamza: Starting a full review of the pull request, including the degraded Two Node Fencing readiness exception and its surrounding behavior.

✅ Action performed

Full review finished.

@Neilhamza
Neilhamza force-pushed the fix/ensure-nodes-ready-degraded-tnf branch from 9713c89 to 2a6e844 Compare July 29, 2026 08:02

@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.

🧹 Nitpick comments (1)
test/extended/node/node_utils.go (1)

1002-1006: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add boundary coverage for the readiness exception.

Cover exactly one degraded TNF control-plane/master node, plus rejection of worker nodes, multiple NotReady nodes, non-degraded clusters, and non-TNF topologies.

🤖 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/node/node_utils.go` around lines 1002 - 1006, Add focused tests
for the readiness exception around hasControlPlaneLabel and the IsTwoNodeFencing
path: verify tolerance only for exactly one NotReady control-plane/master node
on a degraded TNF cluster, and verify rejection for a worker node, multiple
NotReady nodes, non-degraded clusters, and non-TNF topologies.
🤖 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.

Nitpick comments:
In `@test/extended/node/node_utils.go`:
- Around line 1002-1006: Add focused tests for the readiness exception around
hasControlPlaneLabel and the IsTwoNodeFencing path: verify tolerance only for
exactly one NotReady control-plane/master node on a degraded TNF cluster, and
verify rejection for a worker node, multiple NotReady nodes, non-degraded
clusters, and non-TNF topologies.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 047dbe9c-c20a-4076-a9d0-2fa8ad876bb3

📥 Commits

Reviewing files that changed from the base of the PR and between 15f2cf2 and 9713c89.

📒 Files selected for processing (1)
  • test/extended/node/node_utils.go

@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/node/node_utils.go`:
- Around line 995-998: Update the degraded TNF exception in the node-readiness
validation flow to inspect the sole entry in notReadyNodes and return only when
that node is a control-plane node. Preserve the existing BeEmpty() failure path
for a single NotReady worker, while retaining the current cluster-state and
two-node-fencing checks.
🪄 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: f4031444-91b4-4fac-ab1e-4f71a31410b3

📥 Commits

Reviewing files that changed from the base of the PR and between 9713c89 and 2a6e844.

📒 Files selected for processing (1)
  • test/extended/node/node_utils.go

Comment thread test/extended/node/node_utils.go
@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/52de57b0-8b25-11f1-8066-11b38563b107-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/5b81cc80-8b25-11f1-8733-40b42c1be0a9-0

@Neilhamza
Neilhamza force-pushed the fix/ensure-nodes-ready-degraded-tnf branch from 2a6e844 to eb0d22c Compare July 29, 2026 08:17
@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/33c606b0-8b26-11f1-909d-c5872d2834f4-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/b4621160-8b26-11f1-8797-203235165492-0

@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

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/retest

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/fa65f100-8b52-11f1-8b16-e29987bb222c-0

…egraded TNF

EnsureNodesReady checks that all nodes are Ready before running tests.
On intentionally degraded Two Node Fencing clusters (one master shut
down), this blocks every test suite that uses the check (13 files).

When DEGRADED_NODE=true (sets exutil.ClusterDegraded) and the cluster
topology is DualReplica (TNF), tolerate exactly one NotReady node
provided it is a control-plane node (verified via getControlPlaneNodes).

Condition order is ClusterDegraded (bool, free) → len==1 (free) →
IsTwoNodeFencing (API call) → control-plane label check, so
healthy/non-degraded runs short-circuit before touching the API.

The check remains strict for:
- Non-degraded clusters (no env var)
- Non-TNF topologies
- More than one NotReady node (both TNF nodes down)
- NotReady worker nodes on a TNF cluster with added compute

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Neilhamza
Neilhamza force-pushed the fix/ensure-nodes-ready-degraded-tnf branch from eb0d22c to 68527bd Compare July 30, 2026 09:20
@Neilhamza

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown

@Neilhamza: This pull request references OCPEDGE-2827 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 either version "5.0." or "openshift-5.0.", but it targets "openshift-4.23" instead.

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.

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/9f113a60-8bf9-11f1-8d54-dda4ca122171-0

@Neilhamza

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded 5

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@Neilhamza: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-4.23-e2e-metal-ovn-two-node-fencing-degraded

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/3b203f50-8bfa-11f1-842b-e23cb2cc7c52-0

@Neilhamza Neilhamza changed the title OCPEDGE-2827: tolerate one NotReady CP node in EnsureNodesReady for degraded TNF [WIP]OCPEDGE-2827: tolerate one NotReady CP node in EnsureNodesReady for degraded TNF Jul 30, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 30, 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

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

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants