github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/pkg/ha/nodes.go (about)

     1  // Copyright (c) 2022, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package ha
     5  
     6  import (
     7  	"context"
     8  	"time"
     9  
    10  	"github.com/onsi/gomega"
    11  	"go.uber.org/zap"
    12  	corev1 "k8s.io/api/core/v1"
    13  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    14  	"k8s.io/client-go/kubernetes"
    15  )
    16  
    17  const (
    18  	WaitTimeout         = 10 * time.Minute
    19  	longWaitTimeout     = 20 * time.Minute
    20  	PollingInterval     = 10 * time.Second
    21  	longPollingInterval = 30 * time.Second
    22  )
    23  
    24  func EventuallyGetNodes(cs *kubernetes.Clientset, log *zap.SugaredLogger) *corev1.NodeList {
    25  	var nodes *corev1.NodeList
    26  	var err error
    27  	gomega.Eventually(func() bool {
    28  		nodes, err = cs.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
    29  		if err != nil {
    30  			log.Errorf("failed to get nodes: %v", err)
    31  			return false
    32  		}
    33  		return true
    34  	}, WaitTimeout, PollingInterval).Should(gomega.BeTrue())
    35  	return nodes
    36  }
    37  
    38  func IsControlPlaneNode(node corev1.Node) bool {
    39  	_, ok := node.Labels["node-role.kubernetes.io/control-plane"]
    40  	return ok
    41  }