Improve exported module and subsystem states

This commit is contained in:
Daniel 2020-06-15 15:49:32 +02:00
parent ddba5b44b9
commit 4dcec099e6
2 changed files with 11 additions and 12 deletions

View file

@ -30,11 +30,16 @@ func (m *Module) SetEnabled(enable bool) (changed bool) {
return m.Disable() return m.Disable()
} }
// Enabled returns wether or not the module is currently enabled. // Enabled returns whether or not the module is currently enabled.
func (m *Module) Enabled() bool { func (m *Module) Enabled() bool {
return m.enabled.IsSet() return m.enabled.IsSet()
} }
// EnabledAsDependency returns whether or not the module is currently enabled as a dependency.
func (m *Module) EnabledAsDependency() bool {
return m.enabledAsDependency.IsSet()
}
// EnableModuleManagement enables the module management functionality within modules. The supplied notify function will be called whenever the status of a module changes. The affected module will be in the parameter. You will need to manually enable modules, else nothing will start. // EnableModuleManagement enables the module management functionality within modules. The supplied notify function will be called whenever the status of a module changes. The affected module will be in the parameter. You will need to manually enable modules, else nothing will start.
func EnableModuleManagement(changeNotifyFn func(*Module)) { func EnableModuleManagement(changeNotifyFn func(*Module)) {
if moduleMgmtEnabled.SetToIf(false, true) { if moduleMgmtEnabled.SetToIf(false, true) {

View file

@ -63,7 +63,7 @@ func statusFromModule(module *modules.Module) *ModuleStatus {
status := &ModuleStatus{ status := &ModuleStatus{
Name: module.Name, Name: module.Name,
module: module, module: module,
Enabled: module.Enabled(), Enabled: module.Enabled() || module.EnabledAsDependency(),
Status: module.Status(), Status: module.Status(),
} }
status.FailureStatus, status.FailureID, status.FailureMsg = module.FailureStatus() status.FailureStatus, status.FailureID, status.FailureMsg = module.FailureStatus()
@ -73,7 +73,7 @@ func statusFromModule(module *modules.Module) *ModuleStatus {
func compareAndUpdateStatus(module *modules.Module, status *ModuleStatus) (changed bool) { func compareAndUpdateStatus(module *modules.Module, status *ModuleStatus) (changed bool) {
// check if enabled // check if enabled
enabled := module.Enabled() enabled := module.Enabled() || module.EnabledAsDependency()
if status.Enabled != enabled { if status.Enabled != enabled {
status.Enabled = enabled status.Enabled = enabled
changed = true changed = true
@ -101,16 +101,10 @@ func compareAndUpdateStatus(module *modules.Module, status *ModuleStatus) (chang
func (sub *Subsystem) makeSummary() { func (sub *Subsystem) makeSummary() {
// find worst failing module // find worst failing module
worstFailing := &ModuleStatus{} sub.FailureStatus = 0
for _, depStatus := range sub.Modules { for _, depStatus := range sub.Modules {
if depStatus.FailureStatus > worstFailing.FailureStatus { if depStatus.FailureStatus > sub.FailureStatus {
worstFailing = depStatus sub.FailureStatus = depStatus.FailureStatus
} }
} }
if worstFailing != nil {
sub.FailureStatus = worstFailing.FailureStatus
} else {
sub.FailureStatus = 0
}
} }