...
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 "sigs.k8s.io/gateway-api/apis/v1"
27 v1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
28 v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
29 )
30
31
32
33 type GenericInformer interface {
34 Informer() cache.SharedIndexInformer
35 Lister() cache.GenericLister
36 }
37
38 type genericInformer struct {
39 informer cache.SharedIndexInformer
40 resource schema.GroupResource
41 }
42
43
44 func (f *genericInformer) Informer() cache.SharedIndexInformer {
45 return f.informer
46 }
47
48
49 func (f *genericInformer) Lister() cache.GenericLister {
50 return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource)
51 }
52
53
54
55 func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
56 switch resource {
57
58 case v1.SchemeGroupVersion.WithResource("gateways"):
59 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1().Gateways().Informer()}, nil
60 case v1.SchemeGroupVersion.WithResource("gatewayclasses"):
61 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1().GatewayClasses().Informer()}, nil
62 case v1.SchemeGroupVersion.WithResource("httproutes"):
63 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1().HTTPRoutes().Informer()}, nil
64
65
66 case v1alpha2.SchemeGroupVersion.WithResource("backendtlspolicies"):
67 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().BackendTLSPolicies().Informer()}, nil
68 case v1alpha2.SchemeGroupVersion.WithResource("grpcroutes"):
69 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().GRPCRoutes().Informer()}, nil
70 case v1alpha2.SchemeGroupVersion.WithResource("gateways"):
71 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().Gateways().Informer()}, nil
72 case v1alpha2.SchemeGroupVersion.WithResource("gatewayclasses"):
73 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().GatewayClasses().Informer()}, nil
74 case v1alpha2.SchemeGroupVersion.WithResource("httproutes"):
75 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().HTTPRoutes().Informer()}, nil
76 case v1alpha2.SchemeGroupVersion.WithResource("referencegrants"):
77 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().ReferenceGrants().Informer()}, nil
78 case v1alpha2.SchemeGroupVersion.WithResource("tcproutes"):
79 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().TCPRoutes().Informer()}, nil
80 case v1alpha2.SchemeGroupVersion.WithResource("tlsroutes"):
81 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().TLSRoutes().Informer()}, nil
82 case v1alpha2.SchemeGroupVersion.WithResource("udproutes"):
83 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1alpha2().UDPRoutes().Informer()}, nil
84
85
86 case v1beta1.SchemeGroupVersion.WithResource("gateways"):
87 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1beta1().Gateways().Informer()}, nil
88 case v1beta1.SchemeGroupVersion.WithResource("gatewayclasses"):
89 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1beta1().GatewayClasses().Informer()}, nil
90 case v1beta1.SchemeGroupVersion.WithResource("httproutes"):
91 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1beta1().HTTPRoutes().Informer()}, nil
92 case v1beta1.SchemeGroupVersion.WithResource("referencegrants"):
93 return &genericInformer{resource: resource.GroupResource(), informer: f.Gateway().V1beta1().ReferenceGrants().Informer()}, nil
94
95 }
96
97 return nil, fmt.Errorf("no informer found for %v", resource)
98 }
99
View as plain text