share the forge and schedule wire types through swarm-controller-api
swarmctl hand-mirrored the controller's forge make-admin response and the /api/schedules bodies. Both now import them from a new serde-only crate, swarm-controller-api, the way hivectl and hive-c0re share hive-host-sock. ToSchema sits behind its schema feature, which only the controller turns on. The wire format is unchanged: round-trip tests in the new crate pin each type against the JSON the controller and swarmctl produced, and the controller's OpenAPI document for these routes is byte-identical. Files: swarm-controller-api/ is the new crate; swarm-controller and swarmctl (src, Cargo.toml, Cargo.lock, root Cargo.toml) switch to it; CLAUDE.md lists the crate and which swarmctl shapes are still local mirrors; swarmctl/README.md says the forge and schedule bodies come from the crate, so none of its lines still call them mirrored. Part of #5472.
This commit is contained in:
parent
22b9c570ba
commit
be92bc0835
17 changed files with 529 additions and 377 deletions
|
|
@ -6,8 +6,10 @@ that talk to the controller, from anywhere as your own SSO account (see
|
|||
[Remote use](#remote-use-swarmctl-login)).
|
||||
|
||||
Distinct from `hivectl`, which drives one hive's `hive-c0re` over its
|
||||
admin socket. This crate does not link `swarm-controller`, for the same
|
||||
reason `hivectl` does not link `hive-c0re`.
|
||||
admin socket. This crate doesn't link `swarm-controller`, for the same
|
||||
reason `hivectl` doesn't link `hive-c0re`; the forge and schedule bodies
|
||||
both sides speak come from `swarm-controller-api`, as `hivectl`'s come from
|
||||
`hive-host-sock`.
|
||||
|
||||
## Why root, and why no socket
|
||||
|
||||
|
|
@ -144,8 +146,8 @@ forge: "mara" is now a site admin
|
|||
socket as `agent create`. It never creates an account: the forge makes a
|
||||
person's on their first login through authelia, and until then this fails
|
||||
saying so. Running it on a site admin changes nothing, and an agent's name is
|
||||
refused. The response shape is mirrored in `src/forge.rs`, for the same
|
||||
reason as `agent create`'s.
|
||||
refused. The response body comes from `swarm-controller-api`, imported in
|
||||
`src/forge.rs`.
|
||||
|
||||
## `schedule`
|
||||
|
||||
|
|
@ -160,8 +162,8 @@ reason as `agent create`'s.
|
|||
The `/api/schedules` routes on the swarm-controller, over the
|
||||
same socket as `agent create`; each verb waits for the stored result. What a
|
||||
schedule does once stored is in
|
||||
[`docs/swarm/schedules.md`](../docs/swarm/schedules.md). The shapes are
|
||||
mirrored in `src/schedule.rs`, for the same reason as `agent create`'s.
|
||||
[`docs/swarm/schedules.md`](../docs/swarm/schedules.md). The bodies come
|
||||
from `swarm-controller-api`, imported in `src/schedule.rs`.
|
||||
|
||||
## Remote use: `swarmctl login`
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue