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,43 +674,61 @@ 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))
freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{}) for j := 0; j < 3; j++ {
if err != nil { freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{})
return err if err != nil {
} return err
for _, taint := range freshNode.Spec.Taints { }
if taint.Key == disabledTaint { for _, taint := range freshNode.Spec.Taints {
if taint.Key == disabledTaint {
return nil
}
}
freshNode.Spec.Taints = append(freshNode.Spec.Taints, v1.Taint{
Key: disabledTaint,
Value: "DisabledForTest",
Effect: v1.TaintEffectNoSchedule,
})
_, err = c.Core().Nodes().Update(freshNode)
if err == nil {
return nil return nil
} }
if !errors.IsConflict(err) {
return err
}
glog.Warningf("Got 409 conflict when trying to taint node, retries left: %v", 3-j)
} }
freshNode.Spec.Taints = append(freshNode.Spec.Taints, v1.Taint{ return fmt.Errorf("Failed to taint node in allowed number of retries")
Key: disabledTaint,
Value: "DisabledForTest",
Effect: v1.TaintEffectNoSchedule,
})
_, err = c.Core().Nodes().Update(freshNode)
return err
} }
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))
freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{}) for j := 0; j < 3; j++ {
if err != nil { freshNode, err := c.Core().Nodes().Get(node.Name, metav1.GetOptions{})
return err if err != nil {
} return err
newTaints := make([]v1.Taint, 0) }
for _, taint := range freshNode.Spec.Taints { newTaints := make([]v1.Taint, 0)
if taint.Key != disabledTaint { for _, taint := range freshNode.Spec.Taints {
newTaints = append(newTaints, taint) if taint.Key != disabledTaint {
newTaints = append(newTaints, taint)
}
} }
}
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)
return err if err == nil {
return nil
}
if !errors.IsConflict(err) {
return err
}
glog.Warningf("Got 409 conflict when trying to taint node, retries left: %v", 3-j)
} }
return nil 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