Initial commit
This commit is contained in:
commit
542ebdea34
40 changed files with 4592 additions and 0 deletions
50
checker/registry.go
Normal file
50
checker/registry.go
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// This file is part of the happyDomain (R) project.
|
||||
// Copyright (c) 2020-2026 happyDomain
|
||||
// Authors: Pierre-Olivier Mercier, et al.
|
||||
|
||||
package checker
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"sync"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
// registry holds the rules and collectors that ship with the checker.
|
||||
// Each rule/collector registers itself in an init() so that adding a new
|
||||
// one is a single-file change — no central list to maintain.
|
||||
var registry = struct {
|
||||
mu sync.Mutex
|
||||
rules []sdk.CheckRule
|
||||
collectors []Collector
|
||||
}{}
|
||||
|
||||
// RegisterRule appends a rule to the global registry. Intended to be
|
||||
// called from init() in each rule file.
|
||||
func RegisterRule(r sdk.CheckRule) {
|
||||
registry.mu.Lock()
|
||||
defer registry.mu.Unlock()
|
||||
registry.rules = append(registry.rules, r)
|
||||
}
|
||||
|
||||
// RegisterCollector appends a collector to the global registry. Reserved
|
||||
// for step 4; the orchestrator currently wires only rootCollector
|
||||
// directly.
|
||||
func RegisterCollector(c Collector) {
|
||||
registry.mu.Lock()
|
||||
defer registry.mu.Unlock()
|
||||
registry.collectors = append(registry.collectors, c)
|
||||
}
|
||||
|
||||
// Rules returns every registered rule, sorted by Name() so the output is
|
||||
// stable across init-order changes (which Go does not guarantee between
|
||||
// files).
|
||||
func Rules() []sdk.CheckRule {
|
||||
registry.mu.Lock()
|
||||
out := make([]sdk.CheckRule, len(registry.rules))
|
||||
copy(out, registry.rules)
|
||||
registry.mu.Unlock()
|
||||
sort.Slice(out, func(i, j int) bool { return out[i].Name() < out[j].Name() })
|
||||
return out
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue