Skip to content

Commit 01a7cc0

Browse files
Merge pull request #30318 from QiWang19/drainless-update
OCPNODE-3659: Not fail upgrade checks if all nodes are ready
2 parents ba7373c + d3af51e commit 01a7cc0

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

test/e2e/upgrade/upgrade.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import (
4141
"github.com/openshift/origin/test/e2e/upgrade/adminack"
4242
"github.com/openshift/origin/test/e2e/upgrade/dns"
4343
"github.com/openshift/origin/test/e2e/upgrade/manifestdelete"
44+
mc "github.com/openshift/origin/test/extended/machine_config"
4445
"github.com/openshift/origin/test/extended/prometheus"
4546
"github.com/openshift/origin/test/extended/util/disruption"
4647
"github.com/openshift/origin/test/extended/util/operator"
@@ -625,6 +626,21 @@ func clusterUpgrade(f *framework.Framework, c configv1client.Interface, dc dynam
625626
func() (error, bool) {
626627
framework.Logf("Waiting on pools to be upgraded")
627628
if err := wait.PollImmediate(10*time.Second, 30*time.Minute, func() (bool, error) {
629+
630+
nodes, err := kubeClient.CoreV1().Nodes().List(context.Background(), metav1.ListOptions{})
631+
if err != nil {
632+
framework.Logf("error getting nodes %v", err)
633+
return false, nil
634+
}
635+
636+
allNodesReady := true
637+
for _, node := range nodes.Items {
638+
if !mc.IsNodeReady(node) {
639+
allNodesReady = false
640+
break
641+
}
642+
}
643+
628644
mcps := dc.Resource(schema.GroupVersionResource{
629645
Group: "machineconfiguration.openshift.io",
630646
Version: "v1",
@@ -641,7 +657,7 @@ func clusterUpgrade(f *framework.Framework, c configv1client.Interface, dc dynam
641657
allUpdated = allUpdated && updated
642658

643659
// Invariant: when CVO reaches level, MCO is required to have rolled out control plane updates
644-
if p.GetName() == "master" && requiresUpdate && errMasterUpdating == nil {
660+
if p.GetName() == "master" && requiresUpdate && !allNodesReady && errMasterUpdating == nil {
645661
errMasterUpdating = fmt.Errorf("the %q pool should be updated before the CVO reports available at the new version", p.GetName())
646662
framework.Logf("Invariant violation detected: %s", errMasterUpdating)
647663
}

test/extended/machine_config/helpers.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ func ValidateMCNForNodeInPool(oc *exutil.CLI, clientSet *machineconfigclient.Cli
494494
// `GetRandomNode` gets a random node from with a given role and checks whether the node is ready. If no
495495
// nodes are ready, it will wait for up to 5 minutes for a node to become available.
496496
func GetRandomNode(oc *exutil.CLI, role string) corev1.Node {
497-
if node := getRandomNode(oc, role); isNodeReady(node) {
497+
if node := getRandomNode(oc, role); IsNodeReady(node) {
498498
return node
499499
}
500500

@@ -503,7 +503,7 @@ func GetRandomNode(oc *exutil.CLI, role string) corev1.Node {
503503
framework.Logf("No ready nodes found with role '%s', waiting up to %s for a ready node to become available", role, waitPeriod)
504504
var targetNode corev1.Node
505505
o.Eventually(func() bool {
506-
if node := getRandomNode(oc, role); isNodeReady(node) {
506+
if node := getRandomNode(oc, role); IsNodeReady(node) {
507507
targetNode = node
508508
return true
509509
}
@@ -549,7 +549,7 @@ func GetAllNodes(oc *exutil.CLI) ([]corev1.Node, error) {
549549
}
550550

551551
// `isNodeReady` determines if a given node is ready
552-
func isNodeReady(node corev1.Node) bool {
552+
func IsNodeReady(node corev1.Node) bool {
553553
// If the node is cordoned, it is not ready.
554554
if node.Spec.Unschedulable {
555555
return false
@@ -1038,7 +1038,7 @@ func GetNewReadyNodeInMachine(oc *exutil.CLI, machineName string) (corev1.Node,
10381038

10391039
// Check if node is in desiredStatus
10401040
framework.Logf("Checking if node '%v' is ready.", node.Name)
1041-
if isNodeReady(node) {
1041+
if IsNodeReady(node) {
10421042
framework.Logf("Node '%v' is ready.", node.Name)
10431043
desiredNode = node
10441044
err = nil

0 commit comments

Comments
 (0)