From 2270f1088c3335b9d38e921df98d751f2648b21b Mon Sep 17 00:00:00 2001 From: Alex Kalenyuk Date: Mon, 11 Sep 2023 13:48:32 +0300 Subject: [PATCH] bug: inherited defaults not respected in cache BuilderWithOptions When using BuilderWithOptions the inherited (manager/cluster) options are lost. If they were provided, they are stronger than the cache package defaults. (Overrides default dynamic mapper in my case) Signed-off-by: Alex Kalenyuk --- pkg/cache/cache.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index bcb1141a50..02c5f3df49 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -199,6 +199,10 @@ func BuilderWithOptions(options Options) NewCacheFunc { if err != nil { return nil, err } + options, err = defaultToInheritedOpts(options, inherited) + if err != nil { + return nil, err + } options, err = defaultOpts(config, options) if err != nil { return nil, err @@ -424,6 +428,21 @@ func defaultOpts(config *rest.Config, opts Options) (Options, error) { return opts, nil } +func defaultToInheritedOpts(opts, inherited Options) (Options, error) { + if opts.Scheme == nil { + opts.Scheme = inherited.Scheme + } + + if opts.Mapper == nil { + opts.Mapper = inherited.Mapper + } + + if opts.Resync == nil { + opts.Resync = inherited.Resync + } + return opts, nil +} + func convertToByGVK[T any](byObject map[client.Object]T, def T, scheme *runtime.Scheme) (map[schema.GroupVersionKind]T, error) { byGVK := map[schema.GroupVersionKind]T{} for object, value := range byObject {