func NewReadOnlyPolicyCache(registry policyregistry.WatchingRegistry) *readOnlyPolicyCache { ctx := kapi.WithNamespace(kapi.NewContext(), kapi.NamespaceAll) indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{"namespace": cache.MetaNamespaceIndexFunc}) reflector := cache.NewReflector( &cache.ListWatch{ ListFunc: func() (runtime.Object, error) { return registry.ListPolicies(ctx, labels.Everything(), fields.Everything()) }, WatchFunc: func(resourceVersion string) (watch.Interface, error) { return registry.WatchPolicies(ctx, labels.Everything(), fields.Everything(), resourceVersion) }, }, &authorizationapi.Policy{}, indexer, 2*time.Minute, ) return &readOnlyPolicyCache{ registry: registry, indexer: indexer, reflector: reflector, keyFunc: cache.MetaNamespaceKeyFunc, } }
func NewReadOnlyPolicyCache(registry policyregistry.WatchingRegistry) *readOnlyPolicyCache { ctx := kapi.WithNamespace(kapi.NewContext(), kapi.NamespaceAll) indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{"namespace": cache.MetaNamespaceIndexFunc}) reflector := cache.NewReflector( &cache.ListWatch{ ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { opts := &unversioned.ListOptions{ LabelSelector: unversioned.LabelSelector{Selector: options.LabelSelector}, FieldSelector: unversioned.FieldSelector{Selector: options.FieldSelector}, ResourceVersion: options.ResourceVersion, } return registry.ListPolicies(ctx, opts) }, WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { opts := &unversioned.ListOptions{ LabelSelector: unversioned.LabelSelector{Selector: options.LabelSelector}, FieldSelector: unversioned.FieldSelector{Selector: options.FieldSelector}, ResourceVersion: options.ResourceVersion, } return registry.WatchPolicies(ctx, opts) }, }, &authorizationapi.Policy{}, indexer, 2*time.Minute, ) return &readOnlyPolicyCache{ registry: registry, indexer: indexer, reflector: reflector, keyFunc: cache.MetaNamespaceKeyFunc, } }