Skip to content

Source-of-truth authoring audit

Danbyte is the source of truth (SoT) for network state. Some objects, though, only ever appear because a sync or automation created them β€” there is no way for an operator to author them by hand. That is fine for genuinely observed data (a DHCP lease, a config-drift record) but a defect when the object is something a human should be able to declare first.

This page is the running inventory of what can be authored manually vs. what is sync/automation-only, so the gap is visible and gets closed deliberately rather than by accident. Update it whenever an object gains or loses a manual create path.

Legend

  • Manual create / edit / delete β€” an operator can do it from the React UI (a create button, form, or dialog), backed by a write API.
  • API create β€” the DRF endpoint accepts POST (some viewsets are get/patch-only, or 405 create() on purpose).
  • By sync β€” the object is minted by a sync/automation engine (dhcp_sync, dns_sync, virt_sync, drift ingest, deploy dispatch).
  • Verdict β€” βœ… authorable Β· 🟑 partial Β· πŸ”΄ sync-only gap Β· βš™οΈ sync-only by design (observed/event data, not meant to be authored).

Integrations objects

Object Manual create Edit Delete API create By sync Verdict
Windows server connection βœ… βœ… βœ… βœ… β€” βœ…
Virtualization source (vCenter/Proxmox) βœ… βœ… βœ… βœ… β€” βœ…
Webhook βœ… βœ… βœ… βœ… β€” βœ…
Automation target βœ… βœ… βœ… βœ… β€” βœ…
DHCP reservation βœ… βœ… βœ… βœ… (pushes to Windows) βœ… (mirror) βœ…
DNS record βœ… (managed) βœ… (managed) βœ… (managed) βœ… βœ… (mirror) βœ…
DHCP scope βœ… (pushes to Windows) 🟑 (lease_sync toggle) βœ… (removes on server) βœ… βœ… βœ…
DNS zone βœ… (managed, local) 🟑 (sync/auto_create) βœ… (managed only) βœ… βœ… βœ…
DHCP exclusion πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ (no viewset) βœ… πŸ”΄
Virtual network πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ (get only) βœ… πŸ”΄
Virtual disk πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ (no viewset) βœ… πŸ”΄
DHCP lease πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ (get only) βœ… βš™οΈ (ephemeral, observed)
VirtGuest (hypervisor↔VM link) πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ (no viewset) βœ… βš™οΈ (internal linkage)
Deploy run πŸ”΄ β€” β€” πŸ”΄ (retry action only) βœ… βš™οΈ (job record)
DNS drift πŸ”΄ β€” β€” πŸ”΄ (resolve action only) βœ… βš™οΈ (review inbox)
Virt change πŸ”΄ β€” β€” πŸ”΄ (accept/ignore only) βœ… βš™οΈ (review inbox)
Device config state / snapshot πŸ”΄ β€” β€” πŸ”΄ (drift-ingest endpoint) βœ… βš™οΈ (observed)
NetBox import run βœ… (start import) β€” β€” βœ… (function view) βœ… βœ…
Integration settings n/a (singleton) βœ… (PUT) n/a β€” auto βœ…

VirtGuest vs. Virtual machine

The Virtual machine object an operator creates in the UI is api.VirtualMachine β€” the SoT VM, fully authorable. integrations.VirtGuest is the observed hypervisor guest the virtualization sync records and links to it; that linkage is sync-owned by design.

Closed

  1. DHCP scope β€” βœ… done. Authorable from Add scope (and the inline + in the reservation dialog); create runs Add-DhcpServerv4Scope on the server and delete removes it there. DhcpScopeViewSet now does get/post/patch/delete.
  2. DNS zone β€” βœ… done. Authorable from Add zone as a Danbyte-owned managed zone (stored locally, never pruned by sync; pushing to the DNS server is a later phase). Only managed zones are deletable.

Remaining gaps (πŸ”΄), in priority order

  1. Virtual network β€” read-only mirror of hypervisor port groups / bridges. Its VLAN mapping can only come from sync. Revisit if operators need to pre-declare networks.
  2. DHCP exclusion β€” no API or UI at all; only the sync creates them. An operator can't carve an exclusion by hand. Niche but a genuine hole.
  3. Virtual disk β€” display-only under a VM, though the data model allows operator-added disks. Add create/edit/delete when VM disk authoring is wanted.

Not gaps (βš™οΈ sync-only by design)

DHCP leases (ephemeral), VirtGuest linkage rows, and the job/review records (deploy runs, DNS drift, virt changes, device config snapshots) are observed or event data. They are created by the system on purpose and have action-only write paths (retry, resolve, accept) rather than a manual create β€” that is correct, not a defect.

See also