Skip to content

Commit

Permalink
add a flag to events
Browse files Browse the repository at this point in the history
Signed-off-by: Mikhail Scherba <[email protected]>
  • Loading branch information
miklezzzz committed Dec 19, 2023
1 parent fa68ae0 commit bd87d5e
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 4 deletions.
9 changes: 9 additions & 0 deletions pkg/kube_config_manager/kube_config_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,15 @@ func NewKubeConfigManager(ctx context.Context, bk backend.ConfigHandler, runtime
}
}

func (kcm *KubeConfigManager) IsModuleEnabled(moduleName string) bool {
moduleConfig, found := kcm.currentConfig.Modules[moduleName]
if !found {
return false
}

return *moduleConfig.IsEnabled
}

func (kcm *KubeConfigManager) Init() error {
kcm.logEntry.Debug("Init: KubeConfigManager")

Expand Down
3 changes: 3 additions & 0 deletions pkg/module_manager/models/modules/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ const (
type ModuleEvent struct {
ModuleName string
EventType ModuleEventType

// an option for registering a module without reload
Reregister bool
}
50 changes: 46 additions & 4 deletions pkg/module_manager/module_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ type DirectoryConfig struct {

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

// ModuleManagerDependencies pass dependencies for ModuleManager
Expand Down Expand Up @@ -1093,9 +1094,32 @@ func (mm *ModuleManager) ReregisterModule(moduleName, modulePath string) error {

// check if module exists
if mm.modules.Has(mod.GetName()) {
// if it's disabled - update its configuration and exit
// if module is disabled in module manager
if !mm.IsModuleEnabled(mod.GetName()) {
// and disabled in the module kube config - update and exit
if !mm.dependencies.KubeConfigManager.IsModuleEnabled(mod.GetName()) {
mm.modules.Add(mod)
return nil
}
// if the module kube config has enabled true, check enable scripts
mm.modules.Add(mod)
module := mm.GetModule(mod.GetName())
isEnabled, err := module.RunEnabledScript(mm.TempDir, mm.GetEnabledModuleNames(), map[string]string{})
if err != nil {
return err
}

if isEnabled {
mm.AddEnabledModuleName(mod.GetName())
mm.AddEnabledModuleByConfigName(mod.GetName())
// enqueue module startup sequence if it is enabled
mm.RerunModule(mod.GetName())
mm.moduleEventC <- events.ModuleEvent{
ModuleName: mod.GetName(),
EventType: events.ModuleEnabled,
}
}

return nil
}

Expand All @@ -1114,19 +1138,37 @@ func (mm *ModuleManager) ReregisterModule(moduleName, modulePath string) error {
// upsert a new module in the moduleset
mm.modules.Add(mod)

// launch module rerun sequence
mm.RerunModule(mod.GetName())
// get new module version
module = mm.GetModule(mod.GetName())

// check if module is enabled via enabled scripts
isEnabled, err := module.RunEnabledScript(mm.TempDir, mm.GetEnabledModuleNames(), map[string]string{})
if err != nil {
return err
}

if isEnabled {
// enqueue module startup sequence if it is enabled
mm.RerunModule(mod.GetName())
} else {
// throw disable module event
mm.moduleEventC <- events.ModuleEvent{
ModuleName: mod.GetName(),
EventType: events.ModuleDisabled,
}
}

return nil
}

// module doesn't exist
mm.modules.Add(mod)

// new module requires to be registered
// a new module requires to be registered, possibly fast
mm.moduleEventC <- events.ModuleEvent{
ModuleName: mod.GetName(),
EventType: events.ModuleRegistered,
Reregister: true,
}

return nil
Expand Down

0 comments on commit bd87d5e

Please sign in to comment.