module_manager

package
v1.3.5 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2023 License: Apache-2.0 Imports: 34 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DirectoryConfig added in v1.1.3

type DirectoryConfig struct {
	ModulesDir     string
	GlobalHooksDir string
	TempDir        string
}

DirectoryConfig configures directories for ModuleManager

type KubeConfigManager added in v1.1.3

type KubeConfigManager interface {
	SaveConfigValues(key string, values utils.Values) error
}

type ModuleManager

type ModuleManager struct {

	// Directories.
	ModulesDir     string
	GlobalHooksDir string
	TempDir        string

	ValuesValidator *validation.ValuesValidator
	// contains filtered or unexported fields
}

func NewModuleManager added in v1.0.6

func NewModuleManager(ctx context.Context, cfg *ModuleManagerConfig) *ModuleManager

NewModuleManager returns new MainModuleManager

func (*ModuleManager) ApplyBindingActions added in v1.1.3

func (mm *ModuleManager) ApplyBindingActions(moduleHook *hooks.ModuleHook, bindingActions []go_hook.BindingAction) error

func (*ModuleManager) DeleteModule

func (mm *ModuleManager) DeleteModule(moduleName string, logLabels map[string]string) error

func (*ModuleManager) DisableModuleHooks

func (mm *ModuleManager) DisableModuleHooks(moduleName string)

func (*ModuleManager) DumpDynamicEnabled added in v1.1.3

func (mm *ModuleManager) DumpDynamicEnabled() string

func (*ModuleManager) DynamicEnabledChecksum

func (mm *ModuleManager) DynamicEnabledChecksum() string

DynamicEnabledChecksum returns checksum for dynamicEnabled map

func (*ModuleManager) EnableModuleScheduleBindings added in v1.0.5

func (mm *ModuleManager) EnableModuleScheduleBindings(moduleName string)

func (*ModuleManager) GetDependencies added in v1.3.3

func (mm *ModuleManager) GetDependencies() *ModuleManagerDependencies

GetDependencies fetch dependencies struct from ModuleManager note: not the best way but it's required in some hooks

func (*ModuleManager) GetEnabledModuleNames added in v1.0.6

func (mm *ModuleManager) GetEnabledModuleNames() []string

func (*ModuleManager) GetGlobal added in v1.3.3

func (mm *ModuleManager) GetGlobal() *modules.GlobalModule

func (*ModuleManager) GetGlobalHook

func (mm *ModuleManager) GetGlobalHook(name string) *hooks.GlobalHook

func (*ModuleManager) GetGlobalHooksInOrder

func (mm *ModuleManager) GetGlobalHooksInOrder(bindingType BindingType) []string

func (*ModuleManager) GetGlobalHooksNames added in v1.0.4

func (mm *ModuleManager) GetGlobalHooksNames() []string

func (*ModuleManager) GetKubeConfigValid added in v1.0.6

func (mm *ModuleManager) GetKubeConfigValid() bool

func (*ModuleManager) GetModule

func (mm *ModuleManager) GetModule(name string) *modules.BasicModule

func (*ModuleManager) GetModuleEventsChannel added in v1.3.3

func (mm *ModuleManager) GetModuleEventsChannel() chan events.ModuleEvent

GetModuleEventsChannel returns a channel with events that occur during module processing events channel is created only if someone is reading it

func (*ModuleManager) GetModuleNames added in v1.1.0

func (mm *ModuleManager) GetModuleNames() []string

func (*ModuleManager) GetValuesValidator added in v1.1.0

func (mm *ModuleManager) GetValuesValidator() *validation.ValuesValidator

func (*ModuleManager) GlobalSynchronizationNeeded

func (mm *ModuleManager) GlobalSynchronizationNeeded() bool

GlobalSynchronizationNeeded is true if there is at least one global kubernetes hook with executeHookOnSynchronization.

func (*ModuleManager) GlobalSynchronizationState added in v1.0.5

func (mm *ModuleManager) GlobalSynchronizationState() *modules.SynchronizationState

func (*ModuleManager) HandleGlobalEnableKubernetesBindings

func (mm *ModuleManager) HandleGlobalEnableKubernetesBindings(hookName string, createTaskFn func(*hooks.GlobalHook, controller.BindingExecutionInfo)) error

func (*ModuleManager) HandleKubeEvent

func (mm *ModuleManager) HandleKubeEvent(kubeEvent KubeEvent, createGlobalTaskFn func(*hooks.GlobalHook, controller.BindingExecutionInfo), createModuleTaskFn func(*modules.BasicModule, *hooks.ModuleHook, controller.BindingExecutionInfo))

func (*ModuleManager) HandleModuleEnableKubernetesBindings

func (mm *ModuleManager) HandleModuleEnableKubernetesBindings(moduleName string, createTaskFn func(*hooks.ModuleHook, controller.BindingExecutionInfo)) error

func (*ModuleManager) HandleNewKubeConfig added in v1.0.6

func (mm *ModuleManager) HandleNewKubeConfig(kubeConfig *config.KubeConfig) (*ModulesState, error)

HandleNewKubeConfig validates new config values with config schemas, checks which parts changed and returns state with AllEnabledModules and ModulesToReload list if only module sections are changed. It returns a nil state if new KubeConfig not changing config values or 'enabled by config' state.

This method updates 'config values' caches: - mm.enabledModulesByConfig - mm.kubeGlobalConfigValues - mm.kubeModulesConfigValues

func (*ModuleManager) HandleScheduleEvent

func (mm *ModuleManager) HandleScheduleEvent(crontab string, createGlobalTaskFn func(*hooks.GlobalHook, controller.BindingExecutionInfo), createModuleTaskFn func(*modules.BasicModule, *hooks.ModuleHook, controller.BindingExecutionInfo)) error

func (*ModuleManager) Init

func (mm *ModuleManager) Init() error

Init — initialize module manager

func (*ModuleManager) IsModuleEnabled added in v1.0.6

func (mm *ModuleManager) IsModuleEnabled(moduleName string) bool

IsModuleEnabled ...

func (*ModuleManager) LoopByBinding added in v1.1.3

func (mm *ModuleManager) LoopByBinding(binding BindingType, fn func(gh *hooks.GlobalHook, m *modules.BasicModule, mh *hooks.ModuleHook))

func (*ModuleManager) RefreshEnabledState added in v1.0.6

func (mm *ModuleManager) RefreshEnabledState(logLabels map[string]string) (*ModulesState, error)

RefreshEnabledState runs enabled hooks for all 'enabled by config' modules and calculates new arrays of enabled modules. It returns ModulesState with lists of modules to disable and enable.

This method is called after beforeAll hooks to take into account possible changes to 'dynamic enabled'.

This method updates caches: - mm.enabledModules

func (*ModuleManager) RefreshStateFromHelmReleases added in v1.0.6

func (mm *ModuleManager) RefreshStateFromHelmReleases(logLabels map[string]string) (*ModulesState, error)

RefreshStateFromHelmReleases retrieves all Helm releases. It treats releases for known modules as an initial list of enabled modules. Run this method once at startup.

func (*ModuleManager) RegisterModuleHooks

func (mm *ModuleManager) RegisterModuleHooks(ml *modules.BasicModule, logLabels map[string]string) error

func (*ModuleManager) RunGlobalHook

func (mm *ModuleManager) RunGlobalHook(hookName string, binding BindingType, bindingContext []BindingContext, logLabels map[string]string) (string, string, error)

func (*ModuleManager) RunModule

func (mm *ModuleManager) RunModule(moduleName string, logLabels map[string]string) (bool, error)

RunModule runs beforeHelm hook, helm upgrade --install and afterHelm or afterDeleteHelm hook

func (*ModuleManager) RunModuleHook

func (mm *ModuleManager) RunModuleHook(moduleName, hookName string, binding BindingType, bindingContext []BindingContext, logLabels map[string]string) (beforeChecksum string, afterChecksum string, err error)

func (*ModuleManager) RunModuleHooks added in v1.3.3

func (mm *ModuleManager) RunModuleHooks(m *modules.BasicModule, bt sh_op_types.BindingType, logLabels map[string]string) error

RunOnStartup is a phase of module lifecycle that runs onStartup hooks. It is a handler of task MODULE_RUN Run is a phase of module lifecycle that runs onStartup and beforeHelm hooks, helm upgrade --install command and afterHelm hook. It is a handler of task MODULE_RUN

func (*ModuleManager) SendModuleEvent added in v1.3.3

func (mm *ModuleManager) SendModuleEvent(ev events.ModuleEvent)

func (*ModuleManager) SetKubeConfigValid added in v1.0.6

func (mm *ModuleManager) SetKubeConfigValid(valid bool)

func (*ModuleManager) SetKubeConfigValuesValid added in v1.1.3

func (mm *ModuleManager) SetKubeConfigValuesValid(valid bool)

func (*ModuleManager) SetModuleLoader added in v1.3.3

func (mm *ModuleManager) SetModuleLoader(ld loader.ModuleLoader)

func (*ModuleManager) Start

func (mm *ModuleManager) Start()

Start runs service go routine.

func (*ModuleManager) Stop added in v1.1.3

func (mm *ModuleManager) Stop()

func (*ModuleManager) ValidateModule added in v1.2.0

func (mm *ModuleManager) ValidateModule(mod *modules.BasicModule) error

ValidateModule this method is outdated, have to change it with module validation Deprecated: move it to module constructor TODO: rethink this

type ModuleManagerConfig added in v1.1.4

type ModuleManagerConfig struct {
	DirectoryConfig DirectoryConfig
	Dependencies    ModuleManagerDependencies
}

type ModuleManagerDependencies added in v1.1.3

type ModuleManagerDependencies struct {
	KubeObjectPatcher    *object_patch.ObjectPatcher
	KubeEventsManager    kube_events_manager.KubeEventsManager
	KubeConfigManager    KubeConfigManager
	ScheduleManager      schedule_manager.ScheduleManager
	Helm                 *helm.ClientFactory
	HelmResourcesManager helm_resources_manager.HelmResourcesManager
	MetricStorage        *metric_storage.MetricStorage
	HookMetricStorage    *metric_storage.MetricStorage
}

ModuleManagerDependencies pass dependencies for ModuleManager

type ModulesState

type ModulesState struct {
	// All enabled modules.
	AllEnabledModules []string
	// Modules that should be deleted.
	ModulesToDisable []string
	// Modules that was disabled and now are enabled.
	ModulesToEnable []string
	// Modules changed after ConfigMap changes
	ModulesToReload []string
	// Helm releases without module directory (unknown modules).
	ModulesToPurge []string
}

ModulesState determines which modules should be enabled, disabled or reloaded.

Directories

Path Synopsis
fs
models

Jump to

Keyboard shortcuts

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