From 7f0fb8ff7f7bdc700d37e3ec82d690d857c7102c Mon Sep 17 00:00:00 2001 From: Terin Stock Date: Wed, 3 Apr 2019 14:38:25 -0700 Subject: [PATCH] fix(client): support custom negotiated serializer The Kubernetes client allows for users to configure a serializer which is used to encode and decode resources exchanged with the Kubernetes API server. This changeset modifies the controller-runtime client to only set the default serializer if the NegotiatedSerializer option is nil. Signed-off-by: Terin Stock --- pkg/client/apiutil/apimachinery.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/client/apiutil/apimachinery.go b/pkg/client/apiutil/apimachinery.go index a1fd04a7a4..aeac424680 100644 --- a/pkg/client/apiutil/apimachinery.go +++ b/pkg/client/apiutil/apimachinery.go @@ -69,7 +69,9 @@ func GVKForObject(obj runtime.Object, scheme *runtime.Scheme) (schema.GroupVersi // with the given GroupVersionKind. func RESTClientForGVK(gvk schema.GroupVersionKind, baseConfig *rest.Config, codecs serializer.CodecFactory) (rest.Interface, error) { cfg := createRestConfig(gvk, baseConfig) - cfg.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: codecs} + if cfg.NegotiatedSerializer == nil { + cfg.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: codecs} + } return rest.RESTClientFor(cfg) }