Simplify subsystems data structure

This commit is contained in:
Daniel 2020-04-14 16:27:43 +02:00
parent ff1610b731
commit f074aa5770
3 changed files with 10 additions and 22 deletions

View file

@ -61,7 +61,7 @@ func start() error {
}
for _, sub := range subsystems {
// add main module
sub.Dependencies = append(sub.Dependencies, statusFromModule(sub.module))
sub.Modules = append(sub.Modules, statusFromModule(sub.module))
// add dependencies
sub.addDependencies(sub.module, seen)
}
@ -80,7 +80,7 @@ func (sub *Subsystem) addDependencies(module *modules.Module, seen map[string]st
_, ok := seen[module.Name]
if !ok {
// add dependency to modules
sub.Dependencies = append(sub.Dependencies, statusFromModule(module))
sub.Modules = append(sub.Modules, statusFromModule(module))
// mark as seen
seen[module.Name] = struct{}{}
// add further dependencies

View file

@ -19,9 +19,8 @@ type Subsystem struct { //nolint:maligned // not worth the effort
Description string
module *modules.Module
Status *ModuleStatus
Dependencies []*ModuleStatus
FailureStatus uint8
Modules []*ModuleStatus
FailureStatus uint8 // summary: worst status
ToggleOptionKey string
toggleOption *config.Option
@ -103,10 +102,7 @@ func compareAndUpdateStatus(module *modules.Module, status *ModuleStatus) (chang
func (sub *Subsystem) makeSummary() {
// find worst failing module
worstFailing := &ModuleStatus{}
if sub.Status.FailureStatus > worstFailing.FailureStatus {
worstFailing = sub.Status
}
for _, depStatus := range sub.Dependencies {
for _, depStatus := range sub.Modules {
if depStatus.FailureStatus > worstFailing.FailureStatus {
worstFailing = depStatus
}

View file

@ -40,13 +40,10 @@ func Register(id, name, description string, module *modules.Module, configKeySpa
// create new
new := &Subsystem{
ID: id,
Name: name,
Description: description,
module: module,
Status: statusFromModule(module),
ID: id,
Name: name,
Description: description,
module: module,
toggleOption: option,
ConfigKeySpace: configKeySpace,
}
@ -89,12 +86,7 @@ func handleModuleChanges(m *modules.Module) {
var moduleStatus *ModuleStatus
subsystemLoop:
for _, subsystem := range subsystems {
if m.Name == subsystem.Status.Name {
moduleSubsystem = subsystem
moduleStatus = subsystem.Status
break subsystemLoop
}
for _, status := range subsystem.Dependencies {
for _, status := range subsystem.Modules {
if m.Name == status.Name {
moduleSubsystem = subsystem
moduleStatus = status