func (v *RuntimeObjectsValidator) ValidateUpdate(obj, old runtime.Object) fielderrors.ValidationErrorList { if obj == nil && old == nil { return fielderrors.ValidationErrorList{} } if newType, oldType := reflect.TypeOf(obj), reflect.TypeOf(old); newType != oldType { return fielderrors.ValidationErrorList{validation.NewInvalidTypeError(oldType.Kind(), newType.Kind(), "runtime.Object")} } allErrs := fielderrors.ValidationErrorList{} specificValidationInfo, err := v.getSpecificValidationInfo(obj) if err != nil { allErrs = append(allErrs, err) return allErrs } allErrs = append(allErrs, specificValidationInfo.Validator.ValidateUpdate(obj, old)...) // no errors so far, make sure that the new object is actually valid against the original validator if len(allErrs) == 0 { allErrs = append(allErrs, specificValidationInfo.Validator.Validate(obj)...) } return allErrs }
func (v *RuntimeObjectsValidator) ValidateUpdate(obj, old runtime.Object) field.ErrorList { if obj == nil && old == nil { return field.ErrorList{} } if newType, oldType := reflect.TypeOf(obj), reflect.TypeOf(old); newType != oldType { return field.ErrorList{field.Invalid(field.NewPath("kind"), newType.Kind(), validation.NewInvalidTypeError(oldType.Kind(), newType.Kind(), "runtime.Object").Error())} } allErrs := field.ErrorList{} specificValidationInfo, err := v.getSpecificValidationInfo(obj) if err != nil { if fieldErr, ok := err.(*field.Error); ok { allErrs = append(allErrs, fieldErr) } else { allErrs = append(allErrs, field.InternalError(nil, err)) } return allErrs } allErrs = append(allErrs, specificValidationInfo.Validator.ValidateUpdate(obj, old)...) // no errors so far, make sure that the new object is actually valid against the original validator if len(allErrs) == 0 { allErrs = append(allErrs, specificValidationInfo.Validator.Validate(obj)...) } return allErrs }