1
0
mirror of https://github.com/TwiN/gatus.git synced 2026-02-15 15:35:05 +00:00

feat(conditions,ui): Add endpoints[].ui.resolve-successful-conditions (#1486)

feat(ui&endpoints): add bolean option for show resolve-successful-conditions
This commit is contained in:
Lorenzo Pereira Piccoli Xavier
2026-01-12 00:36:23 -03:00
committed by GitHub
parent 1095deb3c6
commit 7bb959e072
7 changed files with 68 additions and 23 deletions

View File

@@ -26,7 +26,7 @@ type Condition string
// Validate checks if the Condition is valid
func (c Condition) Validate() error {
r := &Result{}
c.evaluate(r, false, nil)
c.evaluate(r, false, false, nil)
if len(r.Errors) != 0 {
return errors.New(r.Errors[0])
}
@@ -34,44 +34,50 @@ func (c Condition) Validate() error {
}
// evaluate the Condition with the Result and an optional context
func (c Condition) evaluate(result *Result, dontResolveFailedConditions bool, context *gontext.Gontext) bool {
func (c Condition) evaluate(result *Result, dontResolveFailedConditions bool, resolveSuccessfulConditions bool, context *gontext.Gontext) bool {
condition := string(c)
success := false
conditionToDisplay := condition
shouldResolveCondition := func(success bool) bool {
if success {
return resolveSuccessfulConditions
}
return !dontResolveFailedConditions
}
if strings.Contains(condition, " == ") {
parameters, resolvedParameters := sanitizeAndResolveWithContext(strings.Split(condition, " == "), result, context)
success = isEqual(resolvedParameters[0], resolvedParameters[1])
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettify(parameters, resolvedParameters, "==")
}
} else if strings.Contains(condition, " != ") {
parameters, resolvedParameters := sanitizeAndResolveWithContext(strings.Split(condition, " != "), result, context)
success = !isEqual(resolvedParameters[0], resolvedParameters[1])
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettify(parameters, resolvedParameters, "!=")
}
} else if strings.Contains(condition, " <= ") {
parameters, resolvedParameters := sanitizeAndResolveNumericalWithContext(strings.Split(condition, " <= "), result, context)
success = resolvedParameters[0] <= resolvedParameters[1]
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettifyNumericalParameters(parameters, resolvedParameters, "<=")
}
} else if strings.Contains(condition, " >= ") {
parameters, resolvedParameters := sanitizeAndResolveNumericalWithContext(strings.Split(condition, " >= "), result, context)
success = resolvedParameters[0] >= resolvedParameters[1]
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettifyNumericalParameters(parameters, resolvedParameters, ">=")
}
} else if strings.Contains(condition, " > ") {
parameters, resolvedParameters := sanitizeAndResolveNumericalWithContext(strings.Split(condition, " > "), result, context)
success = resolvedParameters[0] > resolvedParameters[1]
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettifyNumericalParameters(parameters, resolvedParameters, ">")
}
} else if strings.Contains(condition, " < ") {
parameters, resolvedParameters := sanitizeAndResolveNumericalWithContext(strings.Split(condition, " < "), result, context)
success = resolvedParameters[0] < resolvedParameters[1]
if !success && !dontResolveFailedConditions {
if shouldResolveCondition(success) {
conditionToDisplay = prettifyNumericalParameters(parameters, resolvedParameters, "<")
}
} else {