Documentation ¶
Overview ¶
Package generic contains a typed wrapper over cache SharedIndexInformer and Lister (maybe eventually should have a home there?)
This interface is being experimented with as an easier way to write controllers with a bit less boilerplate.
Informer/Lister classes are thin wrappers providing a type-safe interface over regular interface{}-based Informers/Listers
Controller[T] provides a reusable way to reconcile objects out of an informer using the tried and true controller design pattern found all over k8s codebase based upon syncFunc/reconcile
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Controller ¶
type Controller[T runtime.Object] interface { // Meant to be run inside a goroutine // Waits for and reacts to changes in whatever type the controller // is concerned with. // // Returns an error always non-nil explaining why the worker stopped Run(ctx context.Context) error // Retrieves the informer used to back this controller Informer() Informer[T] // Returns true if the informer cache has synced, and all the objects from // the initial list have been reconciled at least once. HasSynced() bool }
func NewController ¶
func NewController[T runtime.Object]( informer Informer[T], reconciler func(namepace, name string, newObj T) error, options ControllerOptions, ) Controller[T]
type ControllerOptions ¶
type Informer ¶
type Informer[T any] interface { cache.SharedIndexInformer Lister[T] }
func NewInformer ¶
func NewInformer[T runtime.Object](informe cache.SharedIndexInformer) Informer[T]
Creates a generic informer around a type-erased cache.SharedIndexInformer It is incumbent on the caller to ensure that the generic type argument is consistent with the type of the objects stored inside the SharedIndexInformer as they will be casted.
type Lister ¶
type Lister[T any] interface { NamespacedLister[T] Namespaced(namespace string) NamespacedLister[T] }
Lister[T] helps list Ts. All objects returned here must be treated as read-only.
type NamespacedLister ¶
type NamespacedLister[T any] interface { // List lists all ValidationRuleSets in the indexer for a given namespace. // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []T, err error) // Get retrieves the ValidationRuleSet from the indexer for a given namespace and name. // Objects returned here must be treated as read-only. Get(name string) (T, error) }