controller

package
v1.4.14-fix-leak Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2024 License: Apache-2.0 Imports: 12 Imported by: 11

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NewConversionBindingsController = func() *ConversionBindingsController {
	return &ConversionBindingsController{
		Links: make(map[string]map[conversion.Rule]*ConversionBindingToWebhookLink),
	}
}

NewConversionBindingsController returns an implementation of ConversionBindingsController

View Source
var NewKubernetesBindingsController = func() *kubernetesBindingsController {
	return &kubernetesBindingsController{
		BindingMonitorLinks: make(map[string]*KubernetesBindingToMonitorLink),
	}
}

NewKubernetesBindingsController returns an implementation of KubernetesBindingsController

View Source
var NewScheduleBindingsController = func() *scheduleBindingsController {
	return &scheduleBindingsController{
		ScheduleLinks: make(map[string]*ScheduleBindingToCrontabLink),
	}
}

NewScheduleBindingsController returns an implementation of ScheduleBindingsController

View Source
var NewValidatingBindingsController = func() *AdmissionBindingsController {
	return &AdmissionBindingsController{
		AdmissionLinks: make(map[string]*AdmissionBindingToWebhookLink),
	}
}

NewValidatingBindingsController returns an implementation of AdmissionBindingsController

Functions

func ConvertKubeEventToBindingContext

func ConvertKubeEventToBindingContext(kubeEvent KubeEvent, link *KubernetesBindingToMonitorLink) []BindingContext

Types

type AdmissionBindingToWebhookLink struct {
	BindingType     BindingType
	BindingName     string
	ConfigurationId string
	WebhookId       string
	// Useful fields to create a BindingContext
	IncludeSnapshots []string
	Group            string
}

AdmissionBindingToWebhookLink is a link between a hook and a webhook configuration.

type AdmissionBindingsController added in v1.2.0

type AdmissionBindingsController struct {
	// Controller holds validating/mutating bindings from one hook. Hook always belongs to one configurationId.
	ConfigurationId string
	// WebhookId -> link
	AdmissionLinks map[string]*AdmissionBindingToWebhookLink

	ValidatingBindings []ValidatingConfig
	MutatingBindings   []MutatingConfig
	// contains filtered or unexported fields
}

func (*AdmissionBindingsController) CanHandleEvent added in v1.2.0

func (c *AdmissionBindingsController) CanHandleEvent(event admission.Event) bool

func (*AdmissionBindingsController) DisableMutatingBindings added in v1.2.0

func (c *AdmissionBindingsController) DisableMutatingBindings()

func (*AdmissionBindingsController) DisableValidatingBindings added in v1.2.0

func (c *AdmissionBindingsController) DisableValidatingBindings()

func (*AdmissionBindingsController) EnableMutatingBindings added in v1.2.0

func (c *AdmissionBindingsController) EnableMutatingBindings()

func (*AdmissionBindingsController) EnableValidatingBindings added in v1.2.0

func (c *AdmissionBindingsController) EnableValidatingBindings()

func (*AdmissionBindingsController) HandleEvent added in v1.2.0

func (*AdmissionBindingsController) WithMutatingBindings added in v1.2.0

func (c *AdmissionBindingsController) WithMutatingBindings(bindings []MutatingConfig)

func (*AdmissionBindingsController) WithValidatingBindings added in v1.2.0

func (c *AdmissionBindingsController) WithValidatingBindings(bindings []ValidatingConfig)

func (*AdmissionBindingsController) WithWebhookManager added in v1.2.0

func (c *AdmissionBindingsController) WithWebhookManager(mgr *admission.WebhookManager)

type BindingExecutionInfo

type BindingExecutionInfo struct {
	BindingContext      []BindingContext
	IncludeSnapshots    []string
	IncludeAllSnapshots bool
	AllowFailure        bool
	QueueName           string
	Binding             string
	Group               string
	KubernetesBinding   OnKubernetesEventConfig
}
type ConversionBindingToWebhookLink struct {
	BindingName string
	// Useful fields to create a BindingContext
	CrdName          string
	FromVersion      string
	ToVersion        string
	IncludeSnapshots []string
	Group            string
}

A link between a hook and a kube monitor

type ConversionBindingsController

type ConversionBindingsController struct {
	// crdName -> conversionRule id -> link
	Links map[string]map[conversion.Rule]*ConversionBindingToWebhookLink

	Bindings []ConversionConfig
	// contains filtered or unexported fields
}

ConversionBindingsController holds validating bindings from one hook.

func (*ConversionBindingsController) CanHandleEvent

func (c *ConversionBindingsController) CanHandleEvent(crdName string, request *v1.ConversionRequest, rule conversion.Rule) bool

func (*ConversionBindingsController) DisableConversionBindings

func (c *ConversionBindingsController) DisableConversionBindings()

func (*ConversionBindingsController) EnableConversionBindings

func (c *ConversionBindingsController) EnableConversionBindings()

func (*ConversionBindingsController) HandleEvent

func (*ConversionBindingsController) WithBindings

func (c *ConversionBindingsController) WithBindings(bindings []ConversionConfig)

func (*ConversionBindingsController) WithWebhookManager

func (c *ConversionBindingsController) WithWebhookManager(mgr *conversion.WebhookManager)

type HookController

type HookController struct {
	KubernetesController KubernetesBindingsController
	ScheduleController   ScheduleBindingsController
	AdmissionController  *AdmissionBindingsController
	ConversionController *ConversionBindingsController
	// contains filtered or unexported fields
}

func NewHookController

func NewHookController() *HookController

func (*HookController) CanHandleAdmissionEvent added in v1.2.0

func (hc *HookController) CanHandleAdmissionEvent(event admission.Event) bool

func (*HookController) CanHandleConversionEvent

func (hc *HookController) CanHandleConversionEvent(crdName string, event *v1.ConversionRequest, rule conversion.Rule) bool

func (*HookController) CanHandleKubeEvent

func (hc *HookController) CanHandleKubeEvent(kubeEvent KubeEvent) bool

func (*HookController) CanHandleScheduleEvent

func (hc *HookController) CanHandleScheduleEvent(crontab string) bool

func (*HookController) DisableScheduleBindings

func (hc *HookController) DisableScheduleBindings()

func (*HookController) EnableAdmissionBindings added in v1.2.0

func (hc *HookController) EnableAdmissionBindings()

func (*HookController) EnableConversionBindings

func (hc *HookController) EnableConversionBindings()

func (*HookController) EnableScheduleBindings

func (hc *HookController) EnableScheduleBindings()

func (*HookController) HandleAdmissionEvent added in v1.2.0

func (hc *HookController) HandleAdmissionEvent(event admission.Event, createTasksFn func(BindingExecutionInfo))

func (*HookController) HandleConversionEvent

func (hc *HookController) HandleConversionEvent(crdName string, request *v1.ConversionRequest, rule conversion.Rule, createTasksFn func(BindingExecutionInfo))

func (*HookController) HandleEnableKubernetesBindings

func (hc *HookController) HandleEnableKubernetesBindings(createTasksFn func(BindingExecutionInfo)) error

func (*HookController) HandleKubeEvent

func (hc *HookController) HandleKubeEvent(event KubeEvent, createTasksFn func(BindingExecutionInfo))

func (*HookController) HandleScheduleEvent

func (hc *HookController) HandleScheduleEvent(crontab string, createTasksFn func(BindingExecutionInfo))

func (*HookController) InitAdmissionBindings added in v1.2.0

func (hc *HookController) InitAdmissionBindings(vbindings []ValidatingConfig, mbindings []MutatingConfig, webhookMgr *admission.WebhookManager)

func (*HookController) InitConversionBindings

func (hc *HookController) InitConversionBindings(bindings []ConversionConfig, webhookMgr *conversion.WebhookManager)

func (*HookController) InitKubernetesBindings

func (hc *HookController) InitKubernetesBindings(bindings []OnKubernetesEventConfig, kubeEventMgr kube_events_manager.KubeEventsManager)

func (*HookController) InitScheduleBindings

func (hc *HookController) InitScheduleBindings(bindings []ScheduleConfig, scheduleMgr schedule_manager.ScheduleManager)

func (*HookController) KubernetesSnapshots

func (hc *HookController) KubernetesSnapshots() map[string][]ObjectAndFilterResult

KubernetesSnapshots returns a 'full snapshot': all snapshots for all registered kubernetes bindings. Note: no caching as in UpdateSnapshots because KubernetesSnapshots used for non-combined binding contexts.

func (*HookController) SnapshotsDump added in v1.0.8

func (hc *HookController) SnapshotsDump() map[string]interface{}

func (*HookController) SnapshotsInfo added in v1.0.8

func (hc *HookController) SnapshotsInfo() []string

func (*HookController) StopMonitors

func (hc *HookController) StopMonitors()

func (*HookController) UnlockKubernetesEvents

func (hc *HookController) UnlockKubernetesEvents()

func (*HookController) UnlockKubernetesEventsFor

func (hc *HookController) UnlockKubernetesEventsFor(monitorID string)

func (*HookController) UpdateMonitor added in v1.0.2

func (hc *HookController) UpdateMonitor(monitorId string, kind, apiVersion string) error

func (*HookController) UpdateSnapshots

func (hc *HookController) UpdateSnapshots(context []BindingContext) []BindingContext

UpdateSnapshots ensures fresh consistent snapshots for combined binding contexts.

It uses caching to retrieve snapshots for a particular binding name only once. This caching is important for Synchronization and self-includes: Combined "Synchronization" binging contexts or "Synchronization" with self-inclusion may require several calls to Snapshot*() methods, but objects may change between these calls.

type KubernetesBindingToMonitorLink struct {
	MonitorId     string
	BindingConfig OnKubernetesEventConfig
}

KubernetesBindingToMonitorLink is a link between a binding config and a Monitor.

type KubernetesBindingsController

type KubernetesBindingsController interface {
	WithKubernetesBindings([]OnKubernetesEventConfig)
	WithKubeEventsManager(kube_events_manager.KubeEventsManager)
	EnableKubernetesBindings() ([]BindingExecutionInfo, error)
	UpdateMonitor(monitorId string, kind, apiVersion string) error
	UnlockEvents()
	UnlockEventsFor(monitorID string)
	StopMonitors()
	CanHandleEvent(kubeEvent KubeEvent) bool
	HandleEvent(kubeEvent KubeEvent) BindingExecutionInfo
	BindingNames() []string

	SnapshotsFrom(bindingNames ...string) map[string][]ObjectAndFilterResult
	SnapshotsFor(bindingName string) []ObjectAndFilterResult
	Snapshots() map[string][]ObjectAndFilterResult
	SnapshotsInfo() []string
	SnapshotsDump() map[string]interface{}
}

KubernetesBindingsController handles kubernetes bindings for one hook.

type ScheduleBindingToCrontabLink struct {
	BindingName string
	Crontab     string
	// Useful fields to create a BindingContext
	IncludeSnapshots []string
	AllowFailure     bool
	QueueName        string
	Group            string
}

A link between a hook and a kube monitor

type ScheduleBindingsController

type ScheduleBindingsController interface {
	WithScheduleBindings([]ScheduleConfig)
	WithScheduleManager(schedule_manager.ScheduleManager)
	EnableScheduleBindings()
	DisableScheduleBindings()
	CanHandleEvent(crontab string) bool
	HandleEvent(crontab string) []BindingExecutionInfo
}

ScheduleBindingsController handles schedule bindings for one hook.

Jump to

Keyboard shortcuts

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