mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-02 08:17:26 +00:00
Internal errors are internal
This commit is contained in:
parent
7fb8f60735
commit
872faffdac
@ -17,6 +17,8 @@ limitations under the License.
|
|||||||
package rest
|
package rest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/validation"
|
"k8s.io/kubernetes/pkg/api/validation"
|
||||||
@ -53,19 +55,19 @@ type RESTUpdateStrategy interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: add other common fields that require global validation.
|
// TODO: add other common fields that require global validation.
|
||||||
func validateCommonFields(obj, old runtime.Object) field.ErrorList {
|
func validateCommonFields(obj, old runtime.Object) (field.ErrorList, error) {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
objectMeta, err := api.ObjectMetaFor(obj)
|
objectMeta, err := api.ObjectMetaFor(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return append(allErrs, field.InternalError(field.NewPath("metadata"), err))
|
return nil, fmt.Errorf("failed to get new object metadata: %v", err)
|
||||||
}
|
}
|
||||||
oldObjectMeta, err := api.ObjectMetaFor(old)
|
oldObjectMeta, err := api.ObjectMetaFor(old)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return append(allErrs, field.InternalError(field.NewPath("metadata"), err))
|
return nil, fmt.Errorf("failed to get old object metadata: %v", err)
|
||||||
}
|
}
|
||||||
allErrs = append(allErrs, validation.ValidateObjectMetaUpdate(objectMeta, oldObjectMeta, field.NewPath("metadata"))...)
|
allErrs = append(allErrs, validation.ValidateObjectMetaUpdate(objectMeta, oldObjectMeta, field.NewPath("metadata"))...)
|
||||||
|
|
||||||
return allErrs
|
return allErrs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// BeforeUpdate ensures that common operations for all resources are performed on update. It only returns
|
// BeforeUpdate ensures that common operations for all resources are performed on update. It only returns
|
||||||
@ -87,7 +89,10 @@ func BeforeUpdate(strategy RESTUpdateStrategy, ctx api.Context, obj, old runtime
|
|||||||
strategy.PrepareForUpdate(obj, old)
|
strategy.PrepareForUpdate(obj, old)
|
||||||
|
|
||||||
// Ensure some common fields, like UID, are validated for all resources.
|
// Ensure some common fields, like UID, are validated for all resources.
|
||||||
errs := validateCommonFields(obj, old)
|
errs, err := validateCommonFields(obj, old)
|
||||||
|
if err != nil {
|
||||||
|
return errors.NewInternalError(err)
|
||||||
|
}
|
||||||
|
|
||||||
errs = append(errs, strategy.ValidateUpdate(ctx, obj, old)...)
|
errs = append(errs, strategy.ValidateUpdate(ctx, obj, old)...)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
|
@ -135,7 +135,7 @@ func (r *BindingREST) Create(ctx api.Context, obj runtime.Object) (out runtime.O
|
|||||||
// TODO: move me to a binding strategy
|
// TODO: move me to a binding strategy
|
||||||
if len(binding.Target.Kind) != 0 && binding.Target.Kind != "Node" {
|
if len(binding.Target.Kind) != 0 && binding.Target.Kind != "Node" {
|
||||||
// TODO: When validation becomes versioned, this gets more complicated.
|
// TODO: When validation becomes versioned, this gets more complicated.
|
||||||
return nil, errors.NewInvalid("binding", binding.Name, field.ErrorList{field.NotSupported(field.NewPath("target", "kind"), binding.Target.Kind, []string{"Node", ""})})
|
return nil, errors.NewInvalid("binding", binding.Name, field.ErrorList{field.NotSupported(field.NewPath("target", "kind"), binding.Target.Kind, []string{"Node", "<empty>"})})
|
||||||
}
|
}
|
||||||
if len(binding.Target.Name) == 0 {
|
if len(binding.Target.Name) == 0 {
|
||||||
// TODO: When validation becomes versioned, this gets more complicated.
|
// TODO: When validation becomes versioned, this gets more complicated.
|
||||||
|
Loading…
Reference in New Issue
Block a user