Implements adoption mode for the controller, per hq ADRs 0100, 0102 and 0103.
Merge after mesh-host and before mesh-catalog. Hosts must understand adoption, opening, into and reload-on before this sends them. The catalogue's new guards field needs this controller's strict manifest parser.
What it does:
A node is adopted or converged, with its taken modules recorded in migrations 0029 and 0030. The mode is set with node add --adopted or token issue --adopted. The latter is refused for an existing converged node, which is pointed to adopt.
Declarations. Every declaration is built by one marshaller. An adopted node's body carries adoption, taken and untaken, where untaken covers every resource kind. A converged node's body and digest are byte-identical to before.
An adopted node's declaration, in place of the filter:
openings, each from where the filter would admit it;
a refusal-only guard, derived from the taken modules' ports published to the private network only, plus the store and management ports. It matches only traffic addressed to this machine, is reloaded rather than restarted, and brings its own nftables package.
The host's report is stored: what it holds, the firewall it found, and what is reachable.
The acts:take <node> <module>, converge <node> and adopt <node>, on the CLI and the API.
Converging refuses while a found container is held.
The preview names every reachable port with its fate, including ssh and narrowing to the private network, every held thing the flip replaces, and a note that routed traffic is not previewed.
--yes must carry the preview's digest, and is refused if the host's report is older than 15 minutes.
The foundation's ports are node settings (ports). They are followed by the containers, the filter, the openings, the guard and consumers. They are validated against ssh, collisions and other assignments.
Per-node advisory holds run from compose to send. They are bounded and pin no connection while waiting.
Networking (ADR 0102). It writes the registry's trust into the runtime's file (into: json) and reloads the runtime (reload-on, prefixed like restart-on) instead of restarting it.
Tests: go build ./... && go vet ./... && go test ./... all pass against a throwaway Postgres. The adoption lab bed passed 18 of 19 checks; see the mesh-host pull request. Three independent reviews were done, and every finding is fixed.
Implements adoption mode for the controller, per hq ADRs 0100, 0102 and 0103.
**Merge after mesh-host and before mesh-catalog.** Hosts must understand `adoption`, `opening`, `into` and `reload-on` before this sends them. The catalogue's new `guards` field needs this controller's strict manifest parser.
What it does:
- **A node is adopted or converged,** with its taken modules recorded in migrations 0029 and 0030. The mode is set with `node add --adopted` or `token issue --adopted`. The latter is refused for an existing converged node, which is pointed to `adopt`.
- **Declarations.** Every declaration is built by one marshaller. An adopted node's body carries `adoption`, taken and untaken, where untaken covers every resource kind. A converged node's body and digest are byte-identical to before.
- **An adopted node's declaration,** in place of the filter:
- **openings,** each from where the filter would admit it;
- **a refusal-only guard,** derived from the taken modules' ports published to the private network only, plus the store and management ports. It matches only traffic addressed to this machine, is reloaded rather than restarted, and brings its own nftables package.
- **The host's report is stored:** what it holds, the firewall it found, and what is reachable.
- **The acts:** `take <node> <module>`, `converge <node>` and `adopt <node>`, on the CLI and the API.
- Converging refuses while a found container is held.
- The preview names every reachable port with its fate, including ssh and narrowing to the private network, every held thing the flip replaces, and a note that routed traffic is not previewed.
- `--yes` must carry the preview's digest, and is refused if the host's report is older than 15 minutes.
- **The foundation's ports are node settings (`ports`).** They are followed by the containers, the filter, the openings, the guard and consumers. They are validated against ssh, collisions and other assignments.
- **Per-node advisory holds** run from compose to send. They are bounded and pin no connection while waiting.
- **Networking (ADR 0102).** It writes the registry's trust into the runtime's file (`into: json`) and reloads the runtime (`reload-on`, prefixed like `restart-on`) instead of restarting it.
Tests: `go build ./... && go vet ./... && go test ./...` all pass against a throwaway Postgres. The adoption lab bed passed 18 of 19 checks; see the mesh-host pull request. Three independent reviews were done, and every finding is fixed.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements adoption mode for the controller, per hq ADRs 0100, 0102 and 0103.
Merge after mesh-host and before mesh-catalog. Hosts must understand
adoption,opening,intoandreload-onbefore this sends them. The catalogue's newguardsfield needs this controller's strict manifest parser.What it does:
node add --adoptedortoken issue --adopted. The latter is refused for an existing converged node, which is pointed toadopt.adoption, taken and untaken, where untaken covers every resource kind. A converged node's body and digest are byte-identical to before.take <node> <module>,converge <node>andadopt <node>, on the CLI and the API.--yesmust carry the preview's digest, and is refused if the host's report is older than 15 minutes.ports). They are followed by the containers, the filter, the openings, the guard and consumers. They are validated against ssh, collisions and other assignments.into: json) and reloads the runtime (reload-on, prefixed likerestart-on) instead of restarting it.Tests:
go build ./... && go vet ./... && go test ./...all pass against a throwaway Postgres. The adoption lab bed passed 18 of 19 checks; see the mesh-host pull request. Three independent reviews were done, and every finding is fixed.