From 9745d6c11927686d99b80af45e4a631e155ebf80 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 15 May 2018 19:35:05 +0200 Subject: [PATCH] apiextensions: only create patch reference object for smp path --- .../apiserver/pkg/endpoints/handlers/patch.go | 20 ++++++++----------- .../pkg/endpoints/handlers/rest_test.go | 2 -- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go index 520ed0f5e79..e94d453204b 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go @@ -82,12 +82,6 @@ func PatchResource(r rest.Patcher, scope RequestScope, admit admission.Interface ctx := req.Context() ctx = request.WithNamespace(ctx, namespace) - schemaReferenceObj, err := scope.UnsafeConvertor.ConvertToVersion(r.New(), scope.Kind.GroupVersion()) - if err != nil { - scope.err(err, w, req) - return - } - patchJS, err := readBody(req) if err != nil { scope.err(err, w, req) @@ -134,8 +128,6 @@ func PatchResource(r rest.Patcher, scope RequestScope, admit admission.Interface timeout: timeout, - schemaReferenceObj: schemaReferenceObj, - restPatcher: r, name: name, patchType: patchType, @@ -191,9 +183,6 @@ type patcher struct { timeout time.Duration - // Schema - schemaReferenceObj runtime.Object - // Operation information restPatcher rest.Patcher name string @@ -263,6 +252,9 @@ func (p *jsonPatcher) applyJSPatch(versionedJS []byte) (patchedJS []byte, retErr type smpPatcher struct { *patcher + + // Schema + schemaReferenceObj runtime.Object } func (p *smpPatcher) applyPatchToCurrentObject(currentObject runtime.Object) (runtime.Object, error) { @@ -352,7 +344,11 @@ func (p *patcher) patchResource(ctx context.Context) (runtime.Object, error) { case types.JSONPatchType, types.MergePatchType: p.mechanism = &jsonPatcher{patcher: p} case types.StrategicMergePatchType: - p.mechanism = &smpPatcher{patcher: p} + schemaReferenceObj, err := p.unsafeConvertor.ConvertToVersion(p.restPatcher.New(), p.kind.GroupVersion()) + if err != nil { + return nil, err + } + p.mechanism = &smpPatcher{patcher: p, schemaReferenceObj: schemaReferenceObj} default: return nil, fmt.Errorf("%v: unimplemented patch type", p.patchType) } diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go index aba84a0a7ed..549e45438ae 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go @@ -394,8 +394,6 @@ func (tc *patchTestCase) Run(t *testing.T) { timeout: 1 * time.Second, - schemaReferenceObj: schemaReferenceObj, - restPatcher: testPatcher, name: name, patchType: patchType,