diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index e0028ca5d..7ea0ffba9 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -588,7 +588,7 @@ }, { "ImportPath": "k8s.io/api", - "Rev": "812149543c99" + "Rev": "bb84ecda436d" }, { "ImportPath": "k8s.io/apimachinery", diff --git a/go.mod b/go.mod index 9a047b3cb..f1b868be3 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( gopkg.in/square/go-jose.v2 v2.2.2 gopkg.in/yaml.v2 v2.2.8 gotest.tools v2.2.0+incompatible // indirect - k8s.io/api v0.0.0-20200130072251-812149543c99 + k8s.io/api v0.0.0-20200131032352-bb84ecda436d k8s.io/apimachinery v0.0.0-20200131032148-f30c02351710 k8s.io/client-go v0.0.0-20200130072523-1ae532aad6ad k8s.io/component-base v0.0.0-20200131033216-6bcd25baa4f4 @@ -58,7 +58,7 @@ require ( replace ( golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 - k8s.io/api => k8s.io/api v0.0.0-20200130072251-812149543c99 + k8s.io/api => k8s.io/api v0.0.0-20200131032352-bb84ecda436d k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200131032148-f30c02351710 k8s.io/client-go => k8s.io/client-go v0.0.0-20200130072523-1ae532aad6ad k8s.io/component-base => k8s.io/component-base v0.0.0-20200131033216-6bcd25baa4f4 diff --git a/go.sum b/go.sum index 9e763c449..ec2eb53c2 100644 --- a/go.sum +++ b/go.sum @@ -361,7 +361,7 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.0.0-20200130072251-812149543c99/go.mod h1:5hz1MDQLlgYnKttI81z5nZ8LGQtHE6oI6Ry3XcXnVAI= +k8s.io/api v0.0.0-20200131032352-bb84ecda436d/go.mod h1:C9pVgJPZJ6Vya/pyuzhd4qytMYQjdxSscnExZvbavLo= k8s.io/apimachinery v0.0.0-20200131032148-f30c02351710/go.mod h1:f7PPp70QzCGGLJHvCtiN2lePa9CdVddeAdL5w7NdrrU= k8s.io/client-go v0.0.0-20200130072523-1ae532aad6ad/go.mod h1:1IzWcSqMJwg2THGQsF6Bbx340lRBq6vB2zHCzcnavlo= k8s.io/component-base v0.0.0-20200131033216-6bcd25baa4f4/go.mod h1:3ihYk7gL8sAstCXPeoTf9MQ5V54QbAC5KWTNVAkDJjY= diff --git a/pkg/endpoints/handlers/create.go b/pkg/endpoints/handlers/create.go index 286e4aad5..dd9b5e9d9 100644 --- a/pkg/endpoints/handlers/create.go +++ b/pkg/endpoints/handlers/create.go @@ -137,31 +137,26 @@ func createHandler(r rest.NamedCreater, scope *RequestScope, admit admission.Int if len(name) == 0 { _, name, _ = scope.Namer.ObjectName(obj) } - admissionAttributes := admission.NewAttributesRecord(obj, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Create, options, dryrun.IsDryRun(options.DryRun), userInfo) - if mutatingAdmission, ok := admit.(admission.MutationInterface); ok && mutatingAdmission.Handles(admission.Create) { - err = mutatingAdmission.Admit(ctx, admissionAttributes, scope) - if err != nil { - scope.err(err, w, req) - return - } - } - - if scope.FieldManager != nil { - liveObj, err := scope.Creater.New(scope.Kind) - if err != nil { - scope.err(fmt.Errorf("failed to create new object (Create for %v): %v", scope.Kind, err), w, req) - return - } - - obj, err = scope.FieldManager.Update(liveObj, obj, managerOrUserAgent(options.FieldManager, req.UserAgent())) - if err != nil { - scope.err(fmt.Errorf("failed to update object (Create for %v) managed fields: %v", scope.Kind, err), w, req) - return - } - } trace.Step("About to store object in database") result, err := finishRequest(timeout, func() (runtime.Object, error) { + if scope.FieldManager != nil { + liveObj, err := scope.Creater.New(scope.Kind) + if err != nil { + return nil, fmt.Errorf("failed to create new object (Create for %v): %v", scope.Kind, err) + } + obj, err = scope.FieldManager.Update(liveObj, obj, managerOrUserAgent(options.FieldManager, req.UserAgent())) + if err != nil { + return nil, fmt.Errorf("failed to update object (Create for %v) managed fields: %v", scope.Kind, err) + } + } + + admissionAttributes := admission.NewAttributesRecord(obj, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Create, options, dryrun.IsDryRun(options.DryRun), userInfo) + if mutatingAdmission, ok := admit.(admission.MutationInterface); ok && mutatingAdmission.Handles(admission.Create) { + if err := mutatingAdmission.Admit(ctx, admissionAttributes, scope); err != nil { + return nil, err + } + } return r.Create( ctx, name,