Skip to content

Commit fc90261

Browse files
authored
Merge pull request kubernetes#87671 from jennybuckley/create-adm
Move mutating admission step into finishRequest in the create handler
2 parents d502d3d + 9bd4228 commit fc90261

File tree

1 file changed

+16
-21
lines changed
  • staging/src/k8s.io/apiserver/pkg/endpoints/handlers

1 file changed

+16
-21
lines changed

staging/src/k8s.io/apiserver/pkg/endpoints/handlers/create.go

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -137,31 +137,26 @@ func createHandler(r rest.NamedCreater, scope *RequestScope, admit admission.Int
137137
if len(name) == 0 {
138138
_, name, _ = scope.Namer.ObjectName(obj)
139139
}
140-
admissionAttributes := admission.NewAttributesRecord(obj, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Create, options, dryrun.IsDryRun(options.DryRun), userInfo)
141-
if mutatingAdmission, ok := admit.(admission.MutationInterface); ok && mutatingAdmission.Handles(admission.Create) {
142-
err = mutatingAdmission.Admit(ctx, admissionAttributes, scope)
143-
if err != nil {
144-
scope.err(err, w, req)
145-
return
146-
}
147-
}
148140

149-
if scope.FieldManager != nil {
150-
liveObj, err := scope.Creater.New(scope.Kind)
151-
if err != nil {
152-
scope.err(fmt.Errorf("failed to create new object (Create for %v): %v", scope.Kind, err), w, req)
153-
return
141+
trace.Step("About to store object in database")
142+
result, err := finishRequest(timeout, func() (runtime.Object, error) {
143+
if scope.FieldManager != nil {
144+
liveObj, err := scope.Creater.New(scope.Kind)
145+
if err != nil {
146+
return nil, fmt.Errorf("failed to create new object (Create for %v): %v", scope.Kind, err)
147+
}
148+
obj, err = scope.FieldManager.Update(liveObj, obj, managerOrUserAgent(options.FieldManager, req.UserAgent()))
149+
if err != nil {
150+
return nil, fmt.Errorf("failed to update object (Create for %v) managed fields: %v", scope.Kind, err)
151+
}
154152
}
155153

156-
obj, err = scope.FieldManager.Update(liveObj, obj, managerOrUserAgent(options.FieldManager, req.UserAgent()))
157-
if err != nil {
158-
scope.err(fmt.Errorf("failed to update object (Create for %v) managed fields: %v", scope.Kind, err), w, req)
159-
return
154+
admissionAttributes := admission.NewAttributesRecord(obj, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Create, options, dryrun.IsDryRun(options.DryRun), userInfo)
155+
if mutatingAdmission, ok := admit.(admission.MutationInterface); ok && mutatingAdmission.Handles(admission.Create) {
156+
if err := mutatingAdmission.Admit(ctx, admissionAttributes, scope); err != nil {
157+
return nil, err
158+
}
160159
}
161-
}
162-
163-
trace.Step("About to store object in database")
164-
result, err := finishRequest(timeout, func() (runtime.Object, error) {
165160
return r.Create(
166161
ctx,
167162
name,

0 commit comments

Comments
 (0)