f105a3f0 |
package shared |
7c4fc5a0 |
import (
"reflect"
kapi "k8s.io/kubernetes/pkg/api" |
2af24bf0 |
"k8s.io/kubernetes/pkg/api/errors" |
7c4fc5a0 |
"k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/controller/framework" |
2af24bf0 |
"k8s.io/kubernetes/pkg/labels" |
7c4fc5a0 |
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/watch"
)
type PodInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer
Lister() *cache.StoreToPodLister
}
type podInformer struct {
*sharedInformerFactory
}
func (f *podInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.Pod{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("pods"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().Pods(kapi.NamespaceAll).List(options) |
7c4fc5a0 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().Pods(kapi.NamespaceAll).Watch(options) |
7c4fc5a0 |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
)
f.informers[informerType] = informer
return informer
}
func (f *podInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
func (f *podInformer) Lister() *cache.StoreToPodLister {
informer := f.Informer()
return &cache.StoreToPodLister{Indexer: informer.GetIndexer()}
}
|
edbd3727 |
type NodeInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer
Lister() *cache.StoreToNodeLister
}
type nodeInformer struct {
*sharedInformerFactory
}
func (f *nodeInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.Node{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("nodes"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().Nodes().List(options) |
edbd3727 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().Nodes().Watch(options) |
edbd3727 |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
)
f.informers[informerType] = informer
return informer
}
func (f *nodeInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
func (f *nodeInformer) Lister() *cache.StoreToNodeLister {
informer := f.Informer()
return &cache.StoreToNodeLister{Store: informer.GetStore()}
}
type PersistentVolumeInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer |
67541d0c |
Lister() *cache.StoreToPVFetcher |
edbd3727 |
}
type persistentVolumeInformer struct {
*sharedInformerFactory
}
func (f *persistentVolumeInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.PersistentVolume{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("persistentvolumes"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().PersistentVolumes().List(options) |
edbd3727 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().PersistentVolumes().Watch(options) |
edbd3727 |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{},
)
f.informers[informerType] = informer
return informer
}
func (f *persistentVolumeInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
|
67541d0c |
func (f *persistentVolumeInformer) Lister() *cache.StoreToPVFetcher {
informer := f.Informer()
return &cache.StoreToPVFetcher{Store: informer.GetStore()}
}
|
edbd3727 |
type PersistentVolumeClaimInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer |
67541d0c |
Lister() *cache.StoreToPVCFetcher |
edbd3727 |
}
type persistentVolumeClaimInformer struct {
*sharedInformerFactory
}
func (f *persistentVolumeClaimInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.PersistentVolumeClaim{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("persistentvolumeclaims"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().PersistentVolumeClaims(kapi.NamespaceAll).List(options) |
edbd3727 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().PersistentVolumeClaims(kapi.NamespaceAll).Watch(options) |
edbd3727 |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{},
)
f.informers[informerType] = informer
return informer
}
func (f *persistentVolumeClaimInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
|
67541d0c |
func (f *persistentVolumeClaimInformer) Lister() *cache.StoreToPVCFetcher {
informer := f.Informer()
return &cache.StoreToPVCFetcher{Store: informer.GetStore()}
}
|
7c4fc5a0 |
type ReplicationControllerInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer
Lister() *cache.StoreToReplicationControllerLister
}
type replicationControllerInformer struct {
*sharedInformerFactory
}
func (f *replicationControllerInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.ReplicationController{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
|
edbd3727 |
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("replicationcontrollers"))
if lw == nil {
lw = &cache.ListWatch{ |
7c4fc5a0 |
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().ReplicationControllers(kapi.NamespaceAll).List(options) |
7c4fc5a0 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().ReplicationControllers(kapi.NamespaceAll).Watch(options) |
7c4fc5a0 |
}, |
edbd3727 |
}
}
informer = framework.NewSharedIndexInformer(
lw, |
7c4fc5a0 |
informerObj,
f.defaultResync,
cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
)
f.informers[informerType] = informer
return informer
}
func (f *replicationControllerInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
func (f *replicationControllerInformer) Lister() *cache.StoreToReplicationControllerLister {
informer := f.Informer()
return &cache.StoreToReplicationControllerLister{Indexer: informer.GetIndexer()}
} |
92f7e72b |
type NamespaceInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer |
67541d0c |
Lister() *cache.IndexerToNamespaceLister |
92f7e72b |
}
type namespaceInformer struct {
*sharedInformerFactory
}
func (f *namespaceInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.Namespace{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("namespaces"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().Namespaces().List(options) |
92f7e72b |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().Namespaces().Watch(options) |
92f7e72b |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{},
)
f.informers[informerType] = informer
return informer
}
func (f *namespaceInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
|
67541d0c |
func (f *namespaceInformer) Lister() *cache.IndexerToNamespaceLister { |
92f7e72b |
informer := f.Informer() |
67541d0c |
return &cache.IndexerToNamespaceLister{Indexer: informer.GetIndexer()} |
92f7e72b |
} |
2af24bf0 |
type LimitRangeInformer interface {
Informer() framework.SharedIndexInformer
Indexer() cache.Indexer
Lister() StoreToLimitRangeLister
}
type limitRangeInformer struct {
*sharedInformerFactory
}
func (f *limitRangeInformer) Informer() framework.SharedIndexInformer {
f.lock.Lock()
defer f.lock.Unlock()
informerObj := &kapi.LimitRange{}
informerType := reflect.TypeOf(informerObj)
informer, exists := f.informers[informerType]
if exists {
return informer
}
lw := f.customListerWatchers.GetListerWatcher(kapi.Resource("limitrange"))
if lw == nil {
lw = &cache.ListWatch{
ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { |
97e6f1de |
return f.kubeClient.Core().LimitRanges(kapi.NamespaceAll).List(options) |
2af24bf0 |
},
WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { |
97e6f1de |
return f.kubeClient.Core().LimitRanges(kapi.NamespaceAll).Watch(options) |
2af24bf0 |
},
}
}
informer = framework.NewSharedIndexInformer(
lw,
informerObj,
f.defaultResync,
cache.Indexers{},
)
f.informers[informerType] = informer
return informer
}
func (f *limitRangeInformer) Indexer() cache.Indexer {
informer := f.Informer()
return informer.GetIndexer()
}
func (f *limitRangeInformer) Lister() StoreToLimitRangeLister {
informer := f.Informer()
return StoreToLimitRangeLister{Indexer: informer.GetIndexer()}
}
// StoreToLimitRangeLister gives a store List and Get methods. The store must contain only LimitRanges.
type StoreToLimitRangeLister struct {
cache.Indexer
}
func (s StoreToLimitRangeLister) LimitRanges(namespace string) storeLimitRangesNamespacer {
return storeLimitRangesNamespacer{s.Indexer, namespace}
}
type storeLimitRangesNamespacer struct {
indexer cache.Indexer
namespace string
}
func (s storeLimitRangesNamespacer) List(selector labels.Selector) ([]*kapi.LimitRange, error) {
var controllers []*kapi.LimitRange
if s.namespace == kapi.NamespaceAll {
for _, m := range s.indexer.List() {
rc := m.(*kapi.LimitRange)
if selector.Matches(labels.Set(rc.Labels)) {
controllers = append(controllers, rc)
}
}
return controllers, nil
}
key := &kapi.LimitRange{ObjectMeta: kapi.ObjectMeta{Namespace: s.namespace}}
items, err := s.indexer.Index(cache.NamespaceIndex, key)
if err != nil {
for _, m := range s.indexer.List() {
rc := m.(*kapi.LimitRange)
if s.namespace == rc.Namespace && selector.Matches(labels.Set(rc.Labels)) {
controllers = append(controllers, rc)
}
}
return controllers, nil
}
for _, m := range items {
rc := m.(*kapi.LimitRange)
if selector.Matches(labels.Set(rc.Labels)) {
controllers = append(controllers, rc)
}
}
return controllers, nil
}
func (s storeLimitRangesNamespacer) Get(name string) (*kapi.LimitRange, error) {
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
if err != nil {
return nil, err
}
if !exists {
return nil, errors.NewNotFound(kapi.Resource("limitrange"), name)
}
return obj.(*kapi.LimitRange), nil
} |