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