Scaffold the tomswallapi control plane #1
Reference in New Issue
Block a user
Delete Branch "benvin/scaffold-control-plane"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
tomswallapi is the fleet control plane for tomswall: declare zones, address groups, and firewall policy once, and the API compiles each intent into the per-device rules every firewall and router on the path needs, serving each device its rendered config. This lands the initial service so the model, storage, and compiler can be iterated on.
Changes
make patch|minor|majorrelease tags, Woodpecker pre-commit/test/build/docker pipelines, docker-compose, pre-commit config, README.zone:+ipset/&fqdnsource/dest grammar (bare zones allowed, bare selectors rejected).GET /devices/{name}/configas generation-stamped YAML for agents, plus a device status-report endpoint; guard mutations and the agent endpoint with bearer tokens.Project the fleet-global model through a device's bindings into a rendered, interface-agnostic config: rules compile to saddr/daddr forward matches with no iif/oif so they are correct under FRR/ECMP. Firewalls always enforce; routers enforce only when their fabric opts into defense-in-depth. Referenced address groups are emitted as named sets carrying their source (static CIDRs, dns FQDNs, or asn numbers) so membership churns out-of-band without a rule reload. Wire GET /devices/{name}/config to compile and serve YAML, generation-stamped. Add portgroups/policies/settings store methods and portgroup CRUD. Pure Render is unit-tested for enforcement gating, ASN set emission, and resolver precedence.