Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextForChannel ¶
func ContextForChannel(parentCh <-chan struct{}) (context.Context, context.CancelFunc)
ContextForChannel derives a child context from a parent channel.
The derived context's Done channel is closed when the returned cancel function is called or when the parent channel is closed, whichever happens first.
Note the caller must *always* call the CancelFunc, otherwise resources may be leaked.
Types ¶
type APIResourceMeta ¶
type APIResourceMeta struct { // GroupVersionKind is the gvk of the resource. GroupVersionKind schema.GroupVersionKind // GroupVersionResource is the gvr of the resource. GroupVersionResource schema.GroupVersionResource // IsClusterScoped indicates if the resource is a cluster scoped resource. IsClusterScoped bool // contains filtered or unexported fields }
APIResourceMeta contains the gvk and associated metadata about an api resource
type Manager ¶
type Manager interface { // AddDynamicResources builds a dynamicInformer for each resource in the resources list with the event handler. // A resource is dynamic if its definition can be created/deleted/updated during runtime. // Normally, it is a custom resource that is installed by users. The handler should not be nil. AddDynamicResources(resources []APIResourceMeta, handler cache.ResourceEventHandler, listComplete bool) // AddStaticResource creates a dynamicInformer for the static 'resource' and set its event handler. // A resource is static if its definition is pre-determined and immutable during runtime. // Normally, it is a resource that is pre-installed by the system. // This function can only be called once for each type of static resource during the initialization of the informer manager. AddStaticResource(resource APIResourceMeta, handler cache.ResourceEventHandler) // IsInformerSynced checks if the resource's informer is synced. IsInformerSynced(resource schema.GroupVersionResource) bool // Start will run all informers, the informers will keep running until the channel closed. // It is intended to be called after create new informer(s), and it's safe to call multi times. Start() // Stop stops all informers of in this manager. Once it is stopped, it will be not able to Start again. Stop() // Lister returns a generic lister used to get 'resource' from informer's store. // The informer for 'resource' will be created if not exist, but without any event handler. Lister(resource schema.GroupVersionResource) cache.GenericLister // GetNameSpaceScopedResources returns the list of namespace scoped resources we are watching. GetNameSpaceScopedResources() []schema.GroupVersionResource // IsClusterScopedResources returns if a resource is cluster scoped. IsClusterScopedResources(resource schema.GroupVersionKind) bool // WaitForCacheSync waits for the informer cache to populate. WaitForCacheSync() // GetClient returns the dynamic dynamicClient. GetClient() dynamic.Interface }
InformerManager manages dynamic shared informer for all resources, include Kubernetes resource and custom resources defined by CustomResourceDefinition.
Click to show internal directories.
Click to hide internal directories.