No seat and no compose verb for the put: the controller takes no change, so the assigner serves the put as its own tools from compositions the controller already writes (ADR 0546)
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
package catalogue
|
||||
|
||||
// The assigner's seat (novox/hq ADR 0546): putting a version of a module on a node is one verb. The module
|
||||
// mesh-delivery-assigner, which writes every want, holds it once for the mesh and serves its verbs on its own process's
|
||||
// credential; a put is a key of its own state, `mesh-delivery-assigner_puts`, so where it stands is read and watched there.
|
||||
|
||||
// AssignerSeat is the seat mesh-delivery-assigner holds.
|
||||
const AssignerSeat = "mesh-delivery-assigner"
|
||||
|
||||
// assignerVerbs are the assigner seat's verbs: a put, its release, and the puts read (ADR 0546 clauses 1, 6 and 9).
|
||||
func assignerVerbs() []Verb {
|
||||
return []Verb{
|
||||
{Name: "put", Description: "Put one version of a module on one machine (novox/hq ADR 0546): the build at that " +
|
||||
"fingerprint, the module's bus accounts and grant there, its composition, then the machine's want naming " +
|
||||
"it, held there until released when hold is true. A module whose moves a person takes (the bus, a module " +
|
||||
"of policy record) is asked of the operator first, and the bus has its streams snapshotted after the yes. " +
|
||||
"Answers step by step what was done, or what it waits on and why; the put goes on after the answer, and " +
|
||||
"`puts` says where it stands.",
|
||||
Input: schema(map[string]string{
|
||||
"node": "the machine, where the module is assigned",
|
||||
"module": "the module",
|
||||
"version": "a fingerprint (src2: and 64 hex digits, or at least its first 12 hex digits), or newest",
|
||||
"hold": "\"true\": the want stays at this version until released; \"false\" (the default): the rules move it again once it runs",
|
||||
"why": "why, kept with the put and said in any ask",
|
||||
}, []string{"node", "module", "version", "why"}, "hold")},
|
||||
{Name: "release", Description: "End a put on one machine (novox/hq ADR 0546): its hold is taken away and the " +
|
||||
"assigner's rules write the machine's want again from their next pass. Nothing changes on the machine " +
|
||||
"until they move it.",
|
||||
Input: schema(map[string]string{
|
||||
"node": "the machine",
|
||||
"module": "the module",
|
||||
"why": "why, kept with the put",
|
||||
}, []string{"node", "module", "why"})},
|
||||
{Name: "puts", Description: "Every put and where it stands: its version, hold, why, each step with its time " +
|
||||
"and words, and what it waits on. Narrowed by machine or module. Read-only.",
|
||||
Input: schema(map[string]string{
|
||||
"node": "one machine",
|
||||
"module": "one module",
|
||||
}, nil)},
|
||||
}
|
||||
}
|
||||
@@ -243,8 +243,6 @@ var defaultSeats = append([]Seat{
|
||||
// machine, and a group of them, recorded and ordered by its holder, which asks the controller for each act.
|
||||
// What it says it says as its module (`mesh-delivery.transition`), through the runtime that launches it.
|
||||
{Name: DeliverySeat, Scope: ScopeMesh, Serves: deliveryVerbs(), Decision: "novox/hq ADR 0239"},
|
||||
// Putting a version of a module on a node is one verb, the assigner's, which writes every want (novox/hq ADR 0546).
|
||||
{Name: AssignerSeat, Scope: ScopeMesh, Serves: assignerVerbs(), Decision: "novox/hq ADR 0546"},
|
||||
// Deferred renames (novox/hq ADR 0121): these deliver a provision, so renaming them is a
|
||||
// delivering-seat migration with a mesh-wide cascade if a holder stops resolving mid-flight.
|
||||
// They keep their names until that migration is done deliberately, apart from the node-* pass.
|
||||
|
||||
@@ -43,7 +43,7 @@ func TestTheSeatsAreAClosedSetAndEachNamesItsDecision(t *testing.T) {
|
||||
delivered[s.Delivers] = s.Name
|
||||
}
|
||||
}
|
||||
// Forty-seven with mesh-delivery-assigner (novox/hq ADR 0546); forty-six with the three build seats replacing node-build-agent and the retired mesh-build-machine (novox/hq
|
||||
// Forty-six with the three build seats replacing node-build-agent and the retired mesh-build-machine (novox/hq
|
||||
// ADR 0525 §2, §10); forty-five with node-files (novox/hq ADR 0394); forty-four again once node-reads goes.
|
||||
// Forty-four with node-provisioner (novox/hq ADR 0349 clause 3); forty-three with mesh-provisioner (novox/hq ADR 0349 clause 3); forty-two with mesh-config (novox/hq ADR 0348 §9); forty-one with node-reads (novox/hq ADR 0310); forty with node-nfs-server and node-mounts (novox/hq ADR 0263); thirty-eight with node-resolver (novox/hq ADR 0247); thirty-seven with mesh-delivery (novox/hq ADR 0239); thirty-six since node-resolver-config retired
|
||||
// into node-uplink (novox/hq ADR 0223); thirty-seven
|
||||
@@ -56,8 +56,8 @@ func TestTheSeatsAreAClosedSetAndEachNamesItsDecision(t *testing.T) {
|
||||
// node-container-runtime (ADR 0207); nineteen with node-environment and node-login-shell (ADR 0203,
|
||||
// ADR 0204); seventeen with node-build-agent (ADR 0190). One fewer once the retired
|
||||
// mesh-build-machine row goes, when no registered manifest claims it.
|
||||
if len(Seats()) != 47 {
|
||||
t.Errorf("the mesh defines %d seats rather than 47; the set is closed, so a change here is "+
|
||||
if len(Seats()) != 46 {
|
||||
t.Errorf("the mesh defines %d seats rather than 46; the set is closed, so a change here is "+
|
||||
"a decision (novox/hq ADR 0110): %s", len(Seats()), seatNames())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,19 +248,6 @@ var ControllerVerbs = []Verb{
|
||||
"node": "the machine that runs the module",
|
||||
"module": "the module's name",
|
||||
}, []string{"node", "module"})},
|
||||
// One module composed for one node at one fingerprint, on demand (novox/hq ADR 0546 clause 4): what the assigner's put
|
||||
// asks when the composition or the grant it needs is not there. Optional until every controller serves it.
|
||||
{Name: "compose", Description: "Compose one module for one machine at one fingerprint now, and answer it (novox/hq " +
|
||||
"ADR 0546): the module's bus accounts on that machine that are not minted are issued and sealed (never one minted " +
|
||||
"before), the bus's user list and the grants are written, then the composition is written into the machine's " +
|
||||
"compositions with its digest and the judgement of the move to it. Answers the composition's key, digest and " +
|
||||
"judgement, and whether the grant at that fingerprint names the machine's account. Under the lease only.",
|
||||
Input: schema(map[string]string{
|
||||
"node": "the machine",
|
||||
"module": "the module, assigned to that machine",
|
||||
"fp": "the fingerprint, src2: and 64 hex digits; the one the module is registered at when absent",
|
||||
}, []string{"node", "module"}),
|
||||
Optional: true},
|
||||
{Name: "token", Description: "Refused through a verb since novox/hq ADR 0266: the one-time token a machine " +
|
||||
"joins with is answered to its caller, and whoever may call a verb includes agents. Issue it at the " +
|
||||
"controller's terminal: `mesh-controller token issue --new <name> --overlay-key <public half>`.",
|
||||
|
||||
Reference in New Issue
Block a user