Skip to content

Commit 95c2323

Browse files
committed
converge modules on enable/disable
Signed-off-by: Mikhail Scherba <[email protected]>
1 parent 50e9b44 commit 95c2323

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

pkg/module_manager/module_manager.go

+27-10
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"runtime/trace"
1010
"strings"
1111
"sync"
12-
"syscall"
1312
"time"
1413

1514
// bindings constants and binding configs
@@ -1098,7 +1097,7 @@ func mergeEnabled(enabledFlags ...*bool) bool {
10981097
}
10991098

11001099
// PushDeleteModule pushes moduleDelete task for a module into the main queue
1101-
func (mm *ModuleManager) PushDeleteModule(moduleName string) {
1100+
func (mm *ModuleManager) PushDeleteModuleTask(moduleName string) {
11021101
// check if there is already moduleDelete task in the main queue for the module
11031102
if queueHasPendingModuleDeleteTask(mm.dependencies.TaskQueues.GetMain(), moduleName) {
11041103
return
@@ -1113,10 +1112,27 @@ func (mm *ModuleManager) PushDeleteModule(moduleName string) {
11131112
newTask.SetProp("triggered-by", "ModuleManager")
11141113

11151114
mm.dependencies.TaskQueues.GetMain().AddLast(newTask.WithQueuedAt(time.Now()))
1115+
1116+
log.Infof("Push ConvergeModules task because %q Module was disabled", moduleName)
1117+
mm.PushConvergeModulesTask(moduleName, "disabled")
1118+
}
1119+
1120+
// PushConvergeModulesTask pushes ConvergeModulesTask into the main queue to update all modules on a module enable/disable event
1121+
func (mm *ModuleManager) PushConvergeModulesTask(moduleName, moduleState string) {
1122+
newConvergeTask := sh_task.NewTask(task.ConvergeModules).
1123+
WithQueueName("main").
1124+
WithMetadata(task.HookMetadata{
1125+
EventDescription: fmt.Sprintf("ModuleManager-%s-Module", moduleState),
1126+
ModuleName: moduleName,
1127+
}).
1128+
WithQueuedAt(time.Now())
1129+
newConvergeTask.SetProp("triggered-by", "ModuleManager")
1130+
1131+
mm.dependencies.TaskQueues.GetMain().AddLast(newConvergeTask.WithQueuedAt(time.Now()))
11161132
}
11171133

1118-
// PushRunModule pushes moduleRun task for a module into the main queue if there is no such a task for the module
1119-
func (mm *ModuleManager) PushRunModule(moduleName string) error {
1134+
// PushRunModuleTask pushes moduleRun task for a module into the main queue if there is no such a task for the module
1135+
func (mm *ModuleManager) PushRunModuleTask(moduleName string) error {
11201136
// update module's kube config
11211137
err := mm.dependencies.KubeConfigManager.UpdateModuleConfig(moduleName)
11221138
if err != nil {
@@ -1206,8 +1222,9 @@ func (mm *ModuleManager) RegisterModule(moduleSource, modulePath string) error {
12061222
}
12071223

12081224
if isEnabled {
1209-
log.Infof("Restarting operator because %q Module was re-enabled", moduleName)
1210-
return syscall.Kill(1, syscall.SIGUSR2)
1225+
log.Infof("Push ConvergeModules task because %q Module was re-enabled", moduleName)
1226+
mm.PushConvergeModulesTask(moduleName, "re-enabled")
1227+
12111228
}
12121229
return nil
12131230
}
@@ -1234,7 +1251,7 @@ func (mm *ModuleManager) RegisterModule(moduleSource, modulePath string) error {
12341251

12351252
if isEnabled {
12361253
// enqueue module startup sequence if it is enabled
1237-
mm.PushRunModule(moduleName)
1254+
mm.PushRunModuleTask(moduleName)
12381255
if err != nil {
12391256
return err
12401257
}
@@ -1245,7 +1262,7 @@ func (mm *ModuleManager) RegisterModule(moduleSource, modulePath string) error {
12451262
EventType: events.ModuleDisabled,
12461263
}
12471264
mm.SendModuleEvent(ev)
1248-
mm.PushDeleteModule(moduleName)
1265+
mm.PushDeleteModuleTask(moduleName)
12491266
// modules is disabled - update modulemanager's state
12501267
mm.DeleteEnabledModuleName(moduleName)
12511268
}
@@ -1272,8 +1289,8 @@ func (mm *ModuleManager) RegisterModule(moduleSource, modulePath string) error {
12721289
}
12731290

12741291
if isEnabled {
1275-
log.Infof("Restarting operator because %q Module was registered", moduleName)
1276-
return syscall.Kill(1, syscall.SIGUSR2)
1292+
log.Infof("Push ConvergeModules task because %q Module was enabled", moduleName)
1293+
mm.PushConvergeModulesTask(moduleName, "registered-and-enabled")
12771294
}
12781295
return nil
12791296
}

0 commit comments

Comments
 (0)