diff --git a/pkg/endpoints/apiserver_test.go b/pkg/endpoints/apiserver_test.go index 78ef76447..28aaa603d 100644 --- a/pkg/endpoints/apiserver_test.go +++ b/pkg/endpoints/apiserver_test.go @@ -245,6 +245,7 @@ func handleInternal(storage map[string]rest.Storage, admissionControl admission. Creater: scheme, Convertor: scheme, + UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme), Defaulter: scheme, Typer: scheme, Linker: selfLinker, @@ -3170,6 +3171,7 @@ func TestParentResourceIsRequired(t *testing.T) { Root: "/" + prefix, Creater: scheme, Convertor: scheme, + UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme), Defaulter: scheme, Typer: scheme, Linker: selfLinker, @@ -3197,12 +3199,13 @@ func TestParentResourceIsRequired(t *testing.T) { "simple": &SimpleRESTStorage{}, "simple/sub": storage, }, - Root: "/" + prefix, - Creater: scheme, - Convertor: scheme, - Defaulter: scheme, - Typer: scheme, - Linker: selfLinker, + Root: "/" + prefix, + Creater: scheme, + Convertor: scheme, + UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme), + Defaulter: scheme, + Typer: scheme, + Linker: selfLinker, Admit: admissionControl, @@ -3822,11 +3825,12 @@ func TestXGSubresource(t *testing.T) { group := APIGroupVersion{ Storage: storage, - Creater: scheme, - Convertor: scheme, - Defaulter: scheme, - Typer: scheme, - Linker: selfLinker, + Creater: scheme, + Convertor: scheme, + UnsafeConvertor: runtime.UnsafeObjectConvertor(scheme), + Defaulter: scheme, + Typer: scheme, + Linker: selfLinker, ParameterCodec: parameterCodec, diff --git a/pkg/endpoints/handlers/patch.go b/pkg/endpoints/handlers/patch.go index 0b6496c44..0ed6dee7c 100644 --- a/pkg/endpoints/handlers/patch.go +++ b/pkg/endpoints/handlers/patch.go @@ -42,7 +42,7 @@ import ( ) // PatchResource returns a function that will handle a resource patch. -func PatchResource(r rest.Patcher, scope RequestScope, admit admission.Interface, converter runtime.ObjectConvertor, patchTypes []string) http.HandlerFunc { +func PatchResource(r rest.Patcher, scope RequestScope, admit admission.Interface, patchTypes []string) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { // For performance tracking purposes. trace := utiltrace.New("Patch " + req.URL.Path) @@ -77,14 +77,7 @@ func PatchResource(r rest.Patcher, scope RequestScope, admit admission.Interface ctx := req.Context() ctx = request.WithNamespace(ctx, namespace) - // TODO: this is NOT using the scope's convertor [sic]. Figure - // out if this is intentional or not. Perhaps it matters on - // subresources? Rename this parameter if this is purposful and - // delete it (using scope.Convertor instead) otherwise. - // - // Already some tests set this converter but apparently not the - // scope's unsafeConvertor. - schemaReferenceObj, err := converter.ConvertToVersion(r.New(), scope.Kind.GroupVersion()) + schemaReferenceObj, err := scope.UnsafeConvertor.ConvertToVersion(r.New(), scope.Kind.GroupVersion()) if err != nil { scope.err(err, w, req) return diff --git a/pkg/endpoints/installer.go b/pkg/endpoints/installer.go index e9a292d8e..006b218ea 100644 --- a/pkg/endpoints/installer.go +++ b/pkg/endpoints/installer.go @@ -629,7 +629,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag string(types.MergePatchType), string(types.StrategicMergePatchType), } - handler := metrics.InstrumentRouteFunc(action.Verb, resource, subresource, requestScope, restfulPatchResource(patcher, reqScope, admit, a.group.Convertor, supportedTypes)) + handler := metrics.InstrumentRouteFunc(action.Verb, resource, subresource, requestScope, restfulPatchResource(patcher, reqScope, admit, supportedTypes)) route := ws.PATCH(action.Path).To(handler). Doc(doc). Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")). @@ -1005,9 +1005,9 @@ func restfulUpdateResource(r rest.Updater, scope handlers.RequestScope, admit ad } } -func restfulPatchResource(r rest.Patcher, scope handlers.RequestScope, admit admission.Interface, converter runtime.ObjectConvertor, supportedTypes []string) restful.RouteFunction { +func restfulPatchResource(r rest.Patcher, scope handlers.RequestScope, admit admission.Interface, supportedTypes []string) restful.RouteFunction { return func(req *restful.Request, res *restful.Response) { - handlers.PatchResource(r, scope, admit, converter, supportedTypes)(res.ResponseWriter, req.Request) + handlers.PatchResource(r, scope, admit, supportedTypes)(res.ResponseWriter, req.Request) } }