diff --git a/test/extended/node/node_utils.go b/test/extended/node/node_utils.go index 0d9bf838c621..411891e8b0fb 100644 --- a/test/extended/node/node_utils.go +++ b/test/extended/node/node_utils.go @@ -991,6 +991,19 @@ func GetNotReadyNodes(ctx context.Context, oc *exutil.CLI) ([]string, error) { func EnsureNodesReady(ctx context.Context, oc *exutil.CLI) { notReadyNodes, err := GetNotReadyNodes(ctx, oc) o.Expect(err).NotTo(o.HaveOccurred(), "failed to check node readiness") + + if exutil.ClusterDegraded && len(notReadyNodes) == 1 && exutil.IsTwoNodeFencing(ctx, oc.AdminConfigClient()) { + cpNodes, cpErr := getControlPlaneNodes(ctx, oc) + if cpErr == nil { + for _, cp := range cpNodes { + if cp.Name == notReadyNodes[0] { + framework.Logf("Tolerating NotReady control-plane node %s on intentionally degraded TNF cluster", notReadyNodes[0]) + return + } + } + } + } + o.Expect(notReadyNodes).To(o.BeEmpty(), "Cannot start test: nodes not Ready: %v. Cluster may be recovering from previous test.", notReadyNodes) }