Files
mesh-controller/internal/inventory/provisioned.go
T

38 lines
1.6 KiB
Go

package inventory
import (
"time"
)
// A machine has applied a send of a provisioned module only once its files are placed (novox/hq ADR 0362, design
// 57 P6, issue 672): for a module the send handed to the provisioner (SentDeclaration.Provisioned), the machine's
// own report that it applied the send is half of it, and its provisioner client's `prov.applied` for the build's
// templates the other half.
//
// - both reported, applied: the send is applied, at the later of the two (ADR 0362 §5: delivery time runs to it);
// - the client reported it failed on that build: a failed apply, named with its reason (§3);
// - the client has not reported it applied on that build (not yet, waiting for a value, an older build): not yet
// applied, and once ApplySilentAfter has passed since the send the walk names the machine silent (§4);
// - a send that handed nothing: the machine's own report alone, as before.
// ProvReport is a provisioner client's newest report of one module on its machine, as `prov.applied` says it
// (mesh-catalog mesh-provisioner-client Report): applied, waiting, failed with the reason, or removed; the digest
// of the templates it filled from; and when it said it.
type ProvReport struct {
Node string `json:"node"`
Module string `json:"module"`
Status string `json:"status"`
Reason string `json:"reason,omitempty"`
WaitsFor []string `json:"waits-for,omitempty"`
Templates string `json:"templates,omitempty"`
At time.Time `json:"at"`
}
// The words a client's report says.
const (
ProvApplied = "applied"
ProvWaiting = "waiting"
ProvFailed = "failed"
ProvRemoved = "removed"
)