From 409abdc7456a6c8de8fbf4af936eae84c574914c Mon Sep 17 00:00:00 2001 From: derekwaynecarr Date: Fri, 6 Feb 2015 13:50:09 -0500 Subject: [PATCH] Improve test casing on resource defaults sample plugin --- .../admission/resourcedefaults/admission.go | 4 +- .../resourcedefaults/admission_test.go | 45 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/plugin/pkg/admission/resourcedefaults/admission.go b/plugin/pkg/admission/resourcedefaults/admission.go index 733dcf2a94..3e3882b07a 100644 --- a/plugin/pkg/admission/resourcedefaults/admission.go +++ b/plugin/pkg/admission/resourcedefaults/admission.go @@ -55,7 +55,9 @@ func (resourceDefaults) Admit(a admission.Attributes) (err error) { obj := a.GetObject() pod := obj.(*api.Pod) for index := range pod.Spec.Containers { - pod.Spec.Containers[index].Resources.Limits = api.ResourceList{} + if pod.Spec.Containers[index].Resources.Limits == nil { + pod.Spec.Containers[index].Resources.Limits = api.ResourceList{} + } if pod.Spec.Containers[index].Resources.Limits.Memory().Value() == 0 { pod.Spec.Containers[index].Resources.Limits[api.ResourceMemory] = resource.MustParse(defaultMemory) } diff --git a/plugin/pkg/admission/resourcedefaults/admission_test.go b/plugin/pkg/admission/resourcedefaults/admission_test.go index 9e0792c51e..3cc222f7cc 100644 --- a/plugin/pkg/admission/resourcedefaults/admission_test.go +++ b/plugin/pkg/admission/resourcedefaults/admission_test.go @@ -21,6 +21,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/admission" "github.com/GoogleCloudPlatform/kubernetes/pkg/api" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api/resource" ) func TestAdmission(t *testing.T) { @@ -51,3 +52,47 @@ func TestAdmission(t *testing.T) { } } } + +func TestIgnoreAdmission(t *testing.T) { + namespace := "default" + + handler := NewResourceDefaults() + pod := api.Pod{ + ObjectMeta: api.ObjectMeta{Name: "123", Namespace: "ns"}, + Spec: api.PodSpec{ + Volumes: []api.Volume{{Name: "vol"}}, + Containers: []api.Container{ + { + Name: "ctr", + Image: "image", + Resources: api.ResourceRequirementSpec{ + Limits: getResourceLimits("2", "750Mi"), + }, + }, + }, + }, + } + + err := handler.Admit(admission.NewAttributesRecord(&pod, namespace, "pods", "CREATE")) + if err != nil { + t.Errorf("Unexpected error returned from admission handler") + } + + for i := range pod.Spec.Containers { + memory := pod.Spec.Containers[i].Resources.Limits.Memory().String() + cpu := pod.Spec.Containers[i].Resources.Limits.Cpu().String() + if memory != "750Mi" { + t.Errorf("Unexpected memory value %s", memory) + } + if cpu != "2" { + t.Errorf("Unexpected cpu value %s", cpu) + } + } +} + +func getResourceLimits(cpu, memory string) api.ResourceList { + res := api.ResourceList{} + res[api.ResourceCPU] = resource.MustParse(cpu) + res[api.ResourceMemory] = resource.MustParse(memory) + return res +}