@@ -17,6 +17,8 @@ limitations under the License.
17
17
package rest
18
18
19
19
import (
20
+ "fmt"
21
+
20
22
"k8s.io/kubernetes/pkg/api"
21
23
"k8s.io/kubernetes/pkg/api/errors"
22
24
"k8s.io/kubernetes/pkg/api/validation"
@@ -53,19 +55,19 @@ type RESTUpdateStrategy interface {
53
55
}
54
56
55
57
// TODO: add other common fields that require global validation.
56
- func validateCommonFields (obj , old runtime.Object ) field.ErrorList {
58
+ func validateCommonFields (obj , old runtime.Object ) ( field.ErrorList , error ) {
57
59
allErrs := field.ErrorList {}
58
60
objectMeta , err := api .ObjectMetaFor (obj )
59
61
if err != nil {
60
- return append ( allErrs , field . InternalError ( field . NewPath ( " metadata" ) , err ) )
62
+ return nil , fmt . Errorf ( "failed to get new object metadata: %v" , err )
61
63
}
62
64
oldObjectMeta , err := api .ObjectMetaFor (old )
63
65
if err != nil {
64
- return append ( allErrs , field . InternalError ( field . NewPath ( " metadata" ) , err ) )
66
+ return nil , fmt . Errorf ( "failed to get old object metadata: %v" , err )
65
67
}
66
68
allErrs = append (allErrs , validation .ValidateObjectMetaUpdate (objectMeta , oldObjectMeta , field .NewPath ("metadata" ))... )
67
69
68
- return allErrs
70
+ return allErrs , nil
69
71
}
70
72
71
73
// 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
87
89
strategy .PrepareForUpdate (obj , old )
88
90
89
91
// Ensure some common fields, like UID, are validated for all resources.
90
- errs := validateCommonFields (obj , old )
92
+ errs , err := validateCommonFields (obj , old )
93
+ if err != nil {
94
+ return errors .NewInternalError (err )
95
+ }
91
96
92
97
errs = append (errs , strategy .ValidateUpdate (ctx , obj , old )... )
93
98
if len (errs ) > 0 {
0 commit comments