mirror of https://github.com/k3s-io/k3s
Validate LimitRange default and defaultRequest are not supported for limits of type Pod
parent
703130e8e4
commit
9bc48f699d
|
@ -1457,6 +1457,15 @@ func ValidateLimitRange(limitRange *api.LimitRange) errs.ValidationErrorList {
|
|||
keys.Insert(string(k))
|
||||
min[string(k)] = q
|
||||
}
|
||||
|
||||
if limit.Type == api.LimitTypePod {
|
||||
if len(limit.Default) > 0 {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid("spec.limits[%d].default", limit.Default, "Default is not supported when limit type is Pod"))
|
||||
}
|
||||
if len(limit.DefaultRequest) > 0 {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid("spec.limits[%d].defaultRequest", limit.DefaultRequest, "DefaultRequest is not supported when limit type is Pod"))
|
||||
}
|
||||
} else {
|
||||
for k, q := range limit.Default {
|
||||
allErrs = append(allErrs, validateResourceName(string(k), fmt.Sprintf("spec.limits[%d].default[%s]", i, k))...)
|
||||
keys.Insert(string(k))
|
||||
|
@ -1467,6 +1476,8 @@ func ValidateLimitRange(limitRange *api.LimitRange) errs.ValidationErrorList {
|
|||
keys.Insert(string(k))
|
||||
defaultRequests[string(k)] = q
|
||||
}
|
||||
}
|
||||
|
||||
for k := range limit.MaxLimitRequestRatio {
|
||||
allErrs = append(allErrs, validateResourceName(string(k), fmt.Sprintf("spec.limits[%d].maxLimitRequestRatio[%s]", i, k))...)
|
||||
}
|
||||
|
|
|
@ -2910,6 +2910,12 @@ func TestValidateLimitRange(t *testing.T) {
|
|||
Type: api.LimitTypePod,
|
||||
Max: getResourceList("100m", "10000Mi"),
|
||||
Min: getResourceList("5m", "100Mi"),
|
||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
||||
},
|
||||
{
|
||||
Type: api.LimitTypeContainer,
|
||||
Max: getResourceList("100m", "10000Mi"),
|
||||
Min: getResourceList("5m", "100Mi"),
|
||||
Default: getResourceList("50m", "500Mi"),
|
||||
DefaultRequest: getResourceList("10m", "200Mi"),
|
||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
||||
|
@ -2922,7 +2928,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||
spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
{
|
||||
Type: api.LimitTypePod,
|
||||
Type: api.LimitTypeContainer,
|
||||
Max: getResourceList("100m", "10000T"),
|
||||
Min: getResourceList("5m", "100Mi"),
|
||||
Default: getResourceList("50m", "500Mi"),
|
||||
|
@ -2977,6 +2983,32 @@ func TestValidateLimitRange(t *testing.T) {
|
|||
}},
|
||||
"",
|
||||
},
|
||||
"default-limit-type-pod": {
|
||||
api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
{
|
||||
Type: api.LimitTypePod,
|
||||
Max: getResourceList("100m", "10000m"),
|
||||
Min: getResourceList("0m", "100m"),
|
||||
Default: getResourceList("10m", "100m"),
|
||||
},
|
||||
},
|
||||
}},
|
||||
"Default is not supported when limit type is Pod",
|
||||
},
|
||||
"default-request-limit-type-pod": {
|
||||
api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
{
|
||||
Type: api.LimitTypePod,
|
||||
Max: getResourceList("100m", "10000m"),
|
||||
Min: getResourceList("0m", "100m"),
|
||||
DefaultRequest: getResourceList("10m", "100m"),
|
||||
},
|
||||
},
|
||||
}},
|
||||
"DefaultRequest is not supported when limit type is Pod",
|
||||
},
|
||||
"min value 100m is greater than max value 10m": {
|
||||
api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
|
@ -2993,7 +3025,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||
api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
{
|
||||
Type: api.LimitTypePod,
|
||||
Type: api.LimitTypeContainer,
|
||||
Max: getResourceList("1", ""),
|
||||
Min: getResourceList("100m", ""),
|
||||
Default: getResourceList("2000m", ""),
|
||||
|
@ -3006,7 +3038,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||
api.LimitRange{ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: api.LimitRangeSpec{
|
||||
Limits: []api.LimitRangeItem{
|
||||
{
|
||||
Type: api.LimitTypePod,
|
||||
Type: api.LimitTypeContainer,
|
||||
Max: getResourceList("1", ""),
|
||||
Min: getResourceList("100m", ""),
|
||||
DefaultRequest: getResourceList("2000m", ""),
|
||||
|
|
Loading…
Reference in New Issue