controllers

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package controllers implements the lazy loader logic for Katanomi.

Package controllers implements the lazy loader logic for Katanomi.

Package controllers implements the lazy loader logic for Katanomi.

Index

Constants

View Source
const DefaultMaxConcurrentReconciles = 10

DefaultMaxConcurrentReconciles is the default number of max concurrent reconciles

Variables

This section is empty.

Functions

func ApplyControllerBuilderOptions added in v0.9.0

func ApplyControllerBuilderOptions(builder *builder.Builder, funcs ...ControllerBuilderOption) *builder.Builder

ApplyControllerBuilderOptions applies the given options to the controller builder

func BuilderOptions added in v0.9.0

func BuilderOptions(opts ...BuilderOptionFunc) controller.Options

BuilderOptions returns a functional set of options with conservative defaults.

func CreateOrGetWithRetry added in v0.9.0

func CreateOrGetWithRetry(ctx context.Context, clt client.Client, obj client.Object) error

CreateOrGetWithRetry will retry to create source multi times if encounter error however if error is alreadyExist then will get the resource and return it

func DefaultOptions added in v0.9.0

func DefaultOptions() controller.Options

DefaultOptions returns the default options for the controller

func DefaultRateLimiter

func DefaultRateLimiter() workqueue.RateLimiter

DefaultRateLimiter returns a workqueue rate limiter with a starting value of 2 seconds opposed to controller-runtime's default one of 1 millisecond

func HasControllerReferenceByObjectReference

func HasControllerReferenceByObjectReference(obj metav1.Object, ref *corev1.ObjectReference, controller bool) bool

HasControllerReferenceByObjectReference has controller owner reference

func RateLimiterCtx

func RateLimiterCtx(ctx context.Context) workqueue.RateLimiter

RateLimiterCtx retrieves a RateLimiter from context. Returns nil if none

func ReconcileRequestCtx

func ReconcileRequestCtx(ctx context.Context) ctrl.Request

ReconcileRequestCtx retrieves a Request key from context returns an empty object if none

func WithRateLimiter

func WithRateLimiter(ctx context.Context, rl workqueue.RateLimiter) context.Context

WithRateLimiter stores a RateLimiter into context

func WithReconcileRequest

func WithReconcileRequest(ctx context.Context, key ctrl.Request) context.Context

WithReconcileRequest stores a Request key into context

Types

type BuilderOptionFunc added in v0.9.0

type BuilderOptionFunc func(options controller.Options) controller.Options

BuilderOptionFunc is a function that can be used to configure the controller builder options

func MaxConCurrentReconciles added in v0.9.0

func MaxConCurrentReconciles(num int) BuilderOptionFunc

MaxConCurrentReconciles sets the max concurrent reconciles

func RateLimiter added in v0.9.0

RateLimiter sets the rate limiter

type ControllerBuilderOption added in v0.9.0

type ControllerBuilderOption func(*builder.Builder) *builder.Builder

ControllerBuilderOption is a function that can be used to configure the controller builder

func WithBuilderOptions added in v0.9.0

func WithBuilderOptions(opts controller.Options) ControllerBuilderOption

WithBuilderOptions returns a ControllerBuilderOption that applies the given options to the controller builder

type ControllerChecker added in v0.9.0

type ControllerChecker interface {
	DependencyCheckerInterface
	SetupChecker
}

type DependencyCheckerInterface added in v0.9.0

type DependencyCheckerInterface interface {
	DependentCrdInstalled(ctx context.Context, logger *zap.SugaredLogger) (bool, error)
}

DependencyCheckerInterface is the interface for checking dependencies

type Interface

type Interface interface {
	Name() string
	Setup(context.Context, manager.Manager, *zap.SugaredLogger) error
}

Interface is a basic interface that every reconciler should implement to create a new controller and startup in the controller manager

type LazyLoader

type LazyLoader interface {
	LazyLoad(context.Context, manager.Manager, *zap.SugaredLogger, SetupChecker) error
	Start(context.Context) error
}

LazyLoader loads whenever dependencies are ready

func NewLazyLoader

func NewLazyLoader(ctx context.Context, interval time.Duration) LazyLoader

NewLazyLoader constructs new LazyLoader for controllers

type SetupChecker

type SetupChecker interface {
	Interface
	CheckSetup(context.Context, manager.Manager, *zap.SugaredLogger) error
}

SetupChecker controllers with dependencies on other resources will need to implement this interface to allow lazy loading

Jump to

Keyboard shortcuts

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