@@ -112,6 +112,7 @@ type Options struct {
112
112
// NewClient is the func that creates the client to be used by the manager.
113
113
// If not set this will create the default DelegatingClient that will
114
114
// use the cache for reads and the client for writes.
115
+ // NOTE: The default client will not cache Unstructured.
115
116
NewClient NewClientFunc
116
117
117
118
// ClientDisableCacheFor tells the client that, if any cache is used, to bypass it
@@ -255,16 +256,32 @@ func setOptionsDefaults(options Options) Options {
255
256
// NewClientFunc allows a user to define how to create a client.
256
257
type NewClientFunc func (cache cache.Cache , config * rest.Config , options client.Options , uncachedObjects ... client.Object ) (client.Client , error )
257
258
258
- // DefaultNewClient creates the default caching client.
259
+ type ClientOptions struct {
260
+ UncachedObjects []client.Object
261
+ CacheUnstructured bool
262
+ }
263
+
264
+ // DefaultNewClient creates the default caching client, that will never cache Unstructured.
259
265
func DefaultNewClient (cache cache.Cache , config * rest.Config , options client.Options , uncachedObjects ... client.Object ) (client.Client , error ) {
260
- c , err := client .New (config , options )
261
- if err != nil {
262
- return nil , err
263
- }
266
+ return ClientBuilderWithOptions (ClientOptions {})(cache , config , options , uncachedObjects ... )
267
+ }
264
268
265
- return client .NewDelegatingClient (client.NewDelegatingClientInput {
266
- CacheReader : cache ,
267
- Client : c ,
268
- UncachedObjects : uncachedObjects ,
269
- })
269
+ func ClientBuilderWithOptions (options ClientOptions ) NewClientFunc {
270
+ return func (cache cache.Cache , config * rest.Config , clientOpts client.Options , uncachedObjects ... client.Object ) (client.Client , error ) {
271
+ c , err := client .New (config , clientOpts )
272
+ if err != nil {
273
+ return nil , err
274
+ }
275
+
276
+ if uncachedObjects != nil {
277
+ options .UncachedObjects = append (options .UncachedObjects , uncachedObjects ... )
278
+ }
279
+
280
+ return client .NewDelegatingClient (client.NewDelegatingClientInput {
281
+ CacheReader : cache ,
282
+ Client : c ,
283
+ UncachedObjects : options .UncachedObjects ,
284
+ CacheUnstructured : options .CacheUnstructured ,
285
+ })
286
+ }
270
287
}
0 commit comments