mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
Kill TooLongMaxLength() in favor of TooLong()
This commit is contained in:
parent
50998de605
commit
4d0e1c8fd4
@ -218,7 +218,7 @@ func validateJobSpec(spec *batch.JobSpec, fldPath *field.Path, opts apivalidatio
|
|||||||
if spec.ManagedBy != nil {
|
if spec.ManagedBy != nil {
|
||||||
allErrs = append(allErrs, apimachineryvalidation.IsDomainPrefixedPath(fldPath.Child("managedBy"), *spec.ManagedBy)...)
|
allErrs = append(allErrs, apimachineryvalidation.IsDomainPrefixedPath(fldPath.Child("managedBy"), *spec.ManagedBy)...)
|
||||||
if len(*spec.ManagedBy) > maxManagedByLength {
|
if len(*spec.ManagedBy) > maxManagedByLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath.Child("managedBy"), *spec.ManagedBy, maxManagedByLength))
|
allErrs = append(allErrs, field.TooLong(fldPath.Child("managedBy"), *spec.ManagedBy, maxManagedByLength))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if spec.CompletionMode != nil {
|
if spec.CompletionMode != nil {
|
||||||
|
@ -436,7 +436,7 @@ func TestValidateJob(t *testing.T) {
|
|||||||
opts JobValidationOptions
|
opts JobValidationOptions
|
||||||
job batch.Job
|
job batch.Job
|
||||||
}{
|
}{
|
||||||
`spec.managedBy: Too long: may not be longer than 63`: {
|
`spec.managedBy: Too long: may not be more than 63 bytes`: {
|
||||||
opts: JobValidationOptions{RequirePrefixedLabels: true},
|
opts: JobValidationOptions{RequirePrefixedLabels: true},
|
||||||
job: batch.Job{
|
job: batch.Job{
|
||||||
ObjectMeta: validJobObjectMeta,
|
ObjectMeta: validJobObjectMeta,
|
||||||
@ -519,7 +519,7 @@ func TestValidateJob(t *testing.T) {
|
|||||||
},
|
},
|
||||||
opts: JobValidationOptions{RequirePrefixedLabels: true},
|
opts: JobValidationOptions{RequirePrefixedLabels: true},
|
||||||
},
|
},
|
||||||
`spec.successPolicy.rules[0].succeededIndexes: Too long: must have at most 65536 bytes`: {
|
`spec.successPolicy.rules[0].succeededIndexes: Too long: may not be more than 65536 bytes`: {
|
||||||
job: batch.Job{
|
job: batch.Job{
|
||||||
ObjectMeta: validJobObjectMeta,
|
ObjectMeta: validJobObjectMeta,
|
||||||
Spec: batch.JobSpec{
|
Spec: batch.JobSpec{
|
||||||
|
@ -4758,7 +4758,7 @@ func ValidateAppArmorProfileField(profile *core.AppArmorProfile, fldPath *field.
|
|||||||
|
|
||||||
const maxLocalhostProfileLength = 4095 // PATH_MAX - 1
|
const maxLocalhostProfileLength = 4095 // PATH_MAX - 1
|
||||||
if len(*profile.LocalhostProfile) > maxLocalhostProfileLength {
|
if len(*profile.LocalhostProfile) > maxLocalhostProfileLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath.Child("localhostProfile"), *profile.LocalhostProfile, maxLocalhostProfileLength))
|
allErrs = append(allErrs, field.TooLong(fldPath.Child("localhostProfile"), *profile.LocalhostProfile, maxLocalhostProfileLength))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11926,7 +11926,7 @@ func TestValidatePod(t *testing.T) {
|
|||||||
),
|
),
|
||||||
},
|
},
|
||||||
"too long AppArmor localhost profile": {
|
"too long AppArmor localhost profile": {
|
||||||
expectedError: "Too long: may not be longer than 4095",
|
expectedError: "Too long: may not be more than 4095 bytes",
|
||||||
spec: *podtest.MakePod("123",
|
spec: *podtest.MakePod("123",
|
||||||
podtest.SetSecurityContext(&core.PodSecurityContext{
|
podtest.SetSecurityContext(&core.PodSecurityContext{
|
||||||
AppArmorProfile: &core.AppArmorProfile{
|
AppArmorProfile: &core.AppArmorProfile{
|
||||||
|
@ -52,7 +52,7 @@ func validatePoolName(name string, fldPath *field.Path) field.ErrorList {
|
|||||||
allErrs = append(allErrs, field.Required(fldPath, ""))
|
allErrs = append(allErrs, field.Required(fldPath, ""))
|
||||||
} else {
|
} else {
|
||||||
if len(name) > resource.PoolNameMaxLength {
|
if len(name) > resource.PoolNameMaxLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath, name, resource.PoolNameMaxLength))
|
allErrs = append(allErrs, field.TooLong(fldPath, name, resource.PoolNameMaxLength))
|
||||||
}
|
}
|
||||||
parts := strings.Split(name, "/")
|
parts := strings.Split(name, "/")
|
||||||
for _, part := range parts {
|
for _, part := range parts {
|
||||||
@ -168,7 +168,7 @@ func validateCELSelector(celSelector resource.CELDeviceSelector, fldPath *field.
|
|||||||
envType = environment.StoredExpressions
|
envType = environment.StoredExpressions
|
||||||
}
|
}
|
||||||
if len(celSelector.Expression) > resource.CELSelectorExpressionMaxLength {
|
if len(celSelector.Expression) > resource.CELSelectorExpressionMaxLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath.Child("expression"), "<value omitted>", resource.CELSelectorExpressionMaxLength))
|
allErrs = append(allErrs, field.TooLong(fldPath.Child("expression"), "<value omitted>", resource.CELSelectorExpressionMaxLength))
|
||||||
// Don't bother compiling too long expressions.
|
// Don't bother compiling too long expressions.
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
@ -561,7 +561,7 @@ func validateDeviceAttribute(attribute resource.DeviceAttribute, fldPath *field.
|
|||||||
}
|
}
|
||||||
if attribute.StringValue != nil {
|
if attribute.StringValue != nil {
|
||||||
if len(*attribute.StringValue) > resource.DeviceAttributeMaxValueLength {
|
if len(*attribute.StringValue) > resource.DeviceAttributeMaxValueLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath.Child("string"), *attribute.StringValue, resource.DeviceAttributeMaxValueLength))
|
allErrs = append(allErrs, field.TooLong(fldPath.Child("string"), *attribute.StringValue, resource.DeviceAttributeMaxValueLength))
|
||||||
}
|
}
|
||||||
numFields++
|
numFields++
|
||||||
}
|
}
|
||||||
@ -571,7 +571,7 @@ func validateDeviceAttribute(attribute resource.DeviceAttribute, fldPath *field.
|
|||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("version"), *attribute.VersionValue, "must be a string compatible with semver.org spec 2.0.0"))
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("version"), *attribute.VersionValue, "must be a string compatible with semver.org spec 2.0.0"))
|
||||||
}
|
}
|
||||||
if len(*attribute.VersionValue) > resource.DeviceAttributeMaxValueLength {
|
if len(*attribute.VersionValue) > resource.DeviceAttributeMaxValueLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath.Child("version"), *attribute.VersionValue, resource.DeviceAttributeMaxValueLength))
|
allErrs = append(allErrs, field.TooLong(fldPath.Child("version"), *attribute.VersionValue, resource.DeviceAttributeMaxValueLength))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -628,7 +628,7 @@ func validateFullyQualifiedName(name resource.FullyQualifiedName, fldPath *field
|
|||||||
func validateCIdentifier(id string, fldPath *field.Path) field.ErrorList {
|
func validateCIdentifier(id string, fldPath *field.Path) field.ErrorList {
|
||||||
var allErrs field.ErrorList
|
var allErrs field.ErrorList
|
||||||
if len(id) > resource.DeviceMaxIDLength {
|
if len(id) > resource.DeviceMaxIDLength {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath, id, resource.DeviceMaxIDLength))
|
allErrs = append(allErrs, field.TooLong(fldPath, id, resource.DeviceMaxIDLength))
|
||||||
}
|
}
|
||||||
for _, msg := range validation.IsCIdentifier(id) {
|
for _, msg := range validation.IsCIdentifier(id) {
|
||||||
allErrs = append(allErrs, field.TypeInvalid(fldPath, id, msg))
|
allErrs = append(allErrs, field.TypeInvalid(fldPath, id, msg))
|
||||||
@ -649,7 +649,7 @@ func validateSlice[T any](slice []T, maxSize int, validateItem func(T, *field.Pa
|
|||||||
// Dumping the entire field into the error message is likely to be too long,
|
// Dumping the entire field into the error message is likely to be too long,
|
||||||
// in particular when it is already beyond the maximum size. Instead this
|
// in particular when it is already beyond the maximum size. Instead this
|
||||||
// just shows the number of entries.
|
// just shows the number of entries.
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath, len(slice), maxSize))
|
allErrs = append(allErrs, field.TooMany(fldPath, len(slice), maxSize))
|
||||||
}
|
}
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
@ -685,7 +685,7 @@ func stringKey(item string) (string, string) {
|
|||||||
func validateMap[K ~string, T any](m map[K]T, maxSize int, validateKey func(K, *field.Path) field.ErrorList, validateItem func(T, *field.Path) field.ErrorList, fldPath *field.Path) field.ErrorList {
|
func validateMap[K ~string, T any](m map[K]T, maxSize int, validateKey func(K, *field.Path) field.ErrorList, validateItem func(T, *field.Path) field.ErrorList, fldPath *field.Path) field.ErrorList {
|
||||||
var allErrs field.ErrorList
|
var allErrs field.ErrorList
|
||||||
if maxSize >= 0 && len(m) > maxSize {
|
if maxSize >= 0 && len(m) > maxSize {
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(fldPath, len(m), maxSize))
|
allErrs = append(allErrs, field.TooMany(fldPath, len(m), maxSize))
|
||||||
}
|
}
|
||||||
for key, item := range m {
|
for key, item := range m {
|
||||||
allErrs = append(allErrs, validateKey(key, fldPath)...)
|
allErrs = append(allErrs, validateKey(key, fldPath)...)
|
||||||
|
@ -322,7 +322,7 @@ func TestValidateClaim(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"CEL-length": {
|
"CEL-length": {
|
||||||
wantFailures: field.ErrorList{
|
wantFailures: field.ErrorList{
|
||||||
field.TooLongMaxLength(field.NewPath("spec", "devices", "requests").Index(1).Child("selectors").Index(1).Child("cel", "expression"), "<value omitted>", resource.CELSelectorExpressionMaxLength),
|
field.TooLong(field.NewPath("spec", "devices", "requests").Index(1).Child("selectors").Index(1).Child("cel", "expression"), "<value omitted>", resource.CELSelectorExpressionMaxLength),
|
||||||
},
|
},
|
||||||
claim: func() *resource.ResourceClaim {
|
claim: func() *resource.ResourceClaim {
|
||||||
claim := testClaim(goodName, goodNS, validClaimSpec)
|
claim := testClaim(goodName, goodNS, validClaimSpec)
|
||||||
@ -552,7 +552,7 @@ func TestValidateClaimStatusUpdate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
"invalid-reserved-for-too-large": {
|
"invalid-reserved-for-too-large": {
|
||||||
wantFailures: field.ErrorList{field.TooLongMaxLength(field.NewPath("status", "reservedFor"), resource.ResourceClaimReservedForMaxSize+1, resource.ResourceClaimReservedForMaxSize)},
|
wantFailures: field.ErrorList{field.TooMany(field.NewPath("status", "reservedFor"), resource.ResourceClaimReservedForMaxSize+1, resource.ResourceClaimReservedForMaxSize)},
|
||||||
oldClaim: validAllocatedClaim,
|
oldClaim: validAllocatedClaim,
|
||||||
update: func(claim *resource.ResourceClaim) *resource.ResourceClaim {
|
update: func(claim *resource.ResourceClaim) *resource.ResourceClaim {
|
||||||
for i := 0; i < resource.ResourceClaimReservedForMaxSize+1; i++ {
|
for i := 0; i < resource.ResourceClaimReservedForMaxSize+1; i++ {
|
||||||
|
@ -381,7 +381,7 @@ func TestWriteConfigMapDeleted(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
err := writeConfigMap(client.CoreV1(), cm)
|
err := writeConfigMap(client.CoreV1(), cm)
|
||||||
if err == nil || err.Error() != `ConfigMap "extension-apiserver-authentication" is invalid: []: Too long: must have at most 1048576 bytes` {
|
if err == nil || err.Error() != `ConfigMap "extension-apiserver-authentication" is invalid: []: Too long: may not be more than 1048576 bytes` {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if len(client.Actions()) != 2 {
|
if len(client.Actions()) != 2 {
|
||||||
|
@ -190,7 +190,7 @@ func kubeOpenAPIResultToFieldErrors(fldPath *field.Path, result *validate.Result
|
|||||||
if i, ok := err.Valid.(int64); ok {
|
if i, ok := err.Valid.(int64); ok {
|
||||||
max = i
|
max = i
|
||||||
}
|
}
|
||||||
allErrs = append(allErrs, field.TooLongMaxLength(errPath, value, int(max)))
|
allErrs = append(allErrs, field.TooLong(errPath, value, int(max)))
|
||||||
|
|
||||||
case openapierrors.MaxItemsFailCode:
|
case openapierrors.MaxItemsFailCode:
|
||||||
actual := int64(-1)
|
actual := int64(-1)
|
||||||
|
@ -594,7 +594,7 @@ func TestValidateCustomResource(t *testing.T) {
|
|||||||
},
|
},
|
||||||
failingObjects: []failingObject{
|
failingObjects: []failingObject{
|
||||||
{object: map[string]interface{}{"fieldX": "abc"}, expectErrs: []string{
|
{object: map[string]interface{}{"fieldX": "abc"}, expectErrs: []string{
|
||||||
`fieldX: Too long: may not be longer than 2`,
|
`fieldX: Too long: may not be more than 2 bytes`,
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -223,25 +223,23 @@ func Forbidden(field *Path, detail string) *Error {
|
|||||||
// TooLong returns a *Error indicating "too long". This is used to
|
// TooLong returns a *Error indicating "too long". This is used to
|
||||||
// report that the given value is too long. This is similar to
|
// report that the given value is too long. This is similar to
|
||||||
// Invalid, but the returned error will not include the too-long
|
// Invalid, but the returned error will not include the too-long
|
||||||
// value.
|
// value. If maxLength is negative, it will be included in the message.
|
||||||
func TooLong(field *Path, value interface{}, maxLength int) *Error {
|
func TooLong(field *Path, value interface{}, maxLength int) *Error {
|
||||||
return &Error{ErrorTypeTooLong, field.String(), value, fmt.Sprintf("must have at most %d bytes", maxLength)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TooLongMaxLength returns a *Error indicating "too long". This is used to
|
|
||||||
// report that the given value is too long. This is similar to
|
|
||||||
// Invalid, but the returned error will not include the too-long
|
|
||||||
// value. If maxLength is negative, no max length will be included in the message.
|
|
||||||
func TooLongMaxLength(field *Path, value interface{}, maxLength int) *Error {
|
|
||||||
var msg string
|
var msg string
|
||||||
if maxLength >= 0 {
|
if maxLength >= 0 {
|
||||||
msg = fmt.Sprintf("may not be longer than %d", maxLength)
|
msg = fmt.Sprintf("may not be more than %d bytes", maxLength)
|
||||||
} else {
|
} else {
|
||||||
msg = "value is too long"
|
msg = "value is too long"
|
||||||
}
|
}
|
||||||
return &Error{ErrorTypeTooLong, field.String(), value, msg}
|
return &Error{ErrorTypeTooLong, field.String(), value, msg}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TooLongMaxLength returns a *Error indicating "too long".
|
||||||
|
// Deprecated: Use TooLong instead.
|
||||||
|
func TooLongMaxLength(field *Path, value interface{}, maxLength int) *Error {
|
||||||
|
return TooLong(field, "", maxLength)
|
||||||
|
}
|
||||||
|
|
||||||
// TooMany returns a *Error indicating "too many". This is used to
|
// TooMany returns a *Error indicating "too many". This is used to
|
||||||
// report that a given list has too many items. This is similar to TooLong,
|
// report that a given list has too many items. This is similar to TooLong,
|
||||||
// but the returned error indicates quantity instead of length.
|
// but the returned error indicates quantity instead of length.
|
||||||
|
@ -338,7 +338,7 @@ func TestObjectSizeResponses(t *testing.T) {
|
|||||||
expectedMsgFor1MB := `etcdserver: request is too large`
|
expectedMsgFor1MB := `etcdserver: request is too large`
|
||||||
expectedMsgFor2MB := `rpc error: code = ResourceExhausted desc = trying to send message larger than max`
|
expectedMsgFor2MB := `rpc error: code = ResourceExhausted desc = trying to send message larger than max`
|
||||||
expectedMsgFor3MB := `Request entity too large: limit is 3145728`
|
expectedMsgFor3MB := `Request entity too large: limit is 3145728`
|
||||||
expectedMsgForLargeAnnotation := `metadata.annotations: Too long: must have at most 262144 bytes`
|
expectedMsgForLargeAnnotation := `metadata.annotations: Too long: may not be more than 262144 bytes`
|
||||||
|
|
||||||
deployment1 := constructBody("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DeploymentMegabyteSize, "labels", t) // >1.5 MB file
|
deployment1 := constructBody("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DeploymentMegabyteSize, "labels", t) // >1.5 MB file
|
||||||
deployment2 := constructBody("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DeploymentTwoMegabyteSize, "labels", t) // >2 MB file
|
deployment2 := constructBody("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DeploymentTwoMegabyteSize, "labels", t) // >2 MB file
|
||||||
|
Loading…
Reference in New Issue
Block a user