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, }} }