[superseded by #227] A served value may name the consumer it is served to (hq ADR 0201, issue 124) #225

Closed
mesh-admin wants to merge 1 commits from feat/a-provider-declares-what-it-derives into main
Contributor

Merge this one FIRST. The catalogue PR writes ${consumer:as:dns} into minio's serves; without this, that string would reach three consumers' configuration files as a literal bucket name.

A serves block may now interpolate the mesh's own statement of who the consumer is — ${consumer:as} and ${consumer:as:dns} — and nothing else. The mesh fills it at the one moment it knows who the consumer is, and the one filled value reaches both ends: the consumer, as the served facts in its binding file and as ${bound:<provision>:<key>} in any file it writes; the provider, as derived on that consumer's entry in its contributions file, so its provisioner is told the name rather than recomputing it.

Settings are laid on first, so an operator may set a prefix and the mesh derives the rest.

Two refusals: a fact or alphabet the mesh does not have, refused at parse with what may be said; and a consumer whose own file already contains the value the mesh is about to derive for it, refused at resolution with the placeholder to write instead. The second is the check issue 124 asked for — the one wrong transcription sat unnoticed for months.

internal/catalogue/derived_for_consumer_test.go: six tests, each run against the unchanged controller first (with the derivation disabled they report the literal placeholder and "the two ends disagree").

make check passes except TestTheResolverIsToldEveryMachineOnTheNetworkAndToldAgainWhenOneLeaves, which fails on main too — confirmed by stashing this change and re-running. Not from here.

**Merge this one FIRST.** The catalogue PR writes `${consumer:as:dns}` into minio's `serves`; without this, that string would reach three consumers' configuration files as a literal bucket name. A `serves` block may now interpolate the mesh's own statement of who the consumer is — `${consumer:as}` and `${consumer:as:dns}` — and nothing else. The mesh fills it at the one moment it knows who the consumer is, and the one filled value reaches both ends: the consumer, as the served facts in its binding file and as `${bound:<provision>:<key>}` in any file it writes; the provider, as `derived` on that consumer's entry in its contributions file, so its provisioner is told the name rather than recomputing it. Settings are laid on first, so an operator may set a prefix and the mesh derives the rest. Two refusals: a fact or alphabet the mesh does not have, refused at parse with what may be said; and a consumer whose own file already contains the value the mesh is about to derive for it, refused at resolution with the placeholder to write instead. The second is the check issue 124 asked for — the one wrong transcription sat unnoticed for months. internal/catalogue/derived_for_consumer_test.go: six tests, each run against the unchanged controller first (with the derivation disabled they report the literal placeholder and "the two ends disagree"). make check passes except TestTheResolverIsToldEveryMachineOnTheNetworkAndToldAgainWhenOneLeaves, which fails on main too — confirmed by stashing this change and re-running. Not from here.
mesh-admin added 1 commit 2026-10-02 19:26:51 +00:00
${consumer:as} and ${consumer:as:dns} in a serves block are filled per
consumer at resolution, and the one filled value reaches both ends: the
consumer's binding and its ${bound:...} substitutions, and the provider's
contributions entry as `derived`. A fact or alphabet the mesh does not have
is refused at parse; a consumer whose own file already holds the derived
value is refused at resolution, naming the placeholder to write instead.
Author
Contributor

Closed in favour of #227, which now carries both of group 8's changes rebased onto today's main.

The record this cited is ADR 0201 now, not 0188 — the bundles refactor took that number while this waited. Every comment moved with it.

Closed in favour of #227, which now carries both of group 8's changes rebased onto today's main. The record this cited is **ADR 0201** now, not 0188 — the bundles refactor took that number while this waited. Every comment moved with it.
mesh-admin changed title from A served value may name the consumer it is served to (hq ADR 0188, issue 124) to [superseded by #227] A served value may name the consumer it is served to (hq ADR 0201, issue 124) 2026-10-04 00:46:43 +00:00
mesh-admin closed this pull request 2026-10-04 00:46:43 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#225