Move functions from e2e/framework/util.go Part-2
This PR moves functions from test/e2e/framework.util.go for making e2e core framework small and simple: - RestartKubeProxy: Moved to e2e network package - CheckConnectivityToHost: Moved to e2e network package - RemoveAvoidPodsOffNode: Move to e2e scheduling package - AddOrUpdateAvoidPodOnNode: Move to e2e scheduling package - UpdateDaemonSetWithRetries: Move to e2e apps package - CheckForControllerManagerHealthy: Moved to e2e storage package - ParseKVLines: Removed because ofe9345ae5f0
- AddOrUpdateLabelOnNodeAndReturnOldValue: Removed because offf7b07c43c
This commit is contained in:
@@ -28,9 +28,11 @@ import (
|
||||
_ "github.com/stretchr/testify/assert"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos"
|
||||
priorityutil "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util"
|
||||
@@ -61,6 +63,67 @@ var podRequestedResource = &v1.ResourceRequirements{
|
||||
},
|
||||
}
|
||||
|
||||
// addOrUpdateAvoidPodOnNode adds avoidPods annotations to node, will override if it exists
|
||||
func addOrUpdateAvoidPodOnNode(c clientset.Interface, nodeName string, avoidPods v1.AvoidPods) {
|
||||
err := wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) {
|
||||
node, err := c.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if testutils.IsRetryableAPIError(err) {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
|
||||
taintsData, err := json.Marshal(avoidPods)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
if node.Annotations == nil {
|
||||
node.Annotations = make(map[string]string)
|
||||
}
|
||||
node.Annotations[v1.PreferAvoidPodsAnnotationKey] = string(taintsData)
|
||||
_, err = c.CoreV1().Nodes().Update(node)
|
||||
if err != nil {
|
||||
if !apierrs.IsConflict(err) {
|
||||
framework.ExpectNoError(err)
|
||||
} else {
|
||||
framework.Logf("Conflict when trying to add/update avoidPods %v to %v with error %v", avoidPods, nodeName, err)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
})
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
// removeAvoidPodsOffNode removes AvoidPods annotations from the node. It does not fail if no such annotation exists.
|
||||
func removeAvoidPodsOffNode(c clientset.Interface, nodeName string) {
|
||||
err := wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) {
|
||||
node, err := c.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if testutils.IsRetryableAPIError(err) {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
|
||||
if node.Annotations == nil {
|
||||
return true, nil
|
||||
}
|
||||
delete(node.Annotations, v1.PreferAvoidPodsAnnotationKey)
|
||||
_, err = c.CoreV1().Nodes().Update(node)
|
||||
if err != nil {
|
||||
if !apierrs.IsConflict(err) {
|
||||
framework.ExpectNoError(err)
|
||||
} else {
|
||||
framework.Logf("Conflict when trying to remove avoidPods to %v", nodeName)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
})
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
// This test suite is used to verifies scheduler priority functions based on the default provider
|
||||
var _ = SIGDescribe("SchedulerPriorities [Serial]", func() {
|
||||
var cs clientset.Interface
|
||||
@@ -209,7 +272,7 @@ var _ = SIGDescribe("SchedulerPriorities [Serial]", func() {
|
||||
},
|
||||
}
|
||||
action := func() error {
|
||||
framework.AddOrUpdateAvoidPodOnNode(cs, nodeName, avoidPod)
|
||||
addOrUpdateAvoidPodOnNode(cs, nodeName, avoidPod)
|
||||
return nil
|
||||
}
|
||||
predicate := func(node *v1.Node) bool {
|
||||
@@ -223,7 +286,7 @@ var _ = SIGDescribe("SchedulerPriorities [Serial]", func() {
|
||||
framework.ExpectNoError(err)
|
||||
framework.ExpectEqual(success, true)
|
||||
|
||||
defer framework.RemoveAvoidPodsOffNode(cs, nodeName)
|
||||
defer removeAvoidPodsOffNode(cs, nodeName)
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Scale the RC: %s to len(nodeList.Item)-1 : %v.", rc.Name, len(nodeList.Items)-1))
|
||||
|
||||
|
Reference in New Issue
Block a user