Documentation ¶
Index ¶
- Variables
- func AssembleCommonOperator(op *ShellOperator) (err error)
- func AssembleShellOperator(op *ShellOperator, hooksDir string, tempDir string, debugServer *debug.Server, ...) (err error)
- func DefaultDebugServer() *debug.Server
- func DefaultHookMetricStorage(ctx context.Context) *metric_storage.MetricStorage
- func DefaultIfEmpty(m map[string]string, def map[string]string) map[string]string
- func DefaultMainKubeClient(metricStorage *metric_storage.MetricStorage, metricLabels map[string]string) klient.Client
- func DefaultMetricStorage(ctx context.Context) *metric_storage.MetricStorage
- func DefaultObjectPatcherKubeClient(metricStorage *metric_storage.MetricStorage, metricLabels map[string]string) klient.Client
- func EnsureTempDirectory(inDir string) (string, error)
- func InitDefaultDebugServer() (*debug.Server, error)
- func InitDefaultMainKubeClient(metricStorage *metric_storage.MetricStorage) (klient.Client, error)
- func InitDefaultObjectPatcher(metricStorage *metric_storage.MetricStorage) (*object_patch.ObjectPatcher, error)
- func RegisterCommonMetrics(metricStorage *metric_storage.MetricStorage)
- func RegisterDebugConfigRoutes(dbgSrv *debug.Server, runtimeConfig *config.Config)
- func RegisterDebugHookRoutes(dbgSrv *debug.Server, op *ShellOperator)
- func RegisterDebugQueueRoutes(dbgSrv *debug.Server, op *ShellOperator)
- func RegisterDefaultRoutes(op *ShellOperator)
- func RegisterHookMetrics(metricStorage *metric_storage.MetricStorage)
- func RegisterKubeEventsManagerMetrics(metricStorage *metric_storage.MetricStorage, labels map[string]string)
- func RegisterShellOperatorMetrics(metricStorage *metric_storage.MetricStorage)
- func RegisterTaskQueueMetrics(metricStorage *metric_storage.MetricStorage)
- func RequireExistingDirectory(inDir string) (dir string, err error)
- func SetupEventManagers(op *ShellOperator)
- func SetupHookManagers(op *ShellOperator, hooksDir string, tempDir string)
- func SetupHookMetricStorageAndServer(ctx context.Context) (*metric_storage.MetricStorage, error)
- func StartHttpServer(ip string, port string, mux *http.ServeMux) error
- type CombineResult
- type ManagerEventsHandler
- func (m *ManagerEventsHandler) Start()
- func (m *ManagerEventsHandler) Stop()
- func (m *ManagerEventsHandler) WithContext(ctx context.Context)
- func (m *ManagerEventsHandler) WithKubeEventHandler(fn func(kubeEvent KubeEvent) []task.Task)
- func (m *ManagerEventsHandler) WithKubeEventsManager(mgr kube_events_manager.KubeEventsManager)
- func (m *ManagerEventsHandler) WithScheduleEventHandler(fn func(crontab string) []task.Task)
- func (m *ManagerEventsHandler) WithScheduleManager(mgr schedule_manager.ScheduleManager)
- func (m *ManagerEventsHandler) WithTaskQueueSet(tqs *queue.TaskQueueSet)
- type ShellOperator
- func (op *ShellOperator) BootstrapMainQueue(tqs *queue.TaskQueueSet)
- func (op *ShellOperator) CombineBindingContextForHook(q *queue.TaskQueue, t task.Task, stopCombineFn func(tsk task.Task) bool) *CombineResult
- func (op *ShellOperator) ConversionEventHandler(event conversion.Event) (*conversion.Response, error)
- func (op *ShellOperator) HandleRunHook(t task.Task, taskHook *hook.Hook, hookMeta HookMetadata, ...) error
- func (op *ShellOperator) InitAndStartHookQueues()
- func (op *ShellOperator) InitConversionWebhookManager() (err error)
- func (op *ShellOperator) InitHookManager() (err error)
- func (op *ShellOperator) InitValidatingWebhookManager() (err error)
- func (op *ShellOperator) RunMetrics()
- func (op *ShellOperator) Shutdown()
- func (op *ShellOperator) Start()
- func (op *ShellOperator) Stop()
- func (op *ShellOperator) TaskHandleEnableKubernetesBindings(t task.Task) queue.TaskResult
- func (op *ShellOperator) TaskHandleHookRun(t task.Task) queue.TaskResult
- func (op *ShellOperator) TaskHandler(t task.Task) queue.TaskResult
- func (op *ShellOperator) WithContext(ctx context.Context) *ShellOperator
- func (op *ShellOperator) WithKubernetesClient(klient klient.Client)
- func (op *ShellOperator) WithMetricStorage(metricStorage *metric_storage.MetricStorage)
Constants ¶
This section is empty.
Variables ¶
var ( DefaultMainKubeClientMetricLabels = map[string]string{"component": "main"} DefaultObjectPatcherKubeClientMetricLabels = map[string]string{"component": "object_patcher"} )
var WaitQueuesTimeout = time.Second * 10
Functions ¶
func AssembleCommonOperator ¶
func AssembleCommonOperator(op *ShellOperator) (err error)
AssembleCommonOperator instantiate common dependencies. These dependencies may be used for shell-operator derivatives, like addon-operator.
func AssembleShellOperator ¶
func AssembleShellOperator(op *ShellOperator, hooksDir string, tempDir string, debugServer *debug.Server, runtimeConfig *config.Config) (err error)
AssembleShellOperator uses settings in app package to create all dependencies needed for the full-fledged ShellOperator.
- check directories - start debug server - initialize dependencies:
- metric storage
- kubernetes client config
- empty set of task queues
- hook manager
- kubernetes events manager
- schedule manager
func DefaultDebugServer ¶
func DefaultHookMetricStorage ¶
func DefaultHookMetricStorage(ctx context.Context) *metric_storage.MetricStorage
DefaultHookMetricStorage creates MetricStorage object with new registry to scrape hook metrics on separate port.
func DefaultIfEmpty ¶
func DefaultMainKubeClient ¶
func DefaultMainKubeClient(metricStorage *metric_storage.MetricStorage, metricLabels map[string]string) klient.Client
DefaultMainKubeClient creates a Kubernetes client for hooks. No timeout specified, because timeout will reset connections for Watchers.
func DefaultMetricStorage ¶
func DefaultMetricStorage(ctx context.Context) *metric_storage.MetricStorage
func DefaultObjectPatcherKubeClient ¶
func DefaultObjectPatcherKubeClient(metricStorage *metric_storage.MetricStorage, metricLabels map[string]string) klient.Client
DefaultObjectPatcherKubeClient initializes a Kubernetes client for ObjectPatcher. Timeout is specified here.
func EnsureTempDirectory ¶
func InitDefaultDebugServer ¶
func InitDefaultMainKubeClient ¶
func InitDefaultMainKubeClient(metricStorage *metric_storage.MetricStorage) (klient.Client, error)
func InitDefaultObjectPatcher ¶
func InitDefaultObjectPatcher(metricStorage *metric_storage.MetricStorage) (*object_patch.ObjectPatcher, error)
func RegisterCommonMetrics ¶
func RegisterCommonMetrics(metricStorage *metric_storage.MetricStorage)
func RegisterDebugConfigRoutes ¶
RegisterDebugConfigRoutes registers routes to manage runtime configuration.
func RegisterDebugHookRoutes ¶
func RegisterDebugHookRoutes(dbgSrv *debug.Server, op *ShellOperator)
func RegisterDebugQueueRoutes ¶
func RegisterDebugQueueRoutes(dbgSrv *debug.Server, op *ShellOperator)
func RegisterDefaultRoutes ¶
func RegisterDefaultRoutes(op *ShellOperator)
func RegisterHookMetrics ¶
func RegisterHookMetrics(metricStorage *metric_storage.MetricStorage)
Shell-operator specific metrics for HookManager
func RegisterKubeEventsManagerMetrics ¶
func RegisterKubeEventsManagerMetrics(metricStorage *metric_storage.MetricStorage, labels map[string]string)
metrics for kube_event_manager
func RegisterShellOperatorMetrics ¶
func RegisterShellOperatorMetrics(metricStorage *metric_storage.MetricStorage)
RegisterShellOperatorMetrics register all metrics needed for the ShellOperator.
func RegisterTaskQueueMetrics ¶
func RegisterTaskQueueMetrics(metricStorage *metric_storage.MetricStorage)
func SetupEventManagers ¶
func SetupEventManagers(op *ShellOperator)
SetupEventManagers instantiate queues and managers for schedule and Kubernetes events.
func SetupHookManagers ¶
func SetupHookManagers(op *ShellOperator, hooksDir string, tempDir string)
SetupHookManagers instantiates different hook managers.
func SetupHookMetricStorageAndServer ¶
func SetupHookMetricStorageAndServer(ctx context.Context) (*metric_storage.MetricStorage, error)
Types ¶
type CombineResult ¶
type CombineResult struct { BindingContexts []BindingContext MonitorIDs []string }
func CombineBindingContextForHook ¶
func CombineBindingContextForHook(tqs *queue.TaskQueueSet, q *queue.TaskQueue, t task.Task, stopCombineFn func(tsk task.Task) bool) *CombineResult
CombineBindingContextForHook combines binding contexts from a sequence of task with similar hook name and task type into array of binding context and delete excess tasks from queue.
Also, sequences of binding contexts with similar group are compacted in one binding context.
If input task has no metadata, result will be nil. Metadata should implement HookNameAccessor, BindingContextAccessor and MonitorIDAccessor interfaces. DEV WARNING! Do not use HookMetadataAccessor here. Use only *Accessor interfaces because this method is used from addon-operator.
type ManagerEventsHandler ¶
type ManagerEventsHandler struct {
// contains filtered or unexported fields
}
func NewManagerEventsHandler ¶
func NewManagerEventsHandler() *ManagerEventsHandler
func (*ManagerEventsHandler) Start ¶
func (m *ManagerEventsHandler) Start()
func (*ManagerEventsHandler) Stop ¶
func (m *ManagerEventsHandler) Stop()
func (*ManagerEventsHandler) WithContext ¶
func (m *ManagerEventsHandler) WithContext(ctx context.Context)
func (*ManagerEventsHandler) WithKubeEventHandler ¶
func (m *ManagerEventsHandler) WithKubeEventHandler(fn func(kubeEvent KubeEvent) []task.Task)
func (*ManagerEventsHandler) WithKubeEventsManager ¶
func (m *ManagerEventsHandler) WithKubeEventsManager(mgr kube_events_manager.KubeEventsManager)
func (*ManagerEventsHandler) WithScheduleEventHandler ¶
func (m *ManagerEventsHandler) WithScheduleEventHandler(fn func(crontab string) []task.Task)
func (*ManagerEventsHandler) WithScheduleManager ¶
func (m *ManagerEventsHandler) WithScheduleManager(mgr schedule_manager.ScheduleManager)
func (*ManagerEventsHandler) WithTaskQueueSet ¶
func (m *ManagerEventsHandler) WithTaskQueueSet(tqs *queue.TaskQueueSet)
type ShellOperator ¶
type ShellOperator struct { MetricStorage *metric_storage.MetricStorage // separate metric storage for hook metrics if separate listen port is configured HookMetricStorage *metric_storage.MetricStorage KubeClient klient.Client ObjectPatcher *object_patch.ObjectPatcher ScheduleManager schedule_manager.ScheduleManager KubeEventsManager kube_events_manager.KubeEventsManager TaskQueues *queue.TaskQueueSet ManagerEventsHandler *ManagerEventsHandler HookManager hook.HookManager AdmissionWebhookManager *admission.WebhookManager ConversionWebhookManager *conversion.WebhookManager // contains filtered or unexported fields }
func Init ¶
func Init() (*ShellOperator, error)
Init initialize logging, ensures directories and creates a ShellOperator instance with all dependencies.
func NewShellOperator ¶
func NewShellOperator() *ShellOperator
func (*ShellOperator) BootstrapMainQueue ¶
func (op *ShellOperator) BootstrapMainQueue(tqs *queue.TaskQueueSet)
BootstrapMainQueue adds tasks to run hooks with OnStartup bindings and tasks to enable kubernetes bindings.
func (*ShellOperator) CombineBindingContextForHook ¶
func (op *ShellOperator) CombineBindingContextForHook(q *queue.TaskQueue, t task.Task, stopCombineFn func(tsk task.Task) bool) *CombineResult
CombineBindingContextForHook combines binding contexts from a sequence of task with similar hook name and task type into array of binding context and delete excess tasks from queue.
Also, sequences of binding contexts with similar group are compacted in one binding context.
If input task has no metadata, result will be nil. Metadata should implement HookNameAccessor, BindingContextAccessor and MonitorIDAccessor interfaces. DEV WARNING! Do not use HookMetadataAccessor here. Use only *Accessor interfaces because this method is used from addon-operator.
func (*ShellOperator) ConversionEventHandler ¶
func (op *ShellOperator) ConversionEventHandler(event conversion.Event) (*conversion.Response, error)
ConversionEventHandler is called when Kubernetes requests a conversion.
func (*ShellOperator) HandleRunHook ¶
func (*ShellOperator) InitAndStartHookQueues ¶
func (op *ShellOperator) InitAndStartHookQueues()
InitAndStartHookQueues create all queues defined in hooks
func (*ShellOperator) InitConversionWebhookManager ¶
func (op *ShellOperator) InitConversionWebhookManager() (err error)
InitConversionWebhookManager creates and starts a conversion webhook manager.
func (*ShellOperator) InitHookManager ¶
func (op *ShellOperator) InitHookManager() (err error)
InitHookManager load hooks from HooksDir and defines event handlers that emit tasks.
func (*ShellOperator) InitValidatingWebhookManager ¶
func (op *ShellOperator) InitValidatingWebhookManager() (err error)
InitValidatingWebhookManager adds kubernetesValidating hooks to a WebhookManager and set a validating event handler.
func (*ShellOperator) RunMetrics ¶
func (op *ShellOperator) RunMetrics()
func (*ShellOperator) Shutdown ¶
func (op *ShellOperator) Shutdown()
Shutdown pause kubernetes events handling and stop queues. Wait for queues to stop.
func (*ShellOperator) Stop ¶
func (op *ShellOperator) Stop()
func (*ShellOperator) TaskHandleEnableKubernetesBindings ¶
func (op *ShellOperator) TaskHandleEnableKubernetesBindings(t task.Task) queue.TaskResult
TaskHandleEnableKubernetesBindings creates task for each Kubernetes binding in the hook and queues them.
func (*ShellOperator) TaskHandleHookRun ¶
func (op *ShellOperator) TaskHandleHookRun(t task.Task) queue.TaskResult
TODO use Context to pass labels and a queue name
func (*ShellOperator) TaskHandler ¶
func (op *ShellOperator) TaskHandler(t task.Task) queue.TaskResult
TaskHandler
func (*ShellOperator) WithContext ¶
func (op *ShellOperator) WithContext(ctx context.Context) *ShellOperator
func (*ShellOperator) WithKubernetesClient ¶
func (op *ShellOperator) WithKubernetesClient(klient klient.Client)
func (*ShellOperator) WithMetricStorage ¶
func (op *ShellOperator) WithMetricStorage(metricStorage *metric_storage.MetricStorage)