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

View file

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

View file

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