30 lines
1.3 KiB
Go
30 lines
1.3 KiB
Go
package assign
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/asks"
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
// HoldAsk is the ask about a module's fingerprint the assigner holds, at its key (delivery.HoldAskKey), first asking: keep
|
|
// it held or release it. Both options acknowledge and bind nothing: in release 5 the wants are only compared, so no answer
|
|
// changes what a node runs (ADR 0429 §7); the node agent acts on the hold from release 6.
|
|
func HoldAsk(key, module, fp string, now time.Time) delivery.AssignerAsk {
|
|
return delivery.AssignerAsk{Ask: asks.Ask{
|
|
ID: delivery.AskingID(key, 0),
|
|
Headline: fmt.Sprintf("%s is held at %s", module, short(fp)),
|
|
Explanation: fmt.Sprintf("A node's health check of %s failed at %s, so the assigner holds that version and wants "+
|
|
"no node to move to it. Until release 6 this changes nothing a node runs: the controller still sends.", module, short(fp)),
|
|
Options: []asks.Option{
|
|
{ID: "keep", Label: "Keep it held", Does: "the version stays held", Level: asks.Acknowledge},
|
|
{ID: "release", Label: "Release it", Does: "the version is released when wants are applied, from release 6", Level: asks.Acknowledge},
|
|
},
|
|
Who: asks.Operator,
|
|
Expires: now.Add(7 * 24 * time.Hour),
|
|
OnExpiry: "the version stays held",
|
|
About: key,
|
|
}}
|
|
}
|