update inter-pod affinity predicates, check PodAntiAffinity even when pod has no AntiAffinity constraints

This commit is contained in:
kevin-wangzefeng
2016-07-13 03:47:50 +00:00
parent 23f0edb8b0
commit ff6280fa5b
2 changed files with 60 additions and 8 deletions

View File

@@ -2254,6 +2254,62 @@ func TestInterPodAffinity(t *testing.T) {
fits: false,
test: "pod matches its own Label in PodAffinity and that matches the existing pod Labels",
},
{
pod: &api.Pod{
ObjectMeta: api.ObjectMeta{
Labels: podLabel,
},
},
pods: []*api.Pod{{Spec: api.PodSpec{NodeName: "machine1"},
ObjectMeta: api.ObjectMeta{Labels: podLabel,
Annotations: map[string]string{
api.AffinityAnnotationKey: `
{"PodAntiAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": [{
"labelSelector": {
"matchExpressions": [{
"key": "service",
"operator": "In",
"values": ["securityscan", "value2"]
}]
},
"topologyKey": "zone"
}]
}}`,
}},
}},
node: &node1,
fits: false,
test: "verify that PodAntiAffinity from existing pod is respected when pod has no AntiAffinity constraints. doesn't satisfy PodAntiAffinity symmetry with the existing pod",
},
{
pod: &api.Pod{
ObjectMeta: api.ObjectMeta{
Labels: podLabel,
},
},
pods: []*api.Pod{{Spec: api.PodSpec{NodeName: "machine1"},
ObjectMeta: api.ObjectMeta{Labels: podLabel,
Annotations: map[string]string{
api.AffinityAnnotationKey: `
{"PodAntiAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": [{
"labelSelector": {
"matchExpressions": [{
"key": "service",
"operator": "NotIn",
"values": ["securityscan", "value2"]
}]
},
"topologyKey": "zone"
}]
}}`,
}},
}},
node: &node1,
fits: true,
test: "verify that PodAntiAffinity from existing pod is respected when pod has no AntiAffinity constraints. satisfy PodAntiAffinity symmetry with the existing pod",
},
}
for _, test := range tests {
node := test.node