...
1
16
17
18
19 package externalversions
20
21 import (
22 "fmt"
23
24 schema "k8s.io/apimachinery/pkg/runtime/schema"
25 cache "k8s.io/client-go/tools/cache"
26 v1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
27 v1beta1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1"
28 )
29
30
31
32 type GenericInformer interface {
33 Informer() cache.SharedIndexInformer
34 Lister() cache.GenericLister
35 }
36
37 type genericInformer struct {
38 informer cache.SharedIndexInformer
39 resource schema.GroupResource
40 }
41
42
43 func (f *genericInformer) Informer() cache.SharedIndexInformer {
44 return f.informer
45 }
46
47
48 func (f *genericInformer) Lister() cache.GenericLister {
49 return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource)
50 }
51
52
53
54 func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
55 switch resource {
56
57 case v1.SchemeGroupVersion.WithResource("apiservices"):
58 return &genericInformer{resource: resource.GroupResource(), informer: f.Apiregistration().V1().APIServices().Informer()}, nil
59
60
61 case v1beta1.SchemeGroupVersion.WithResource("apiservices"):
62 return &genericInformer{resource: resource.GroupResource(), informer: f.Apiregistration().V1beta1().APIServices().Informer()}, nil
63
64 }
65
66 return nil, fmt.Errorf("no informer found for %v", resource)
67 }
68
View as plain text