24 lines
1.2 KiB
Go
24 lines
1.2 KiB
Go
package assign
|
|
|
|
import (
|
|
"mesh-delivery-assigner/internal/placement"
|
|
"strings"
|
|
|
|
occ "git.novox.be/novox/mesh-contracts/operator-and-conversation/go/clients/operatorchannelclient"
|
|
oc "git.novox.be/novox/mesh-contracts/operator-and-conversation/go/seats/operatorchannel"
|
|
)
|
|
|
|
// SeatWaitsCondition is the assigner's word on the seat mesh-placement while a state of the seat is not bound (ADR 0567
|
|
// §1): raised naming each, cleared when none is left.
|
|
func SeatWaitsCondition(unbound []string) oc.Condition {
|
|
key := placement.Module + ".seat-states"
|
|
subject := oc.ConditionSubject{Scope: "module", ID: placement.Module}
|
|
if len(unbound) == 0 {
|
|
return oc.Condition{Key: key, Subject: subject, State: occ.StateCleared, Resolved: "the seat mesh-placement holds all its states."}
|
|
}
|
|
why := "the seat waits for its states: " + strings.Join(unbound, ", ") + " are not on the bus or not granted yet"
|
|
return oc.Condition{Key: key, Severity: occ.SeverityWarning, Subject: subject, State: occ.StateRaised,
|
|
Summary: "the seat waits for its states", Headline: "the seat waits for its states",
|
|
Explanation: occ.NothingToDo + " " + why + "; each is bound at the next pass once it is, with no restart."}
|
|
}
|