Updated priority of mirror pod by PriorityClass.

Signed-off-by: Da K. Ma <madaxa@cn.ibm.com>
This commit is contained in:
Da K. Ma 2018-01-19 07:55:36 +08:00
parent 40b0c5516a
commit a7c62eec8f
2 changed files with 48 additions and 3 deletions

View File

@ -156,9 +156,7 @@ func (p *PriorityPlugin) admitPod(a admission.Attributes) error {
if !ok { if !ok {
return errors.NewBadRequest("resource was marked with kind Pod but was unable to be converted") return errors.NewBadRequest("resource was marked with kind Pod but was unable to be converted")
} }
if _, isMirrorPod := pod.Annotations[api.MirrorPodAnnotationKey]; isMirrorPod {
return nil
}
// Make sure that the client has not set `priority` at the time of pod creation. // Make sure that the client has not set `priority` at the time of pod creation.
if operation == admission.Create && pod.Spec.Priority != nil { if operation == admission.Create && pod.Spec.Priority != nil {
return admission.NewForbidden(a, fmt.Errorf("the integer value of priority must not be provided in pod spec. Priority admission controller populates the value from the given PriorityClass name")) return admission.NewForbidden(a, fmt.Errorf("the integer value of priority must not be provided in pod spec. Priority admission controller populates the value from the given PriorityClass name"))

View File

@ -316,6 +316,39 @@ func TestPodAdmission(t *testing.T) {
PriorityClassName: "system-cluster-critical", PriorityClassName: "system-cluster-critical",
}, },
}, },
// pod[5]: mirror Pod with a system priority class name
{
ObjectMeta: metav1.ObjectMeta{
Name: "mirror-pod-w-system-priority",
Namespace: "namespace",
Annotations: map[string]string{api.MirrorPodAnnotationKey: ""},
},
Spec: api.PodSpec{
Containers: []api.Container{
{
Name: containerName,
},
},
PriorityClassName: "system-cluster-critical",
},
},
// pod[6]: mirror Pod with integer value of priority
{
ObjectMeta: metav1.ObjectMeta{
Name: "mirror-pod-w-integer-priority",
Namespace: "namespace",
Annotations: map[string]string{api.MirrorPodAnnotationKey: ""},
},
Spec: api.PodSpec{
Containers: []api.Container{
{
Name: containerName,
},
},
PriorityClassName: "default1",
Priority: &intPriority,
},
},
} }
// Enable PodPriority feature gate. // Enable PodPriority feature gate.
utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("%s=true", features.PodPriority)) utilfeature.DefaultFeatureGate.Set(fmt.Sprintf("%s=true", features.PodPriority))
@ -378,6 +411,20 @@ func TestPodAdmission(t *testing.T) {
0, 0,
true, true,
}, },
{
"mirror pod with system priority class",
[]*scheduling.PriorityClass{},
*pods[5],
SystemCriticalPriority,
false,
},
{
"mirror pod with integer priority",
[]*scheduling.PriorityClass{},
*pods[6],
0,
true,
},
} }
for _, test := range tests { for _, test := range tests {