package shared import ( "reflect" kapi "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/controller/framework" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/watch" oscache "github.com/openshift/origin/pkg/client/cache" deployapi "github.com/openshift/origin/pkg/deploy/api" ) type DeploymentConfigInformer interface { Informer() framework.SharedIndexInformer Indexer() cache.Indexer Lister() *oscache.StoreToDeploymentConfigLister } type deploymentConfigInformer struct { *sharedInformerFactory } func (f *deploymentConfigInformer) Informer() framework.SharedIndexInformer { f.lock.Lock() defer f.lock.Unlock() informerObj := &deployapi.DeploymentConfig{} informerType := reflect.TypeOf(informerObj) informer, exists := f.informers[informerType] if exists { return informer } informer = framework.NewSharedIndexInformer( &cache.ListWatch{ ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { return f.originClient.DeploymentConfigs(kapi.NamespaceAll).List(options) }, WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { return f.originClient.DeploymentConfigs(kapi.NamespaceAll).Watch(options) }, }, informerObj, f.defaultResync, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc, oscache.ImageStreamReferenceIndex: oscache.ImageStreamReferenceIndexFunc}, ) f.informers[informerType] = informer return informer } func (f *deploymentConfigInformer) Indexer() cache.Indexer { informer := f.Informer() return informer.GetIndexer() } func (f *deploymentConfigInformer) Lister() *oscache.StoreToDeploymentConfigLister { informer := f.Informer() return &oscache.StoreToDeploymentConfigLister{Indexer: informer.GetIndexer()} }