Documentation ¶
Overview ¶
Package watch includes a RestartableManager for dynamically watching resources.
Index ¶
- func ConvertListOptions(mOpts *metav1.ListOptions) (*client.ListOptions, error)
- func DeleteAndWait(ctx context.Context, c client.WithWatch, obj client.Object, ...) error
- func MergeListOptions(a, b *client.ListOptions) (*client.ListOptions, error)
- func NewTypedListerWatcher(ctx context.Context, c client.WithWatch, exampleList client.ObjectList, ...) cache.ListerWatcher
- func SingleObjectListOptions(obj client.Object) *client.ListOptions
- func UnrollListOptions(in *client.ListOptions) []client.ListOption
- func UntilDeleted(ctx context.Context, c client.WithWatch, obj client.Object) error
- func UntilDeletedWithSync(ctx context.Context, c client.WithWatch, obj client.Object, ...) error
- type ControllerBuilder
- type DynamicListerWatcher
- type MapperFunc
- type RawListOptions
- type ResettableRESTMapper
- type RestartableManager
- type TypedInformerFactory
- type TypedListerWatcher
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConvertListOptions ¶ added in v1.16.0
func ConvertListOptions(mOpts *metav1.ListOptions) (*client.ListOptions, error)
ConvertListOptions converts from `metav1.ListOptions` to `client.ListOptions`.
For the reverse, see `client.ListOptions.AsListOptions()`.
func DeleteAndWait ¶ added in v1.16.0
func DeleteAndWait(ctx context.Context, c client.WithWatch, obj client.Object, reconcileTimeout time.Duration) error
DeleteAndWait deletes the object (if not already deleted) and blocks until it is fully deleted (NotFound, not just deleteTimestamp). This allows for any finalizers to complete.
Exits early if the object is already deleted or doesn't exist.
The Object contents will be replaced with updated state for each new event received while waiting for deletion.
If you want to time out the full function, use a context.WithTimeout. If you want to time out just the waiting after the delete, use reconcileTimeout.
func MergeListOptions ¶ added in v1.16.0
func MergeListOptions(a, b *client.ListOptions) (*client.ListOptions, error)
MergeListOptions merges two sets of ListOptions. - For Namespace, Limit, and Continue, at most one may be specified, unless they're the same - For FieldSelector and LabelSelector, the result requires both filters to match (AND) - For Raw, at most one may be specified
func NewTypedListerWatcher ¶ added in v1.16.0
func NewTypedListerWatcher(ctx context.Context, c client.WithWatch, exampleList client.ObjectList, opts *client.ListOptions) cache.ListerWatcher
NewTypedListerWatcher constructs a new TypedListerWatcher for the specified list type with default options.
func SingleObjectListOptions ¶ added in v1.16.0
func SingleObjectListOptions(obj client.Object) *client.ListOptions
SingleObjectListOptions builds a set of List options that filter down to one specific object.
func UnrollListOptions ¶ added in v1.16.0
func UnrollListOptions(in *client.ListOptions) []client.ListOption
UnrollListOptions converts from ListOptions to a slice of ListOption.
For the reverse, see `client.ListOptions.ApplyOptions([]client.ListOption)`.
func UntilDeleted ¶ added in v1.18.0
UntilDeleted watches the specified object and blocks until it is fully deleted (NotFound, not just deleteTimestamp). This allows for any finalizers to complete.
Unlike client-go's watch.Until, this function uses an informer, which means it does a ListAndWatch, not just a Watch. So it will return immediately if the object was already deleted.
For timeout, use: watchCtx, cancel := context.WithTimeout(ctx, 1*time.Minute) defer cancel()
func UntilDeletedWithSync ¶ added in v1.16.0
func UntilDeletedWithSync(ctx context.Context, c client.WithWatch, obj client.Object, precondition watchtools.PreconditionFunc) error
UntilDeletedWithSync watches the specified object and blocks until it is fully deleted (NotFound, not just deleteTimestamp). This allows for any finalizers to complete.
The optional Precondition will be called after the Informer is Synced, meaning that both the List and Watch call have been made, after which it's safe to Delete the object and assume the watch will receive the delete event.
The Precondition Store argument uses "<namespace>/<name>" or "<name>" keys and returns either a cache.DeletedFinalStateUnknown or an object of the type specified by the `items` field of the provided ObjectList (Kind without the "List" suffix). For example, UnstructuredList caches Unstructured objects.
The Object ResourceVersion of the input object is ignored, because a new Informer is created which will do a ListAndWatch to determine which ResourceVersion to start watching from.
The Object contents will be replaced with updated state for each new event received while waiting for deletion.
For timeout, use: watchCtx, cancel := context.WithTimeout(ctx, 1*time.Minute) defer cancel()
If you want to make sure something is deleted, delete it if it's not yet deleted, and then wait for it to be fully deleted, use DeleteAndWait instead.
Types ¶
type ControllerBuilder ¶
type ControllerBuilder interface { // StartControllers starts the relevant controllers using the RestartableManager to manage them. StartControllers(mgr manager.Manager, gvks map[schema.GroupVersionKind]bool, mgrInitTime metav1.Time) error }
ControllerBuilder builds controllers. It is managed by RestartableManager, which is managed by a higher-level controller.
type DynamicListerWatcher ¶ added in v1.16.0
type DynamicListerWatcher struct { // Context to pass to client list and watch methods Context context.Context // DynamicClient to list and watch with DynamicClient dynamic.Interface // RESTMapper to map from kind to resource RESTMapper meta.RESTMapper // ItemGVK is the kind of resource to list & watch ItemGVK schema.GroupVersionKind // DefaultListOptions are merged into the specified ListOptions on each // List and Watch call. // See MergeListOptions for details and limitations. DefaultListOptions *client.ListOptions }
DynamicListerWatcher wraps a dynamic.Interface and implements the cache.ListerWatcher interface with optional default ListOptions.
func (*DynamicListerWatcher) List ¶ added in v1.16.0
func (dlw *DynamicListerWatcher) List(options metav1.ListOptions) (runtime.Object, error)
List satisfies the cache.Lister interface. The ListOptions specified here are merged with the ClientListerWatcher
func (*DynamicListerWatcher) Watch ¶ added in v1.16.0
func (dlw *DynamicListerWatcher) Watch(options metav1.ListOptions) (watch.Interface, error)
Watch satisfies the cache.Watcher interface
type MapperFunc ¶ added in v1.20.0
type MapperFunc func() (meta.RESTMapper, error)
MapperFunc returns a RESTMapper with an empty/reset cache or an error.
type RawListOptions ¶ added in v1.16.0
type RawListOptions struct {
Raw *metav1.ListOptions
}
RawListOptions wraps a `metav1.ListOptions` to allow passing as `client.ListOption` to controller-runtime clients.
func (*RawListOptions) ApplyToList ¶ added in v1.16.0
func (rlo *RawListOptions) ApplyToList(lo *client.ListOptions)
ApplyToList sets the Raw metav1.ListOptions on the specified client.ListOptions.
type ResettableRESTMapper ¶ added in v1.20.0
type ResettableRESTMapper interface { meta.RESTMapper Reset() error }
ResettableRESTMapper is a RESTMapper which is capable of resetting itself from discovery.
This interface replaces meta.ResettableRESTMapper so that Reset can return an error. If Reset errors, it may be retried. This interface does NOT work with meta.MaybeResetRESTMapper.
TODO: Only reset one resource at a time, for efficiency.
func NewReplaceOnResetRESTMapper ¶ added in v1.20.0
func NewReplaceOnResetRESTMapper(m meta.RESTMapper, newMapperFunc MapperFunc) ResettableRESTMapper
NewReplaceOnResetRESTMapper wraps the provided RESTMapper and replaces it using the MapperFunc when the Reset method is called.
func ReplaceOnResetRESTMapperFromConfig ¶ added in v1.20.0
func ReplaceOnResetRESTMapperFromConfig(cfg *rest.Config) (ResettableRESTMapper, error)
ReplaceOnResetRESTMapperFromConfig builds a ResettableRESTMapper using a DynamicRESTMapper that is replaced when Reset is called.
DynamicRESTMapper dynamically and transparently discovers new resources, when a NoMatchFound error is encountered, but it doesn't automatically invalidate deleted resources. So use ReplaceOnResetRESTMapper to replace the whole DynamicRESTMapper when Reset is called.
type RestartableManager ¶
type RestartableManager interface { // Restart restarts the Manager and all the controllers it manages to watch the given GroupVersionKinds. // Returns if a restart actually happened and if there were any errors while doing it. Restart(gvks map[schema.GroupVersionKind]bool, force bool) (bool, error) }
RestartableManager is a controller manager that can be restarted based on the resources it syncs.
func NewManager ¶
func NewManager(mgr manager.Manager, builder ControllerBuilder) (RestartableManager, error)
NewManager returns a new RestartableManager
type TypedInformerFactory ¶ added in v1.16.0
type TypedInformerFactory struct { Client client.WithWatch ResyncPeriod time.Duration Indexers cache.Indexers }
TypedInformerFactory is a factory that constructs new SharedIndexInformers.
func NewTypedInformerFactory ¶ added in v1.16.0
func NewTypedInformerFactory(client client.WithWatch, resyncPeriod time.Duration) *TypedInformerFactory
NewTypedInformerFactory constructs a new TypedInformerFactory
func (*TypedInformerFactory) NewInformer ¶ added in v1.16.0
func (f *TypedInformerFactory) NewInformer(ctx context.Context, mapping *meta.RESTMapping, namespace string) (cache.SharedIndexInformer, error)
NewInformer constructs a new SharedIndexInformer for the specified resource.
type TypedListerWatcher ¶ added in v1.16.0
type TypedListerWatcher struct { // Context to pass to client list and watch methods Context context.Context // Client to list and watch with Client client.WithWatch // ExampleList is an example of the list type of resource to list & watch ExampleList client.ObjectList // DefaultListOptions are merged into the specified ListOptions on each // List and Watch call. // See MergeListOptions for details and limitations. DefaultListOptions *client.ListOptions }
TypedListerWatcher wraps a client.WithWatch and implements the cache.ListerWatcher interface with optional default ListOptions.
func (*TypedListerWatcher) List ¶ added in v1.16.0
func (fw *TypedListerWatcher) List(options metav1.ListOptions) (runtime.Object, error)
List satisfies the cache.Lister interface. The ListOptions specified here are merged with the ClientListerWatcher
func (*TypedListerWatcher) Watch ¶ added in v1.16.0
func (fw *TypedListerWatcher) Watch(options metav1.ListOptions) (watch.Interface, error)
Watch satisfies the cache.Watcher interface