e2e: Skip multi-node PV test when pods scheduled on the same node

This commit is contained in:
Tomas Smetana
2019-06-04 16:18:38 +02:00
parent ca342ecb5a
commit d4f43e8e19
3 changed files with 60 additions and 5 deletions

View File

@@ -950,6 +950,36 @@ func SetAntiAffinity(nodeSelection *NodeSelection, nodeName string) {
SetNodeAffinityRequirement(nodeSelection, v1.NodeSelectorOpNotIn, nodeName)
}
// SetNodeAffinityPreference sets affinity preference with specified operator to nodeName to nodeSelection
func SetNodeAffinityPreference(nodeSelection *NodeSelection, operator v1.NodeSelectorOperator, nodeName string) {
// Add node-anti-affinity.
if nodeSelection.Affinity == nil {
nodeSelection.Affinity = &v1.Affinity{}
}
if nodeSelection.Affinity.NodeAffinity == nil {
nodeSelection.Affinity.NodeAffinity = &v1.NodeAffinity{}
}
nodeSelection.Affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(nodeSelection.Affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution,
v1.PreferredSchedulingTerm{
Weight: int32(100),
Preference: v1.NodeSelectorTerm{
MatchFields: []v1.NodeSelectorRequirement{
{Key: "metadata.name", Operator: operator, Values: []string{nodeName}},
},
},
})
}
// SetAffinityPreference sets affinity preference to nodeName to nodeSelection
func SetAffinityPreference(nodeSelection *NodeSelection, nodeName string) {
SetNodeAffinityPreference(nodeSelection, v1.NodeSelectorOpIn, nodeName)
}
// SetAntiAffinityPreference sets anti-affinity preference to nodeName to nodeSelection
func SetAntiAffinityPreference(nodeSelection *NodeSelection, nodeName string) {
SetNodeAffinityPreference(nodeSelection, v1.NodeSelectorOpNotIn, nodeName)
}
// CreateClientPod defines and creates a pod with a mounted PV. Pod runs infinite loop until killed.
func CreateClientPod(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.Pod, error) {
return CreatePod(c, ns, nil, []*v1.PersistentVolumeClaim{pvc}, true, "")