controller

package
v1.0.0-rc.2 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2021 License: Apache-2.0 Imports: 10 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),
	}
}

NewKubernetesHooksController returns an implementation of KubernetesHooksController

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

NewKubernetesHooksController returns an implementation of KubernetesHooksController

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

NewKubernetesHooksController returns an implementation of KubernetesHooksController

View Source
var NewValidatingBindingsController = func() *validatingBindingsController {
	return &validatingBindingsController{
		ValidatingLinks: make(map[string]*ValidatingBindingToWebhookLink),
	}
}

NewKubernetesHooksController returns an implementation of KubernetesHooksController

Functions

func ConvertKubeEventToBindingContext

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

Types

type BindingExecutionInfo

type BindingExecutionInfo struct {
	BindingContext         []BindingContext
	IncludeSnapshots       []string
	IncludeAllSnapshots    bool
	AllowFailure           bool
	QueueName              string
	Binding                string
	Group                  string
	WaitForSynchronization bool
}
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 interface {
	WithBindings([]ConversionConfig)
	WithWebhookManager(manager *conversion.WebhookManager)
	EnableConversionBindings()
	DisableConversionBindings()
	CanHandleEvent(event conversion.Event, rule conversion.Rule) bool
	HandleEvent(event conversion.Event, rule conversion.Rule) BindingExecutionInfo
}

ScheduleBindingsController handles schedule bindings for one hook.

type HookController

type HookController interface {
	InitKubernetesBindings([]OnKubernetesEventConfig, kube_events_manager.KubeEventsManager)
	InitScheduleBindings([]ScheduleConfig, schedule_manager.ScheduleManager)
	InitValidatingBindings([]ValidatingConfig, *validating.WebhookManager)
	InitConversionBindings([]ConversionConfig, *conversion.WebhookManager)

	CanHandleKubeEvent(kubeEvent KubeEvent) bool
	CanHandleScheduleEvent(crontab string) bool
	CanHandleValidatingEvent(event ValidatingEvent) bool
	CanHandleConversionEvent(event conversion.Event, rule conversion.Rule) bool

	// These method should call underlying BindingController to get binding context
	// and then add Snapshots to binding context
	HandleEnableKubernetesBindings(createTasksFn func(BindingExecutionInfo)) error
	HandleKubeEvent(event KubeEvent, createTasksFn func(BindingExecutionInfo))
	HandleScheduleEvent(crontab string, createTasksFn func(BindingExecutionInfo))
	HandleValidatingEvent(event ValidatingEvent, createTasksFn func(BindingExecutionInfo))
	HandleConversionEvent(event conversion.Event, rule conversion.Rule, createTasksFn func(BindingExecutionInfo))

	StartMonitors()
	StopMonitors()

	EnableScheduleBindings()
	DisableScheduleBindings()

	EnableValidatingBindings()

	EnableConversionBindings()

	KubernetesSnapshots() map[string][]ObjectAndFilterResult
	UpdateSnapshots([]BindingContext) []BindingContext
}

func NewHookController

func NewHookController() HookController
type KubernetesBindingToMonitorLink struct {
	BindingName string
	MonitorId   string
	// Useful fields to create a BindingContext
	IncludeSnapshots       []string
	AllowFailure           bool
	JqFilter               string
	QueueName              string
	Group                  string
	WaitForSynchronization bool
}

A link between a hook and a kube monitor TODO replace "Useful fields" with OnKubernetesEventConfig

type KubernetesBindingsController

type KubernetesBindingsController interface {
	WithKubernetesBindings([]OnKubernetesEventConfig)
	WithKubeEventsManager(kube_events_manager.KubeEventsManager)
	EnableKubernetesBindings() ([]BindingExecutionInfo, error)
	StartMonitors()
	StopMonitors()
	CanHandleEvent(kubeEvent KubeEvent) bool
	HandleEvent(kubeEvent KubeEvent) BindingExecutionInfo
	BindingNames() []string
	SnapshotsFrom(bindingNames ...string) map[string][]ObjectAndFilterResult
	Snapshots() map[string][]ObjectAndFilterResult
}

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.

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

A link between a hook and a kube monitor

type ValidatingBindingsController

type ValidatingBindingsController interface {
	WithValidatingBindings([]ValidatingConfig)
	WithWebhookManager(*validating.WebhookManager)
	EnableValidatingBindings()
	DisableValidatingBindings()
	CanHandleEvent(event ValidatingEvent) bool
	HandleEvent(event ValidatingEvent) 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