mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #118455 from linxiulei/managedFields
Trim managedFields in controller-manager
This commit is contained in:
		@@ -29,6 +29,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/spf13/cobra"
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/apimachinery/pkg/api/meta"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
						utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
						"k8s.io/apimachinery/pkg/util/sets"
 | 
				
			||||||
@@ -491,11 +492,19 @@ func NewControllerInitializers(loopMode ControllerLoopMode) map[string]InitFunc
 | 
				
			|||||||
// controllers such as the cloud provider and clientBuilder. rootClientBuilder is only used for
 | 
					// controllers such as the cloud provider and clientBuilder. rootClientBuilder is only used for
 | 
				
			||||||
// the shared-informers client and token controller.
 | 
					// the shared-informers client and token controller.
 | 
				
			||||||
func CreateControllerContext(logger klog.Logger, s *config.CompletedConfig, rootClientBuilder, clientBuilder clientbuilder.ControllerClientBuilder, stop <-chan struct{}) (ControllerContext, error) {
 | 
					func CreateControllerContext(logger klog.Logger, s *config.CompletedConfig, rootClientBuilder, clientBuilder clientbuilder.ControllerClientBuilder, stop <-chan struct{}) (ControllerContext, error) {
 | 
				
			||||||
 | 
						// Informer transform to trim ManagedFields for memory efficiency.
 | 
				
			||||||
 | 
						trim := func(obj interface{}) (interface{}, error) {
 | 
				
			||||||
 | 
							if accessor, err := meta.Accessor(obj); err == nil {
 | 
				
			||||||
 | 
								accessor.SetManagedFields(nil)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return obj, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	versionedClient := rootClientBuilder.ClientOrDie("shared-informers")
 | 
						versionedClient := rootClientBuilder.ClientOrDie("shared-informers")
 | 
				
			||||||
	sharedInformers := informers.NewSharedInformerFactory(versionedClient, ResyncPeriod(s)())
 | 
						sharedInformers := informers.NewSharedInformerFactoryWithOptions(versionedClient, ResyncPeriod(s)(), informers.WithTransform(trim))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	metadataClient := metadata.NewForConfigOrDie(rootClientBuilder.ConfigOrDie("metadata-informers"))
 | 
						metadataClient := metadata.NewForConfigOrDie(rootClientBuilder.ConfigOrDie("metadata-informers"))
 | 
				
			||||||
	metadataInformers := metadatainformer.NewSharedInformerFactory(metadataClient, ResyncPeriod(s)())
 | 
						metadataInformers := metadatainformer.NewSharedInformerFactoryWithOptions(metadataClient, ResyncPeriod(s)(), metadatainformer.WithTransform(trim))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// If apiserver is not running we should wait for some time and fail only then. This is particularly
 | 
						// If apiserver is not running we should wait for some time and fail only then. This is particularly
 | 
				
			||||||
	// important when we start apiserver and controller manager at the same time.
 | 
						// important when we start apiserver and controller manager at the same time.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -98,6 +99,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -202,6 +211,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ import (
 | 
				
			|||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
						"k8s.io/apimachinery/pkg/runtime/schema"
 | 
				
			||||||
@@ -31,6 +32,17 @@ import (
 | 
				
			|||||||
	"k8s.io/client-go/tools/cache"
 | 
						"k8s.io/client-go/tools/cache"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SharedInformerOption defines the functional option type for metadataSharedInformerFactory.
 | 
				
			||||||
 | 
					type SharedInformerOption func(*metadataSharedInformerFactory) *metadataSharedInformerFactory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *metadataSharedInformerFactory) *metadataSharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of metadataSharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of metadataSharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client metadata.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client metadata.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewFilteredSharedInformerFactory(client, defaultResync, metav1.NamespaceAll, nil)
 | 
						return NewFilteredSharedInformerFactory(client, defaultResync, metav1.NamespaceAll, nil)
 | 
				
			||||||
@@ -49,10 +61,29 @@ func NewFilteredSharedInformerFactory(client metadata.Interface, defaultResync t
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewSharedInformerFactoryWithOptions constructs a new instance of metadataSharedInformerFactory with additional options.
 | 
				
			||||||
 | 
					func NewSharedInformerFactoryWithOptions(client metadata.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory {
 | 
				
			||||||
 | 
						factory := &metadataSharedInformerFactory{
 | 
				
			||||||
 | 
							client:           client,
 | 
				
			||||||
 | 
							namespace:        v1.NamespaceAll,
 | 
				
			||||||
 | 
							defaultResync:    defaultResync,
 | 
				
			||||||
 | 
							informers:        map[schema.GroupVersionResource]informers.GenericInformer{},
 | 
				
			||||||
 | 
							startedInformers: make(map[schema.GroupVersionResource]bool),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Apply all options
 | 
				
			||||||
 | 
						for _, opt := range options {
 | 
				
			||||||
 | 
							factory = opt(factory)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return factory
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type metadataSharedInformerFactory struct {
 | 
					type metadataSharedInformerFactory struct {
 | 
				
			||||||
	client        metadata.Interface
 | 
						client        metadata.Interface
 | 
				
			||||||
	defaultResync time.Duration
 | 
						defaultResync time.Duration
 | 
				
			||||||
	namespace     string
 | 
						namespace     string
 | 
				
			||||||
 | 
						transform     cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lock      sync.Mutex
 | 
						lock      sync.Mutex
 | 
				
			||||||
	informers map[schema.GroupVersionResource]informers.GenericInformer
 | 
						informers map[schema.GroupVersionResource]informers.GenericInformer
 | 
				
			||||||
@@ -80,6 +111,7 @@ func (f *metadataSharedInformerFactory) ForResource(gvr schema.GroupVersionResou
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = NewFilteredMetadataInformer(f.client, gvr, f.namespace, f.defaultResync, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
 | 
						informer = NewFilteredMetadataInformer(f.client, gvr, f.namespace, f.defaultResync, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
 | 
				
			||||||
 | 
						informer.Informer().SetTransform(f.transform)
 | 
				
			||||||
	f.informers[key] = informer
 | 
						f.informers[key] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,6 +75,7 @@ func (g *factoryGenerator) GenerateType(c *generator.Context, t *types.Type, w i
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	m := map[string]interface{}{
 | 
						m := map[string]interface{}{
 | 
				
			||||||
		"cacheSharedIndexInformer":       c.Universe.Type(cacheSharedIndexInformer),
 | 
							"cacheSharedIndexInformer":       c.Universe.Type(cacheSharedIndexInformer),
 | 
				
			||||||
 | 
							"cacheTransformFunc":             c.Universe.Type(cacheTransformFunc),
 | 
				
			||||||
		"groupVersions":                  g.groupVersions,
 | 
							"groupVersions":                  g.groupVersions,
 | 
				
			||||||
		"gvInterfaces":                   gvInterfaces,
 | 
							"gvInterfaces":                   gvInterfaces,
 | 
				
			||||||
		"gvNewFuncs":                     gvNewFuncs,
 | 
							"gvNewFuncs":                     gvNewFuncs,
 | 
				
			||||||
@@ -109,6 +110,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock {{.syncMutex|raw}}
 | 
						lock {{.syncMutex|raw}}
 | 
				
			||||||
	defaultResync {{.timeDuration|raw}}
 | 
						defaultResync {{.timeDuration|raw}}
 | 
				
			||||||
	customResync map[{{.reflectType|raw}}]{{.timeDuration|raw}}
 | 
						customResync map[{{.reflectType|raw}}]{{.timeDuration|raw}}
 | 
				
			||||||
 | 
						transform {{.cacheTransformFunc|raw}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[{{.reflectType|raw}}]{{.cacheSharedIndexInformer|raw}}
 | 
						informers map[{{.reflectType|raw}}]{{.cacheSharedIndexInformer|raw}}
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -147,6 +149,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform {{.cacheTransformFunc|raw}}) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client {{.clientSetInterface|raw}}, defaultResync {{.timeDuration|raw}}) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client {{.clientSetInterface|raw}}, defaultResync {{.timeDuration|raw}}) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -252,11 +262,11 @@ func (f *sharedInformerFactory) InformerFor(obj {{.runtimeObject|raw}}, newFunc
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  informer = newFunc(f.client, resyncPeriod)
 | 
					  informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
					  informer.SetTransform(f.transform)
 | 
				
			||||||
  f.informers[informerType] = informer
 | 
					  f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return informer
 | 
					  return informer
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
`
 | 
					`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var sharedInformerFactoryInterface = `
 | 
					var sharedInformerFactoryInterface = `
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ var (
 | 
				
			|||||||
	cacheNewGenericLister       = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewGenericLister"}
 | 
						cacheNewGenericLister       = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewGenericLister"}
 | 
				
			||||||
	cacheNewSharedIndexInformer = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewSharedIndexInformer"}
 | 
						cacheNewSharedIndexInformer = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "NewSharedIndexInformer"}
 | 
				
			||||||
	cacheSharedIndexInformer    = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "SharedIndexInformer"}
 | 
						cacheSharedIndexInformer    = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "SharedIndexInformer"}
 | 
				
			||||||
 | 
						cacheTransformFunc          = types.Name{Package: "k8s.io/client-go/tools/cache", Name: "TransformFunc"}
 | 
				
			||||||
	listOptions                 = types.Name{Package: "k8s.io/kubernetes/pkg/apis/core", Name: "ListOptions"}
 | 
						listOptions                 = types.Name{Package: "k8s.io/kubernetes/pkg/apis/core", Name: "ListOptions"}
 | 
				
			||||||
	reflectType                 = types.Name{Package: "reflect", Name: "Type"}
 | 
						reflectType                 = types.Name{Package: "reflect", Name: "Type"}
 | 
				
			||||||
	runtimeObject               = types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "Object"}
 | 
						runtimeObject               = types.Name{Package: "k8s.io/apimachinery/pkg/runtime", Name: "Object"}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,6 +44,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -82,6 +83,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -186,6 +195,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -81,6 +82,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -185,6 +194,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client clientset.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@ type sharedInformerFactory struct {
 | 
				
			|||||||
	lock             sync.Mutex
 | 
						lock             sync.Mutex
 | 
				
			||||||
	defaultResync    time.Duration
 | 
						defaultResync    time.Duration
 | 
				
			||||||
	customResync     map[reflect.Type]time.Duration
 | 
						customResync     map[reflect.Type]time.Duration
 | 
				
			||||||
 | 
						transform        cache.TransformFunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informers map[reflect.Type]cache.SharedIndexInformer
 | 
						informers map[reflect.Type]cache.SharedIndexInformer
 | 
				
			||||||
	// startedInformers is used for tracking which informers have been started.
 | 
						// startedInformers is used for tracking which informers have been started.
 | 
				
			||||||
@@ -80,6 +81,14 @@ func WithNamespace(namespace string) SharedInformerOption {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// WithTransform sets a transform on all informers.
 | 
				
			||||||
 | 
					func WithTransform(transform cache.TransformFunc) SharedInformerOption {
 | 
				
			||||||
 | 
						return func(factory *sharedInformerFactory) *sharedInformerFactory {
 | 
				
			||||||
 | 
							factory.transform = transform
 | 
				
			||||||
 | 
							return factory
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
					// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
 | 
				
			||||||
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
					func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
 | 
				
			||||||
	return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
						return NewSharedInformerFactoryWithOptions(client, defaultResync)
 | 
				
			||||||
@@ -184,6 +193,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer = newFunc(f.client, resyncPeriod)
 | 
						informer = newFunc(f.client, resyncPeriod)
 | 
				
			||||||
 | 
						informer.SetTransform(f.transform)
 | 
				
			||||||
	f.informers[informerType] = informer
 | 
						f.informers[informerType] = informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return informer
 | 
						return informer
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user