From a3f4d8a506435219f1534151e58ceb4698162891 Mon Sep 17 00:00:00 2001 From: markturansky Date: Mon, 24 Oct 2016 11:01:18 -0400 Subject: [PATCH] loosened validation on pvc limitranger --- pkg/api/validation/validation.go | 7 ++--- pkg/api/validation/validation_test.go | 38 +++++++++++++++++---------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index aa9ef469ae7..cc00a22402c 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -3010,11 +3010,8 @@ func ValidateLimitRange(limitRange *api.LimitRange) field.ErrorList { if limit.Type == api.LimitTypePersistentVolumeClaim { _, minQuantityFound := limit.Min[api.ResourceStorage] _, maxQuantityFound := limit.Max[api.ResourceStorage] - if !minQuantityFound { - allErrs = append(allErrs, field.Required(idxPath.Child("min"), "minimum storage value is required")) - } - if !maxQuantityFound { - allErrs = append(allErrs, field.Required(idxPath.Child("max"), "maximum storage value is required")) + if !minQuantityFound && !maxQuantityFound { + allErrs = append(allErrs, field.Required(idxPath.Child("limits"), "either minimum or maximum storage value is required, but neither was provided")) } } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 664290953c3..85690bf9c71 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -6627,6 +6627,28 @@ func TestValidateLimitRange(t *testing.T) { }, }, }, + { + name: "pvc-min-only", + spec: api.LimitRangeSpec{ + Limits: []api.LimitRangeItem{ + { + Type: api.LimitTypePersistentVolumeClaim, + Min: getStorageResourceList("5Gi"), + }, + }, + }, + }, + { + name: "pvc-max-only", + spec: api.LimitRangeSpec{ + Limits: []api.LimitRangeItem{ + { + Type: api.LimitTypePersistentVolumeClaim, + Max: getStorageResourceList("10Gi"), + }, + }, + }, + }, { name: "all-fields-valid-big-numbers", spec: api.LimitRangeSpec{ @@ -6834,27 +6856,15 @@ func TestValidateLimitRange(t *testing.T) { }}, "must be a standard limit type or fully qualified", }, - "invalid missing required min field": { + "min and max values missing, one required": { api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{ Limits: []api.LimitRangeItem{ { Type: api.LimitTypePersistentVolumeClaim, - Max: getStorageResourceList("10000T"), }, }, }}, - "minimum storage value is required", - }, - "invalid missing required max field": { - api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{ - Limits: []api.LimitRangeItem{ - { - Type: api.LimitTypePersistentVolumeClaim, - Min: getStorageResourceList("10000T"), - }, - }, - }}, - "maximum storage value is required", + "either minimum or maximum storage value is required, but neither was provided", }, "invalid min greater than max": { api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{