Add retries in cluster-autoscaler e2e

This commit is contained in:
Maciej Pytel 2017-03-28 17:10:46 +02:00
parent 0d666e1fcd
commit 2630cefcce

View File

@ -674,6 +674,7 @@ func setMigSizes(sizes map[string]int) {
func makeNodeUnschedulable(c clientset.Interface, node *v1.Node) error { func makeNodeUnschedulable(c clientset.Interface, node *v1.Node) error {
By(fmt.Sprintf("Taint node %s", node.Name)) By(fmt.Sprintf("Taint node %s", node.Name))
for j := 0; j < 3; j++ {
freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{}) freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{})
if err != nil { if err != nil {
return err return err
@ -689,11 +690,20 @@ func makeNodeUnschedulable(c clientset.Interface, node *v1.Node) error {
Effect: v1.TaintEffectNoSchedule, Effect: v1.TaintEffectNoSchedule,
}) })
_, err = c.Core().Nodes().Update(freshNode) _, err = c.Core().Nodes().Update(freshNode)
if err == nil {
return nil
}
if !errors.IsConflict(err) {
return err return err
} }
glog.Warningf("Got 409 conflict when trying to taint node, retries left: %v", 3-j)
}
return fmt.Errorf("Failed to taint node in allowed number of retries")
}
func makeNodeSchedulable(c clientset.Interface, node *v1.Node) error { func makeNodeSchedulable(c clientset.Interface, node *v1.Node) error {
By(fmt.Sprintf("Remove taint from node %s", node.Name)) By(fmt.Sprintf("Remove taint from node %s", node.Name))
for j := 0; j < 3; j++ {
freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{}) freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{})
if err != nil { if err != nil {
return err return err
@ -705,12 +715,20 @@ func makeNodeSchedulable(c clientset.Interface, node *v1.Node) error {
} }
} }
if len(newTaints) != len(freshNode.Spec.Taints) { if len(newTaints) == len(freshNode.Spec.Taints) {
return nil
}
freshNode.Spec.Taints = newTaints freshNode.Spec.Taints = newTaints
_, err = c.Core().Nodes().Update(freshNode) _, err = c.Core().Nodes().Update(freshNode)
if err == nil {
return nil
}
if !errors.IsConflict(err) {
return err return err
} }
return nil glog.Warningf("Got 409 conflict when trying to taint node, retries left: %v", 3-j)
}
return fmt.Errorf("Failed to remove taint from node in allowed number of retries")
} }
// Creat an RC running a given number of pods on each node without adding any constraint forcing // Creat an RC running a given number of pods on each node without adding any constraint forcing