Documentation ¶
Index ¶
- func Filter(gvk schema.GroupVersionKind) func(obj interface{}) bool
- func IsPermanentError(err error) bool
- func NewPermanentError(err error) error
- func PassNew(f func(interface{})) func(interface{}, interface{})
- type Callback
- type Impl
- func (c *Impl) Enqueue(obj interface{})
- func (c *Impl) EnqueueControllerOf(obj interface{})
- func (c *Impl) EnqueueKey(key string)
- func (c *Impl) EnqueueLabelOfClusterScopedResource(nameLabel string) func(obj interface{})
- func (c *Impl) EnqueueLabelOfNamespaceScopedResource(namespaceLabel, nameLabel string) func(obj interface{})
- func (c *Impl) GlobalResync(si cache.SharedInformer)
- func (c *Impl) Run(threadiness int, stopCh <-chan struct{}) error
- type Reconciler
- type StatsReporter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Filter ¶
func Filter(gvk schema.GroupVersionKind) func(obj interface{}) bool
Filter makes it simple to create FilterFunc's for use with cache.FilteringResourceEventHandler that filter based on the schema.GroupVersionKind of the controlling resources.
func IsPermanentError ¶
IsPermanentError returns true if given error is permanentError
func NewPermanentError ¶
NewPermanentError returns a new instance of permanentError. Users can wrap an error as permanentError with this in reconcile, when he does not expect the key to get re-queued.
func PassNew ¶
func PassNew(f func(interface{})) func(interface{}, interface{})
PassNew makes it simple to create an UpdateFunc for use with cache.ResourceEventHandlerFuncs that can delegate the same methods as AddFunc/DeleteFunc but passing through only the second argument (which is the "new" object).
Types ¶
type Callback ¶
type Callback func(interface{})
func EnsureTypeMeta ¶
func EnsureTypeMeta(f Callback, gvk schema.GroupVersionKind) Callback
type Impl ¶
type Impl struct { // Reconciler is the workhorse of this controller, it is fed the keys // from the workqueue to process. Public for testing. Reconciler Reconciler // WorkQueue is a rate limited work queue. This is used to queue work to be // processed instead of performing it as soon as a change happens. This // means we can ensure we only process a fixed amount of resources at a // time, and makes it easy to ensure we are never processing the same item // simultaneously in two different workers. WorkQueue workqueue.RateLimitingInterface // contains filtered or unexported fields }
Impl is our core controller implementation. It handles queuing and feeding work from the queue to an implementation of Reconciler.
func NewImpl ¶
func NewImpl(r Reconciler, logger *zap.SugaredLogger, workQueueName string, reporter StatsReporter) *Impl
NewImpl instantiates an instance of our controller that will feed work to the provided Reconciler as it is enqueued.
func (*Impl) Enqueue ¶
func (c *Impl) Enqueue(obj interface{})
Enqueue takes a resource, converts it into a namespace/name string, and passes it to EnqueueKey.
func (*Impl) EnqueueControllerOf ¶
func (c *Impl) EnqueueControllerOf(obj interface{})
EnqueueControllerOf takes a resource, identifies its controller resource, converts it into a namespace/name string, and passes that to EnqueueKey.
func (*Impl) EnqueueKey ¶
EnqueueKey takes a namespace/name string and puts it onto the work queue.
func (*Impl) EnqueueLabelOfClusterScopedResource ¶
EnqueueLabelOfClusterScopedResource returns with an Enqueue func that takes a resource, identifies its controller resource through given name label, and passes it to EnqueueKey. The controller resource must be of cluster-scoped.
func (*Impl) EnqueueLabelOfNamespaceScopedResource ¶
func (c *Impl) EnqueueLabelOfNamespaceScopedResource(namespaceLabel, nameLabel string) func(obj interface{})
EnqueueLabelOfNamespaceScopedResource returns with an Enqueue func that takes a resource, identifies its controller resource through given namespace and name labels, converts it into a namespace/name string, and passes that to EnqueueKey. The controller resource must be of namespace-scoped.
func (*Impl) GlobalResync ¶
func (c *Impl) GlobalResync(si cache.SharedInformer)
GlobalResync enqueues all objects from the passed SharedInformer
type Reconciler ¶
Reconciler is the interface that controller implementations are expected to implement, so that the shared controller.Impl can drive work through it.
type StatsReporter ¶
type StatsReporter interface { // ReportQueueDepth reports the queue depth metric ReportQueueDepth(v int64) error // ReportReconcile reports the count and latency metrics for a reconcile operation ReportReconcile(duration time.Duration, key, success string) error }
StatsReporter defines the interface for sending metrics
func NewStatsReporter ¶
func NewStatsReporter(reconciler string) (StatsReporter, error)
NewStatsReporter creates a reporter that collects and reports metrics