Skip to content

Commit d93caf4

Browse files
committed
plumb through new informer func
1 parent a4b17f6 commit d93caf4

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

pkg/cache/cache.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ type Options struct {
111111

112112
// KeyFunction is the cache.KeyFunc that the informers will be configured to use.
113113
// Defaults to cache.MetaNamespaceKeyFunc from client-go
114-
KeyFunction cache.KeyFunc
114+
NewInformerFunc client.NewInformerFunc
115115

116116
// Indexers is the indexers that the informers will be configured to use.
117117
// Will always have the standard NamespaceIndex.
@@ -155,7 +155,7 @@ func New(config *rest.Config, opts Options) (Cache, error) {
155155
if err != nil {
156156
return nil, err
157157
}
158-
im := internal.NewInformersMap(config, opts.Scheme, opts.Mapper, *opts.Resync, opts.Namespace, selectorsByGVK, disableDeepCopyByGVK, opts.KeyFunction, opts.Indexers)
158+
im := internal.NewInformersMap(config, opts.Scheme, opts.Mapper, *opts.Resync, opts.Namespace, selectorsByGVK, disableDeepCopyByGVK, opts.NewInformerFunc, opts.Indexers)
159159
return &informerCache{InformersMap: im}, nil
160160
}
161161

@@ -209,8 +209,8 @@ func defaultOpts(config *rest.Config, opts Options) (Options, error) {
209209
opts.Resync = &defaultResyncTime
210210
}
211211

212-
if opts.KeyFunction == nil {
213-
opts.KeyFunction = cache.MetaNamespaceKeyFunc
212+
if opts.NewInformerFunc == nil {
213+
opts.NewInformerFunc = cache.NewSharedIndexInformer
214214
}
215215
return opts, nil
216216
}

pkg/cache/internal/deleg_map.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727
"k8s.io/apimachinery/pkg/runtime/schema"
2828
"k8s.io/client-go/rest"
2929
"k8s.io/client-go/tools/cache"
30+
31+
"sigs.k8s.io/controller-runtime/pkg/client"
3032
)
3133

3234
// InformersMap create and caches Informers for (runtime.Object, schema.GroupVersionKind) pairs.
@@ -52,13 +54,13 @@ func NewInformersMap(config *rest.Config,
5254
namespace string,
5355
selectors SelectorsByGVK,
5456
disableDeepCopy DisableDeepCopyByGVK,
55-
keyFunc cache.KeyFunc,
57+
newInformerFunc client.NewInformerFunc,
5658
indexers cache.Indexers,
5759
) *InformersMap {
5860
return &InformersMap{
59-
structured: newStructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, keyFunc, indexers),
60-
unstructured: newUnstructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, keyFunc, indexers),
61-
metadata: newMetadataInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, keyFunc, indexers),
61+
structured: newStructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, newInformerFunc, indexers),
62+
unstructured: newUnstructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, newInformerFunc, indexers),
63+
metadata: newMetadataInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, newInformerFunc, indexers),
6264

6365
Scheme: scheme,
6466
}
@@ -110,18 +112,18 @@ func (m *InformersMap) Get(ctx context.Context, gvk schema.GroupVersionKind, obj
110112

111113
// newStructuredInformersMap creates a new InformersMap for structured objects.
112114
func newStructuredInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration,
113-
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, keyFunc cache.KeyFunc, indexers cache.Indexers) *specificInformersMap {
114-
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createStructuredListWatch, keyFunc, indexers)
115+
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, newInformerFunc client.NewInformerFunc, indexers cache.Indexers) *specificInformersMap {
116+
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createStructuredListWatch, newInformerFunc, indexers)
115117
}
116118

117119
// newUnstructuredInformersMap creates a new InformersMap for unstructured objects.
118120
func newUnstructuredInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration,
119-
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, keyFunc cache.KeyFunc, indexers cache.Indexers) *specificInformersMap {
120-
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createUnstructuredListWatch, keyFunc, indexers)
121+
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, newInformerFunc client.NewInformerFunc, indexers cache.Indexers) *specificInformersMap {
122+
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createUnstructuredListWatch, newInformerFunc, indexers)
121123
}
122124

123125
// newMetadataInformersMap creates a new InformersMap for metadata-only objects.
124126
func newMetadataInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration,
125-
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, keyFunc cache.KeyFunc, indexers cache.Indexers) *specificInformersMap {
126-
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createMetadataListWatch, keyFunc, indexers)
127+
namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK, newInformerFunc client.NewInformerFunc, indexers cache.Indexers) *specificInformersMap {
128+
return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createMetadataListWatch, newInformerFunc, indexers)
127129
}

pkg/cache/internal/informers_map.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"k8s.io/client-go/rest"
3636
"k8s.io/client-go/tools/cache"
3737

38+
"sigs.k8s.io/controller-runtime/pkg/client"
3839
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
3940
)
4041

@@ -55,7 +56,7 @@ func newSpecificInformersMap(config *rest.Config,
5556
selectors SelectorsByGVK,
5657
disableDeepCopy DisableDeepCopyByGVK,
5758
createListWatcher createListWatcherFunc,
58-
keyFunction cache.KeyFunc,
59+
newInformerFunc client.NewInformerFunc,
5960
indexers cache.Indexers) *specificInformersMap {
6061

6162
ip := &specificInformersMap{
@@ -71,7 +72,7 @@ func newSpecificInformersMap(config *rest.Config,
7172
namespace: namespace,
7273
selectors: selectors.forGVK,
7374
disableDeepCopy: disableDeepCopy,
74-
keyFunction: keyFunction,
75+
newInformerFunc: newInformerFunc,
7576
additionalIndexers: indexers,
7677
}
7778
return ip
@@ -147,6 +148,8 @@ type specificInformersMap struct {
147148
// additionalIndexers is the indexers that the informers will be configured to use.
148149
// Will not allow overwriting the standard NamespaceIndex.
149150
additionalIndexers cache.Indexers
151+
152+
newInformerFunc client.NewInformerFunc
150153
}
151154

152155
// Start calls Run on each of the informers and sets started to true. Blocks on the context.
@@ -242,10 +245,8 @@ func (ip *specificInformersMap) addInformerToMap(gvk schema.GroupVersionKind, ob
242245
}
243246
indexers[cache.NamespaceIndex] = cache.MetaNamespaceIndexFunc
244247

245-
ni := cache.NewSharedIndexInformerWithOptions(lw, obj,
246-
cache.WithResyncPeriod(resyncPeriod(ip.resync)()),
247-
cache.WithKeyFunction(ip.keyFunction),
248-
cache.WithIndexers(indexers))
248+
ni := ip.newInformerFunc(lw, obj, resyncPeriod(ip.resync)(), indexers)
249+
249250
rm, err := ip.mapper.RESTMapping(gvk.GroupKind(), gvk.Version)
250251
if err != nil {
251252
return nil, false, err

pkg/kcp/wrappers.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ func NewClusterAwareManager(cfg *rest.Config, options ctrl.Options) (manager.Man
5757
func NewClusterAwareCache(config *rest.Config, opts cache.Options) (cache.Cache, error) {
5858
c := rest.CopyConfig(config)
5959
c.Host += "/clusters/*"
60-
opts.KeyFunction = kcpcache.ClusterAwareKeyFunc
60+
opts.NewInformerFunc = NewClusterAwareSharedIndexInformerFunc(kcpcache.ClusterAwareKeyFunc)
61+
6162
opts.Indexers = k8scache.Indexers{
6263
kcpcache.ClusterIndexName: kcpcache.ClusterIndexFunc,
6364
kcpcache.ClusterAndNamespaceIndexName: kcpcache.ClusterAndNamespaceIndexFunc,

0 commit comments

Comments
 (0)