Initial commit
This commit is contained in:
commit
00de0f9780
16 changed files with 1351 additions and 0 deletions
53
checker/evaluate.go
Normal file
53
checker/evaluate.go
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
package checker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
// Evaluate folds findings into a single CheckState. The status is the
|
||||
// highest severity observed: any Crit makes the whole result Crit, any Warn
|
||||
// makes it Warn, otherwise OK.
|
||||
func Evaluate(data *DelegationData) sdk.CheckState {
|
||||
status := sdk.StatusOK
|
||||
var crit, warn, info int
|
||||
for _, f := range data.Findings {
|
||||
switch f.Severity {
|
||||
case SeverityCrit:
|
||||
crit++
|
||||
status = sdk.StatusCrit
|
||||
case SeverityWarn:
|
||||
warn++
|
||||
if status != sdk.StatusCrit {
|
||||
status = sdk.StatusWarn
|
||||
}
|
||||
case SeverityInfo:
|
||||
info++
|
||||
if status == sdk.StatusOK {
|
||||
status = sdk.StatusInfo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var msg string
|
||||
if len(data.Findings) == 0 {
|
||||
msg = fmt.Sprintf("Delegation of %s is healthy", data.DelegatedFQDN)
|
||||
} else {
|
||||
msg = fmt.Sprintf("Delegation of %s: %d critical, %d warning, %d info", data.DelegatedFQDN, crit, warn, info)
|
||||
}
|
||||
|
||||
return sdk.CheckState{
|
||||
Status: status,
|
||||
Message: msg,
|
||||
Code: "delegation_result",
|
||||
Meta: map[string]any{
|
||||
"findings": data.Findings,
|
||||
"delegated_fqdn": data.DelegatedFQDN,
|
||||
"parent_zone": data.ParentZone,
|
||||
"advertised_ns": data.AdvertisedNS,
|
||||
"parent_ds": data.ParentDS,
|
||||
"child_serials": data.ChildSerials,
|
||||
},
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue