kubehandler

package module
v2.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

README

Kubehandler

An event dispatcher for Kubernetes controllers.

Note: This is alpha software. Please use with caution.

Sample Controller

There is a sample controller available in sample-controller/. You can use that as a starting point for building a new controller.

EventHandler

Kubehandler defines a Go interface, EventHandler. Any type that implements this interface can be used to handle events.

type EventHandler interface {
	GetName() string
	GetSynced() cache.InformerSynced
	GetInformer() cache.SharedInformer
	AddFunc(ctx context.Context, namespace, name string) error
	UpdateFunc(ctx context.Context, namespace, name string) error
	DeleteFunc(ctx context.Context, namespace, name string) error
}

Each of the Add/Update/Delete Funcs receive a context and the namespace and the name of the resource that has been modified (or created or deleted). kubehandler.DefaultHandler implements a DefaultHandler that accepts all events and does nothing. In order to make use of this behaviour, you can use the bundled DefaultHandler by inheriting from it:

type DeploymentsHandler struct {
	kubehandler.DefaultHandler
}

You will need an EventLoop to consume events. You can create one like so:

	loop := kubehandler.NewEventLoop("workqueueName")

You can then register the EventHandler with the EventLoop.

	loop.Register(&DeploymentsHandler{
		DefaultHandler: kubehandler.DefaultHandler{
			Synced:   deploymentsInformer.Informer().HasSynced,
			Informer: deploymentsInformer.Informer(),
		},
	})

Finally, run the EventLoop.

	threadiness := 2
	ctx := context.Background()

	loop.Run(ctx, threadiness)

You may use the context passed in to EventLoop.Run to stop the EventLoop.

	ctx, cancelFunc := context.WithCancel(context.Background())
	loop.Run(ctx, threadiness)

	cancelFunc()

DefaultHandler

DefaultHandler provides implementations of EventHandler.

GetName() string

Returns defaultHandler.Name

GetSynced() cache.InformerSynced

Returns defaultHandler.Synced

GetInformer() cache.SharedInformer

Returns defaultHandler.Informer

The following functions are no-ops.

AddFunc(ctx context.Context, namespace, name string) error
UpdateFunc(ctx context.Context, namespace, name string) error
DeleteFunc(ctx context.Context, namespace, name string) error

Note: The current module supports Kubernetes 1.22 and above. Kubernetes 1.21 and lower compatible module can be found in branch v0.

Documentation

Index

Constants

View Source
const (
	WorkqueueAddEvent    string = "add"
	WorkqueueUpdateEvent string = "update"
	WorkqueueDeleteEvent string = "delete"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type DefaultHandler

type DefaultHandler struct {
	Synced   cache.InformerSynced
	Informer cache.SharedInformer
	Name     string
}

func (*DefaultHandler) AddFunc

func (handler *DefaultHandler) AddFunc(ctx context.Context, namespace, name string) error

func (*DefaultHandler) DeleteFunc

func (handler *DefaultHandler) DeleteFunc(ctx context.Context, namespace, name string) error

func (*DefaultHandler) GetInformer

func (handler *DefaultHandler) GetInformer() cache.SharedInformer

func (*DefaultHandler) GetName

func (handler *DefaultHandler) GetName() string

func (*DefaultHandler) GetSynced

func (handler *DefaultHandler) GetSynced() cache.InformerSynced

func (*DefaultHandler) UpdateFunc

func (handler *DefaultHandler) UpdateFunc(ctx context.Context, namespace, name string) error

type EventHandler

type EventHandler interface {
	GetName() string
	GetSynced() cache.InformerSynced
	GetInformer() cache.SharedInformer
	AddFunc(ctx context.Context, namespace, name string) error
	UpdateFunc(ctx context.Context, namespace, name string) error
	DeleteFunc(ctx context.Context, namespace, name string) error
}

EventHandler represents Event Handling for a Resource

type EventLoop

type EventLoop interface {
	Run(ctx context.Context, threadiness int) error
	Register(handler EventHandler)
}

EventLoop represents a central EventHandler registry which runs in a loop

func NewEventLoop

func NewEventLoop(name string) EventLoop

NewEventLoop instantiates a workqueue backed EventLoop

type WorkQueue

type WorkQueue interface {
	Run(ctx context.Context, threadiness int) error
	AddSynced(cache.InformerSynced)
	EnqueueAdd(kind string, obj interface{})
	EnqueueUpdate(kind string, obj interface{})
	EnqueueDelete(kind string, obj interface{})
	RegisterAddHandler(kind string, handler WorkQueueHandler)
	RegisterUpdateHandler(kind string, handler WorkQueueHandler)
	RegisterDeleteHandler(kind string, handler WorkQueueHandler)
	Length() int
}

WorkQueue manages the rate limiting interface

func NewWorkQueue

func NewWorkQueue(name string) WorkQueue

NewWorkQueue creates a WorkQueue with a name

type WorkQueueHandler

type WorkQueueHandler func(ctx context.Context, namespace, name string) error

WorkQueueHandler defines the contract of a handler function

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL