Skip to content

fix: provision zones for domains pointed at Datum nameservers - #200

Merged
kevwilliams merged 1 commit into
mainfrom
fix/pending-zone-nameservers
Sep 29, 2026
Merged

kevwilliams merged 1 commit into
mainfrom
fix/pending-zone-nameservers

Conversation

@kevwilliams

Copy link
Copy Markdown
Contributor

Since #100, a zone for a domain pointed at Datum nameservers never provisions, because its domain can't verify until the zone reports nameservers, and it only reported them once live. A zone waiting on verification now shows the nameservers from its class without being served, so delegating the domain to them verifies it.

Depends on datum-cloud/network-services-operator#519, which must roll out first.

Test plan

  • Unit tests cover the waiting zone publishing its class nameservers, and a repeat pass changing nothing
  • Controller, PowerDNS, and plugin tests pass with the race detector
  • In staging, a new zone for a domain pointed at Datum verifies and provisions

The replicator holds a DNSZone back until its Domain is verified, but
the Domain controller verifies by nameserver delegation only against a
DNSZone that already has status.nameservers. Those were filled in only
after the zone was provisioned, so a domain pointed at Datum could never
verify and its zone never provisioned.

markPendingDomainVerification now publishes the DNSZoneClass nameservers
on a waiting zone without provisioning it. updateStatus no longer blanks
them while the new downstream zone has yet to report its own. The static
nameserver lookup moves to dnsutils.ClassNameservers so the replicator
and the PowerDNS client share it.
@kevwilliams
kevwilliams merged commit 18c67e6 into main Sep 29, 2026
12 checks passed
@kevwilliams
kevwilliams deleted the fix/pending-zone-nameservers branch September 29, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants