Repository navigation
Conversation
…ords - GetNameservers returns the zone's nameservers again instead of an empty list, so a registrar on the same domain is pointed at Bunny DNS rather than skipped with "No nameservers declared" (DNSControl#4890). - Drop apex NS records from the desired state before diffing. Bunny DNS neither lists them nor accepts changes to them, so they showed up as CREATE corrections on every run and failed on push with "NS records are not supported on the root of the domain". This covers both the records DNSControl derives from GetNameservers and explicit NAMESERVER() calls. - Warn when a dropped record names a nameserver the zone is not served from, as DNSIMPLE, EXOSCALE and GANDI_V5 do, rather than ignore it silently. - The TTL override for apex NS records goes away with the records. - Document the behavior under the provider's caveats.
jfexyz
force-pushed
the
bunny_dns_nameservers
branch
from
October 3, 2026 09:59
b9d97ea to
6d7e7ae
Compare
jfexyz
marked this pull request as ready for review
October 3, 2026 10:11
TomOnTime
approved these changes
Oct 3, 2026
|
Is there anything holding up this PR? It would be great to get this fix rolled out. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4890.
The problem
Since v5,
GetNameserversforBUNNY_DNSreturns an empty list (changed in #4607). That has two visible effects:No nameservers declared for domain, which is what BUNNY_DNS: Not returning nameservers for registrar #4890 reports.NAMESERVER("kiki.bunny.net.")/NAMESERVER("coco.bunny.net.")gets the registrar check back, but DNSControl then wants those as apex NS records in the zone. Bunny DNS does not list apex NS records through its API and rejects creating them, so everypreviewshows twoCREATEcorrections per domain, andpushfails them withNS records are not supported on the root of the domain.The change
GetNameserversreturns the zone'sNameserver1/Nameserver2again, as it did in v4.GetNameservers(or fromNAMESERVER()) from turning into corrections that can never be applied.DNSIMPLE,EXOSCALEandGANDI_V5handle their managed apex NS records the same way.This differs from the v4 implementation, which injected the zone's nameservers into the existing records as "implicit" records. Filtering the desired state instead needs no placeholder records and no guards against changing or deleting them, and it also quiets the case from #3570, where an apex NS record that Bunny DNS cannot hold produced a failing correction on every push.
BUNNY_DNSstays excluded from theNS only APEXintegration test.Testing
go test ./providers/bunnydns, including a new unit test for the filter.bin/generate-all.shleaves no other changes (golangci-lintandstaticcheckare not installed here, so those two steps were skipped).dnscontrol previewwith a build of this branch against 12 real Bunny DNS zones using theDNSOVERHTTPSregistrar:NAMESERVER()for both Bunny nameservers: 0 corrections (24 on v5.3.0);NAMESERVER(): 0 corrections, and the registrar check runs instead of being skipped;NAMESERVER()that is not one of the zone's: the new warning, no DNS provider correction, and the registrar reports the differing set.Not tested:
push, creating a zone that does not exist yet, zones with custom nameservers, and the integration test suite, as I have no test zone to run it against.@ppmathis, since #4607 removed this on purpose, I would appreciate your view on whether this approach works for the cases you had in mind. I'm hoping to find a way to use the Bunny provider and a registrar provider; the way it currently works creates too much noise and makes it difficult to recognize actual warnings.