Skip to main content

Module models

Module models 

Source
Expand description

The shapes the control plane sends, written by hand (ADR-0003).

Every model here is a struct of optional fields plus a map of everything the description did not mention, so a control plane that grows a field parses today and the new field is readable without a release. Nothing is renamed on the way through: ADR-0004 has Tailscale’s bodies come back in Tailscale’s shape, so the JSON names are Tailscale’s and the Rust names exist only to be spelled in Rust.

Enums are documented strings rather than Rust enums (Q60). None of the description’s thirty-three enumerations is a closed set; each is a list of what exists today, so the values live in a &[&str] constant beside the field — which is what a tool’s parameter description quotes — and the drift test asserts the constant still says what the document says.

shapes is what makes that test possible: the model! macro writes the struct and the list of JSON names from one source, so a field cannot be deleted from a model and left in the table (Q61).

Modules§

device
Devices, the routes they advertise, their posture, and shares of them.
dns
The tailnet’s DNS: nameservers, search paths, split DNS and MagicDNS.
key
Auth keys, API access tokens, OAuth clients and federated identities.
logging
Audit logs, network flow logs, and streaming either of them somewhere else.
policy
The policy file, and what the control plane says about one.
service
Services: a name and a pair of addresses that several devices can host.
tailnet
The tailnet itself: its settings, its OAuth apps, and — for an organization that has several — the tailnets in it.
user
The people in a tailnet, invitations to join it, and who to email about it.
webhook
Webhook endpoints, and the events they subscribe to.

Structs§

ModelShape
One model, as the drift test sees it.

Functions§

known_values
Every documented string in this crate. The drift test requires this to cover the description’s enumerations exactly — no path missing, no path left over, and every list equal.
shapes
Every model in this crate, for the drift test to check the description against.

Type Aliases§

KnownValues
A documented string’s known values, keyed by where the description puts it.
Unknown
Whatever the description did not mention.