addon_operator

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2022 License: Apache-2.0 Imports: 34 Imported by: 3

Documentation

Index

Constants

View Source
const ConvergeEventProp = "converge.event"

Variables

View Source
var DefaultHelmMonitorKubeClientMetricLabels = map[string]string{"component": "helm_monitor"}

Important! These labels should be consistent with similar labels in ShellOperator!

Functions

func AssembleAddonOperator added in v1.0.6

func AssembleAddonOperator(op *AddonOperator, modulesDir string, globalHooksDir string, tempDir string, debugServer *debug.Server, runtimeConfig *config.Config) (err error)

func ConvergeModulesInQueue added in v1.0.6

func ConvergeModulesInQueue(q *queue.TaskQueue) int

func ConvergeTasksInQueue added in v1.0.6

func ConvergeTasksInQueue(q *queue.TaskQueue) int

func DefaultHelmMonitorKubeClient added in v1.0.6

func DefaultHelmMonitorKubeClient(metricStorage *metric_storage.MetricStorage, metricLabels map[string]string) klient.Client

DefaultHelmMonitorKubeClient initializes a Kubernetes client for helm monitor.

func DrainNonMainQueue added in v1.0.6

func DrainNonMainQueue(q *queue.TaskQueue)

func InitDefaultHelmResourcesManager added in v1.0.6

func InitDefaultHelmResourcesManager(ctx context.Context, metricStorage *metric_storage.MetricStorage) (helm_resources_manager.HelmResourcesManager, error)

func IsConvergeTask added in v1.0.6

func IsConvergeTask(t sh_task.Task) bool

func IsFirstConvergeTask added in v1.0.6

func IsFirstConvergeTask(t sh_task.Task) bool

func ModulesWithPendingModuleRun added in v1.0.6

func ModulesWithPendingModuleRun(q *queue.TaskQueue) map[string]struct{}

ModulesWithPendingModuleRun returns names of all modules in pending ModuleRun tasks. First task in queue considered not pending and is ignored.

func NewConvergeModulesTask added in v1.0.6

func NewConvergeModulesTask(description string, convergeEvent ConvergeEvent, logLabels map[string]string) sh_task.Task

func QueueHasPendingModuleRunTask

func QueueHasPendingModuleRunTask(q *queue.TaskQueue, moduleName string) bool

QueueHasPendingModuleRunTask returns true if queue has pending tasks with the type "ModuleRun" related to the module "moduleName".

func RegisterAddonOperatorMetrics

func RegisterAddonOperatorMetrics(metricStorage *metric_storage.MetricStorage)

func RegisterDebugGlobalRoutes added in v1.0.6

func RegisterDebugGlobalRoutes(dbgSrv *debug.Server, op *AddonOperator)

func RegisterDebugModuleRoutes added in v1.0.6

func RegisterDebugModuleRoutes(dbgSrv *debug.Server, op *AddonOperator)

func RegisterDefaultRoutes added in v1.0.6

func RegisterDefaultRoutes(op *AddonOperator)

func RegisterHookMetrics

func RegisterHookMetrics(metricStorage *metric_storage.MetricStorage)

func RemoveAdjacentConvergeModules added in v1.0.6

func RemoveAdjacentConvergeModules(q *queue.TaskQueue, afterId string)

RemoveAdjacentConvergeModules removes ConvergeModules tasks right after the task with the specified ID.

func RemoveCurrentConvergeTasks added in v1.0.6

func RemoveCurrentConvergeTasks(q *queue.TaskQueue, afterId string) bool

RemoveCurrentConvergeTasks detects if converge tasks present in the main queue after task which ID equals to 'afterID'. These tasks are drained and the method returns true.

func SetupModuleManager added in v1.0.6

func SetupModuleManager(op *AddonOperator, modulesDir string, globalHooksDir string, tempDir string, runtimeConfig *config.Config)

func StartLiveTicksUpdater added in v1.0.6

func StartLiveTicksUpdater(metricStorage *metric_storage.MetricStorage)

func StartTasksQueueLengthUpdater added in v1.0.6

func StartTasksQueueLengthUpdater(metricStorage *metric_storage.MetricStorage, tqs *queue.TaskQueueSet)

Types

type AddonOperator

type AddonOperator struct {
	*shell_operator.ShellOperator

	// KubeConfigManager monitors changes in ConfigMap.
	KubeConfigManager kube_config_manager.KubeConfigManager

	// ModuleManager is the module manager object, which monitors configuration
	// and variable changes.
	ModuleManager module_manager.ModuleManager

	Helm *helm.Helm

	// HelmResourcesManager monitors absent resources created for modules.
	HelmResourcesManager helm_resources_manager.HelmResourcesManager

	// converge state
	ConvergeState *ConvergeState
	// contains filtered or unexported fields
}

AddonOperator extends ShellOperator with modules and global hooks and with a value storage.

func Init added in v1.0.6

func Init() (*AddonOperator, error)

func NewAddonOperator

func NewAddonOperator() *AddonOperator

func (*AddonOperator) AllowHandleScheduleEvent added in v1.0.6

func (op *AddonOperator) AllowHandleScheduleEvent(hook *module_manager.CommonHook) bool

AllowHandleScheduleEvent returns false if the Schedule event can be ignored.

func (*AddonOperator) BootstrapMainQueue added in v1.0.6

func (op *AddonOperator) BootstrapMainQueue(tqs *queue.TaskQueueSet)

BootstrapMainQueue adds tasks to initiate Startup sequence:

- Run onStartup hooks. - Enable global schedule bindings. - Enable kubernetes bindings: run Synchronization tasks. - Purge unknown Helm releases. - Start reload all modules.

func (*AddonOperator) CheckConvergeStatus

func (op *AddonOperator) CheckConvergeStatus(t sh_task.Task)

CheckConvergeStatus detects if converge process is started and updates ConvergeState. It updates metrics on converge finish.

func (*AddonOperator) CreateAfterAllTasks added in v1.0.6

func (op *AddonOperator) CreateAfterAllTasks(logLabels map[string]string, eventDescription string) ([]sh_task.Task, error)

CreateAfterAllTasks returns tasks to run AfterAll global hooks.

func (*AddonOperator) CreateAndStartQueue added in v1.0.6

func (op *AddonOperator) CreateAndStartQueue(queueName string) bool

CreateAndStartQueue creates a named queue and starts it. It returns false is queue is already created

func (*AddonOperator) CreateAndStartQueuesForAllModuleHooks added in v1.0.6

func (op *AddonOperator) CreateAndStartQueuesForAllModuleHooks()

CreateAndStartQueuesForAllModuleHooks creates queues for all registered modules. It is safe to run this method multiple times, as it checks for existing queues.

func (*AddonOperator) CreateAndStartQueuesForGlobalHooks added in v1.0.6

func (op *AddonOperator) CreateAndStartQueuesForGlobalHooks()

CreateAndStartQueuesForGlobalHooks creates queues for all registered global hooks. It is safe to run this method multiple times, as it checks for existing queues.

func (*AddonOperator) CreateAndStartQueuesForModuleHooks added in v1.0.6

func (op *AddonOperator) CreateAndStartQueuesForModuleHooks(moduleName string)

CreateAndStartQueuesForModuleHooks creates queues for registered module hooks. It is safe to run this method multiple times, as it checks for existing queues.

func (*AddonOperator) CreateBeforeAllTasks added in v1.0.6

func (op *AddonOperator) CreateBeforeAllTasks(logLabels map[string]string, eventDescription string) []sh_task.Task

CreateBeforeAllTasks returns tasks to run BeforeAll global hooks.

func (*AddonOperator) CreateBootstrapTasks added in v1.0.6

func (op *AddonOperator) CreateBootstrapTasks(logLabels map[string]string) []sh_task.Task

func (*AddonOperator) CreateConvergeModulesTasks added in v1.0.6

func (op *AddonOperator) CreateConvergeModulesTasks(state *module_manager.ModulesState, logLabels map[string]string, eventDescription string) []sh_task.Task

CreateConvergeModulesTasks creates ModuleRun/ModuleDelete tasks based on moduleManager state.

func (*AddonOperator) CreatePurgeTasks added in v1.0.6

func (op *AddonOperator) CreatePurgeTasks(modulesToPurge []string, t sh_task.Task) []sh_task.Task

CreatePurgeTasks returns ModulePurge tasks for each unknown Helm release.

func (*AddonOperator) CreateReloadModulesTasks added in v1.0.6

func (op *AddonOperator) CreateReloadModulesTasks(moduleNames []string, logLabels map[string]string, eventDescription string) []sh_task.Task

func (*AddonOperator) DrainModuleQueues added in v1.0.3

func (op *AddonOperator) DrainModuleQueues(modName string)

func (*AddonOperator) HandleConvergeModules added in v1.0.6

func (op *AddonOperator) HandleConvergeModules(t sh_task.Task, logLabels map[string]string) (res queue.TaskResult)

HandleConvergeModules is a multi-phase task.

func (*AddonOperator) HandleDiscoverHelmReleases added in v1.0.6

func (op *AddonOperator) HandleDiscoverHelmReleases(t sh_task.Task, labels map[string]string) (res queue.TaskResult)

HandleDiscoverHelmReleases runs RefreshStateFromHelmReleases to detect modules state at start.

func (*AddonOperator) HandleGlobalHookEnableKubernetesBindings added in v1.0.6

func (op *AddonOperator) HandleGlobalHookEnableKubernetesBindings(t sh_task.Task, labels map[string]string) (res queue.TaskResult)

HandleGlobalHookEnableKubernetesBindings add Synchronization tasks.

func (*AddonOperator) HandleGlobalHookRun

func (op *AddonOperator) HandleGlobalHookRun(t sh_task.Task, labels map[string]string) (res queue.TaskResult)

func (*AddonOperator) HandleModuleDelete added in v1.0.6

func (op *AddonOperator) HandleModuleDelete(t sh_task.Task, labels map[string]string) (status queue.TaskStatus)

HandleModuleDelete deletes helm release for known module.

func (*AddonOperator) HandleModuleHookRun

func (op *AddonOperator) HandleModuleHookRun(t sh_task.Task, labels map[string]string) (res queue.TaskResult)

func (*AddonOperator) HandleModulePurge added in v1.0.6

func (op *AddonOperator) HandleModulePurge(t sh_task.Task, labels map[string]string) (status queue.TaskStatus)

HandleModulePurge run helm purge for unknown module.

func (*AddonOperator) HandleModuleRun

func (op *AddonOperator) HandleModuleRun(t sh_task.Task, labels map[string]string) (res queue.TaskResult)

HandleModuleRun starts a module by executing module hooks and installing a Helm chart.

Execution sequence: - Run onStartup hooks. - Queue kubernetes hooks as Synchronization tasks. - Wait until Synchronization tasks are done to fill all snapshots. - Enable kubernetes events. - Enable schedule events. - Run beforeHelm hooks - Run Helm to install or upgrade a module's chart. - Run afterHelm hooks.

ModuleRun is restarted if hook or chart is failed. After first HandleModuleRun success, no onStartup and kubernetes.Synchronization tasks will run.

func (*AddonOperator) InitModuleManager

func (op *AddonOperator) InitModuleManager() error

InitModuleManager initialize KubeConfigManager and ModuleManager, reads values from ConfigMap for the first time and sets handlers for kubernetes and schedule events.

func (*AddonOperator) IsStartupConvergeDone added in v1.0.5

func (op *AddonOperator) IsStartupConvergeDone() bool

func (*AddonOperator) RegisterManagerEventsHandlers added in v1.0.6

func (op *AddonOperator) RegisterManagerEventsHandlers()

func (*AddonOperator) Shutdown

func (op *AddonOperator) Shutdown()

func (*AddonOperator) Start

func (op *AddonOperator) Start()

Start runs all managers, event and queue handlers.

func (*AddonOperator) StartModuleManagerEventHandler

func (op *AddonOperator) StartModuleManagerEventHandler()

func (*AddonOperator) Stop

func (op *AddonOperator) Stop()

func (*AddonOperator) TaskHandler

func (op *AddonOperator) TaskHandler(t sh_task.Task) queue.TaskResult

TaskHandler handles tasks in queue.

func (*AddonOperator) UpdateFirstConvergeStatus added in v1.0.6

func (op *AddonOperator) UpdateFirstConvergeStatus(convergeTasks int)

UpdateFirstConvergeStatus checks first converge status and prints log messages if first converge is in progress.

func (*AddonOperator) UpdateWaitInQueueMetric

func (op *AddonOperator) UpdateWaitInQueueMetric(t sh_task.Task)

UpdateWaitInQueueMetric increases task_wait_in_queue_seconds_total counter for the task type. TODO pass queue name from handler, not from task

func (*AddonOperator) WithContext

func (op *AddonOperator) WithContext(ctx context.Context) *AddonOperator

type ConvergeEvent added in v1.0.6

type ConvergeEvent string
const (
	// OperatorStartup is a first converge during startup.
	OperatorStartup ConvergeEvent = "OperatorStartup"
	// GlobalValuesChanged is a converge initiated by changing values in the global hook.
	GlobalValuesChanged ConvergeEvent = "GlobalValuesChanged"
	// KubeConfigChanged is a converge started after changing ConfigMap.
	KubeConfigChanged ConvergeEvent = "KubeConfigChanged"
	// ReloadAllModules is a converge queued to the
	ReloadAllModules ConvergeEvent = "ReloadAllModules"
)

type ConvergePhase added in v1.0.6

type ConvergePhase string
const (
	StandBy                 ConvergePhase = "StandBy"
	RunBeforeAll            ConvergePhase = "RunBeforeAll"
	WaitBeforeAll           ConvergePhase = "WaitBeforeAll"
	WaitDeleteAndRunModules ConvergePhase = "WaitDeleteAndRunModules"
	WaitAfterAll            ConvergePhase = "WaitAfterAll"
)

type ConvergeState added in v1.0.6

type ConvergeState struct {
	Phase        ConvergePhase
	FirstStarted bool
	FirstDone    bool
	StartedAt    int64
	Activation   string
}

func NewConvergeState added in v1.0.6

func NewConvergeState() *ConvergeState

Jump to

Keyboard shortcuts

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