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 }