123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- /*
- Copyright The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- // Code generated by informer-gen. DO NOT EDIT.
- package externalversions
- import (
- reflect "reflect"
- sync "sync"
- time "time"
- versioned "github.com/rook/rook/pkg/client/clientset/versioned"
- cephrookio "github.com/rook/rook/pkg/client/informers/externalversions/ceph.rook.io"
- internalinterfaces "github.com/rook/rook/pkg/client/informers/externalversions/internalinterfaces"
- v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- runtime "k8s.io/apimachinery/pkg/runtime"
- schema "k8s.io/apimachinery/pkg/runtime/schema"
- cache "k8s.io/client-go/tools/cache"
- )
- // SharedInformerOption defines the functional option type for SharedInformerFactory.
- type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory
- type sharedInformerFactory struct {
- client versioned.Interface
- namespace string
- tweakListOptions internalinterfaces.TweakListOptionsFunc
- lock sync.Mutex
- defaultResync time.Duration
- customResync map[reflect.Type]time.Duration
- informers map[reflect.Type]cache.SharedIndexInformer
- // startedInformers is used for tracking which informers have been started.
- // This allows Start() to be called multiple times safely.
- startedInformers map[reflect.Type]bool
- }
- // WithCustomResyncConfig sets a custom resync period for the specified informer types.
- func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption {
- return func(factory *sharedInformerFactory) *sharedInformerFactory {
- for k, v := range resyncConfig {
- factory.customResync[reflect.TypeOf(k)] = v
- }
- return factory
- }
- }
- // WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
- func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption {
- return func(factory *sharedInformerFactory) *sharedInformerFactory {
- factory.tweakListOptions = tweakListOptions
- return factory
- }
- }
- // WithNamespace limits the SharedInformerFactory to the specified namespace.
- func WithNamespace(namespace string) SharedInformerOption {
- return func(factory *sharedInformerFactory) *sharedInformerFactory {
- factory.namespace = namespace
- return factory
- }
- }
- // NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
- func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
- return NewSharedInformerFactoryWithOptions(client, defaultResync)
- }
- // NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
- // Listers obtained via this SharedInformerFactory will be subject to the same filters
- // as specified here.
- // Deprecated: Please use NewSharedInformerFactoryWithOptions instead
- func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
- return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions))
- }
- // NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
- func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory {
- factory := &sharedInformerFactory{
- client: client,
- namespace: v1.NamespaceAll,
- defaultResync: defaultResync,
- informers: make(map[reflect.Type]cache.SharedIndexInformer),
- startedInformers: make(map[reflect.Type]bool),
- customResync: make(map[reflect.Type]time.Duration),
- }
- // Apply all options
- for _, opt := range options {
- factory = opt(factory)
- }
- return factory
- }
- // Start initializes all requested informers.
- func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) {
- f.lock.Lock()
- defer f.lock.Unlock()
- for informerType, informer := range f.informers {
- if !f.startedInformers[informerType] {
- go informer.Run(stopCh)
- f.startedInformers[informerType] = true
- }
- }
- }
- // WaitForCacheSync waits for all started informers' cache were synced.
- func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool {
- informers := func() map[reflect.Type]cache.SharedIndexInformer {
- f.lock.Lock()
- defer f.lock.Unlock()
- informers := map[reflect.Type]cache.SharedIndexInformer{}
- for informerType, informer := range f.informers {
- if f.startedInformers[informerType] {
- informers[informerType] = informer
- }
- }
- return informers
- }()
- res := map[reflect.Type]bool{}
- for informType, informer := range informers {
- res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced)
- }
- return res
- }
- // InternalInformerFor returns the SharedIndexInformer for obj using an internal
- // client.
- func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer {
- f.lock.Lock()
- defer f.lock.Unlock()
- informerType := reflect.TypeOf(obj)
- informer, exists := f.informers[informerType]
- if exists {
- return informer
- }
- resyncPeriod, exists := f.customResync[informerType]
- if !exists {
- resyncPeriod = f.defaultResync
- }
- informer = newFunc(f.client, resyncPeriod)
- f.informers[informerType] = informer
- return informer
- }
- // SharedInformerFactory provides shared informers for resources in all known
- // API group versions.
- type SharedInformerFactory interface {
- internalinterfaces.SharedInformerFactory
- ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
- WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
- Ceph() cephrookio.Interface
- }
- func (f *sharedInformerFactory) Ceph() cephrookio.Interface {
- return cephrookio.New(f, f.namespace, f.tweakListOptions)
- }
|