This is an automated email from the ASF dual-hosted git repository.

pbacsko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git


The following commit(s) were added to refs/heads/master by this push:
     new a8206ab3 [YUNIKORN-1796] add retry to some e2e test functions (#612)
a8206ab3 is described below

commit a8206ab3f29c846745b8e894673afaea114da57c
Author: Frank Yang <[email protected]>
AuthorDate: Fri Jun 9 12:24:46 2023 +0200

    [YUNIKORN-1796] add retry to some e2e test functions (#612)
    
    Signed-off-by: Frank Yang <[email protected]>
    
    Closes: #612
    
    Signed-off-by: Peter Bacsko <[email protected]>
---
 test/e2e/framework/helpers/k8s/k8s_utils.go | 101 +++++++++++++++-------------
 1 file changed, 55 insertions(+), 46 deletions(-)

diff --git a/test/e2e/framework/helpers/k8s/k8s_utils.go 
b/test/e2e/framework/helpers/k8s/k8s_utils.go
index 78922c20..e4a8a282 100644
--- a/test/e2e/framework/helpers/k8s/k8s_utils.go
+++ b/test/e2e/framework/helpers/k8s/k8s_utils.go
@@ -50,6 +50,7 @@ import (
        "k8s.io/client-go/tools/clientcmd"
        "k8s.io/client-go/tools/portforward"
        "k8s.io/client-go/transport/spdy"
+       "k8s.io/client-go/util/retry"
        resourcehelper "k8s.io/kubectl/pkg/util/resource"
        podutil "k8s.io/kubernetes/pkg/api/v1/pod"
 
@@ -1222,16 +1223,18 @@ func (k *KubeCtl) DescribeNode(node v1.Node) error {
 }
 
 func (k *KubeCtl) SetNodeLabel(name, key, value string) error {
-       node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), name, 
metav1.GetOptions{})
-       if err != nil {
-               return err
-       }
-       node.Labels[key] = value
-       _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), node, 
metav1.UpdateOptions{})
-       if err != nil {
-               return err
-       }
-       return nil
+       return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
+               node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), 
name, metav1.GetOptions{})
+               if err != nil {
+                       return err
+               }
+               node.Labels[key] = value
+               _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), 
node, metav1.UpdateOptions{})
+               if err != nil {
+                       return err
+               }
+               return nil
+       })
 }
 
 func (k *KubeCtl) IsNodeLabelExists(name, key string) (bool, error) {
@@ -1248,35 +1251,39 @@ func (k *KubeCtl) IsNodeLabelExists(name, key string) 
(bool, error) {
 }
 
 func (k *KubeCtl) RemoveNodeLabel(name, key, value string) error {
-       node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), name, 
metav1.GetOptions{})
-       if err != nil {
-               return err
-       }
-       delete(node.Labels, key)
-       _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), node, 
metav1.UpdateOptions{})
-       if err != nil {
-               return err
-       }
-       return nil
+       return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
+               node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), 
name, metav1.GetOptions{})
+               if err != nil {
+                       return err
+               }
+               delete(node.Labels, key)
+               _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), 
node, metav1.UpdateOptions{})
+               if err != nil {
+                       return err
+               }
+               return nil
+       })
 }
 
 func (k *KubeCtl) TaintNode(name, key, val string, effect v1.TaintEffect) 
error {
-       node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), name, 
metav1.GetOptions{})
-       if err != nil {
-               return err
-       }
+       return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
+               node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), 
name, metav1.GetOptions{})
+               if err != nil {
+                       return err
+               }
 
-       t := v1.Taint{
-               Effect: effect,
-               Key:    key,
-               Value:  val,
-       }
-       taints := node.Spec.Taints
-       taints = append(taints, t)
-       node.Spec.Taints = taints
+               t := v1.Taint{
+                       Effect: effect,
+                       Key:    key,
+                       Value:  val,
+               }
+               taints := node.Spec.Taints
+               taints = append(taints, t)
+               node.Spec.Taints = taints
 
-       _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), node, 
metav1.UpdateOptions{})
-       return err
+               _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), 
node, metav1.UpdateOptions{})
+               return err
+       })
 }
 
 func (k *KubeCtl) TaintNodes(names []string, key, val string, effect 
v1.TaintEffect) error {
@@ -1290,21 +1297,23 @@ func (k *KubeCtl) TaintNodes(names []string, key, val 
string, effect v1.TaintEff
 }
 
 func (k *KubeCtl) UntaintNode(name, key string) error {
-       node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), name, 
metav1.GetOptions{})
-       if err != nil {
-               return err
-       }
+       return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
+               node, err := k.clientSet.CoreV1().Nodes().Get(context.TODO(), 
name, metav1.GetOptions{})
+               if err != nil {
+                       return err
+               }
 
-       newTaints := make([]v1.Taint, 0)
-       for _, taint := range node.Spec.Taints {
-               if taint.Key != key {
-                       newTaints = append(newTaints, taint)
+               newTaints := make([]v1.Taint, 0)
+               for _, taint := range node.Spec.Taints {
+                       if taint.Key != key {
+                               newTaints = append(newTaints, taint)
+                       }
                }
-       }
 
-       node.Spec.Taints = newTaints
-       _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), node, 
metav1.UpdateOptions{})
-       return err
+               node.Spec.Taints = newTaints
+               _, err = k.clientSet.CoreV1().Nodes().Update(context.TODO(), 
node, metav1.UpdateOptions{})
+               return err
+       })
 }
 
 func (k *KubeCtl) UntaintNodes(names []string, key string) error {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to