From a3c180e5497822d2c51148c1968ca07572d40f38 Mon Sep 17 00:00:00 2001 From: NickrenREN Date: Tue, 25 Jul 2017 23:15:51 +0800 Subject: [PATCH] Add local storage support in Quota --- pkg/quota/evaluator/core/pods.go | 10 ++++++++ pkg/quota/evaluator/core/pods_test.go | 36 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/pkg/quota/evaluator/core/pods.go b/pkg/quota/evaluator/core/pods.go index 5773a4a229..24ae7ee9b1 100644 --- a/pkg/quota/evaluator/core/pods.go +++ b/pkg/quota/evaluator/core/pods.go @@ -42,10 +42,13 @@ import ( var podResources = []api.ResourceName{ api.ResourceCPU, api.ResourceMemory, + api.ResourceEphemeralStorage, api.ResourceRequestsCPU, api.ResourceRequestsMemory, + api.ResourceRequestsEphemeralStorage, api.ResourceLimitsCPU, api.ResourceLimitsMemory, + api.ResourceLimitsEphemeralStorage, api.ResourcePods, } @@ -191,6 +194,13 @@ func podUsageHelper(requests api.ResourceList, limits api.ResourceList) api.Reso if limit, found := limits[api.ResourceMemory]; found { result[api.ResourceLimitsMemory] = limit } + if request, found := requests[api.ResourceEphemeralStorage]; found { + result[api.ResourceEphemeralStorage] = request + result[api.ResourceRequestsEphemeralStorage] = request + } + if limit, found := limits[api.ResourceEphemeralStorage]; found { + result[api.ResourceLimitsEphemeralStorage] = limit + } return result } diff --git a/pkg/quota/evaluator/core/pods_test.go b/pkg/quota/evaluator/core/pods_test.go index 061aa32583..3a93165b81 100644 --- a/pkg/quota/evaluator/core/pods_test.go +++ b/pkg/quota/evaluator/core/pods_test.go @@ -142,6 +142,24 @@ func TestPodEvaluatorUsage(t *testing.T) { api.ResourceMemory: resource.MustParse("1m"), }, }, + "init container local ephemeral storage": { + pod: &api.Pod{ + Spec: api.PodSpec{ + InitContainers: []api.Container{{ + Resources: api.ResourceRequirements{ + Requests: api.ResourceList{api.ResourceEphemeralStorage: resource.MustParse("32Mi")}, + Limits: api.ResourceList{api.ResourceEphemeralStorage: resource.MustParse("64Mi")}, + }, + }}, + }, + }, + usage: api.ResourceList{ + api.ResourceEphemeralStorage: resource.MustParse("32Mi"), + api.ResourceRequestsEphemeralStorage: resource.MustParse("32Mi"), + api.ResourceLimitsEphemeralStorage: resource.MustParse("64Mi"), + api.ResourcePods: resource.MustParse("1"), + }, + }, "container CPU": { pod: &api.Pod{ Spec: api.PodSpec{ @@ -178,6 +196,24 @@ func TestPodEvaluatorUsage(t *testing.T) { api.ResourceMemory: resource.MustParse("1m"), }, }, + "container local ephemeral storage": { + pod: &api.Pod{ + Spec: api.PodSpec{ + Containers: []api.Container{{ + Resources: api.ResourceRequirements{ + Requests: api.ResourceList{api.ResourceEphemeralStorage: resource.MustParse("32Mi")}, + Limits: api.ResourceList{api.ResourceEphemeralStorage: resource.MustParse("64Mi")}, + }, + }}, + }, + }, + usage: api.ResourceList{ + api.ResourceEphemeralStorage: resource.MustParse("32Mi"), + api.ResourceRequestsEphemeralStorage: resource.MustParse("32Mi"), + api.ResourceLimitsEphemeralStorage: resource.MustParse("64Mi"), + api.ResourcePods: resource.MustParse("1"), + }, + }, "init container maximums override sum of containers": { pod: &api.Pod{ Spec: api.PodSpec{