Commit graph

47 commits

Author SHA1 Message Date
Jakob Ackermann
1e67585e8f
HETZNER_V2: Add provider for Hetzner DNS API (#3837)
Closes https://github.com/StackExchange/dnscontrol/issues/3787

This PR is adding a `HETZNER_V2` provider for the "new" Hetzner DNS API.

Testing:
- The integration tests are passing.
- Manual testing:
  - `preview` (see diff for existing zone)
- `preview --populate-on-preview` (see full diff for newly created zone)
  - `push` (see full diff; no diff after push)
- `push` (see full diff; no diff after push to newly created zone --
i.e. single pass and done)

```js
var REG_NONE = NewRegistrar('none')
var DSP = NewDnsProvider('HETZNER_V2')

D('testing-2025-11-14-7.dev', REG_NONE, DnsProvider(DSP),
    A('@', '127.0.0.1')
)
```

<details>

```
# push for newly created zone
CONCURRENTLY checking for 1 zone(s)
SERIALLY checking for 0 zone(s)
Waiting for concurrent checking(s) to complete...DONE
******************** Domain: testing-2025-11-14-7.dev
1 correction (HETZNER_V2)
#1: Ensuring zone "testing-2025-11-14-7.dev" exists in "HETZNER_V2"
SUCCESS!
CONCURRENTLY gathering records of 1 zone(s)
SERIALLY gathering records of 0 zone(s)
Waiting for concurrent gathering(s) to complete...DONE
******************** Domain: testing-2025-11-14-7.dev
4 corrections (HETZNER_V2)
#1: ± MODIFY-TTL testing-2025-11-14-7.dev NS helium.ns.hetzner.de. ttl=(3600->300)
± MODIFY-TTL testing-2025-11-14-7.dev NS hydrogen.ns.hetzner.com. ttl=(3600->300)
± MODIFY-TTL testing-2025-11-14-7.dev NS oxygen.ns.hetzner.com. ttl=(3600->300)
SUCCESS!
#2: + CREATE testing-2025-11-14-7.dev A 127.0.0.1 ttl=300
SUCCESS!
Done. 5 corrections.
```
</details>

Feedback for @jooola and @LKaemmerling:
- The SDK was very useful in getting 80% there! Nice! 🎉 
- Footgun:
- The `result` values are not "up-to-date" after waiting for an
`Action`, e.g. `Zone.AuthoritativeNameservers.Assigned` is not set when
`Client.Zone.Create()` returns and the following "wait" will not update
it.
- Taking a step back here: Waiting for an `Action` with a separate SDK
call does not seem very natural to me. Does the SDK-user need to know
that you are processing operations asynchronous? (Which seems like an
implementation detail to me, something that the SDK could abstrct over.)
Can `Client.Zone.Create()` return the final `Zone` instead of the
intermediate result?
- Features missing compared to the DNS Console, in priority order:
- It is no longer possible to remove your provided name servers from the
root/apex. Use-case: dual-home/multi-home zone with fewer than three
servers from Hetzner. I'm operating one of these and cannot migrate over
until this is fixed.
- Performance regression due to lack of bulk create/modify. E.g. [one of
the test
suites](a71b89e5a2/integrationTest/integration_test.go (L619))
spends about 4.5 minutes on making creating 100 record-sets and then
another 4 minutes for deleting them in sequence again. With your async
API, these are `create 2*100 + delete 2*100 = 400` API calls.
Previously, these were `create 1 + delete 100 = 101` API calls. Are you
planning on adding batch processing again?
- Usability nits
- Compared to other record-set based APIs, upserts for record-sets are
missing. This applies to records of a record-set and the ttl of the
record-set (see separate SDK calls for the cases `diff2.CREATE` vs
`diff2.CHANGE` and two calls in `diff2.CHANGE` for updating the TTL vs
records).
- Some SDK methods return an `Action` (e.g. `Zone.ChangeRRSetTTL()`),
others wrap the `Action` in a struct (`Client.Zone.CreateRRSet()`) --
even when the struct has a single field (`ZoneRRSetDeleteResult`).

---------

Co-authored-by: "Jonas L." <jooola@users.noreply.github.com>
Co-authored-by: "Lukas Kämmerling" <LKaemmerling@users.noreply.github.com>
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
2025-11-30 09:14:54 -05:00
Gabe Van Engel
97209bc2fc
AKAMAIEDGEDNS: Add ALIAS and AKAMAITLC support to the Akamai Edge DNS provider (#3836) 2025-11-14 09:48:42 -05:00
Peter
6ef0648778
NETCUP: add TLSA support (#3802) 2025-10-23 10:41:35 -04:00
Jan von Aschwege
a71b89e5a2
NEW FEATURE: Add SMIMEA support for BIND and deSEC (#3786) 2025-10-10 11:16:13 -04:00
Louis Laureys
2122390f29
DOCS: Fill some question marks for cloudns (#3767)
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
2025-10-01 15:47:50 -04:00
Klemens Nanni
9edeb73d76
DOCS: Added requested provider Yandex Cloud DNS (#3738) 2025-08-24 09:21:22 -04:00
Alex Trull
ca64774004
Joker: Implement DNS Provider (#3661)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-08-04 16:37:20 -04:00
Tom Limoncelli
b947bddf95
CHORE: generate-all.sh (#3699) 2025-07-30 20:49:54 -04:00
Paul Donald
e84925b491
Loopia: feature updates (#3686) 2025-07-24 14:41:57 -04:00
Phil Pennock
af5907aafd
DNSIMPLE: preview data is now gathered concurrently (CanConcur) (#3675) 2025-07-21 15:09:44 -04:00
Ishan Jain
58afc59440
ADGUARDHOME: updated documentation with links to AGH pages (#3672) 2025-07-21 09:25:59 -04:00
e9b49e23aa
LUADNS: Support HTTPS record type, enable concurrency, adopt newest SDK (#3640) 2025-07-10 10:50:33 -04:00
Tom Limoncelli
8a6baa7c24 Reapply "CHORE: Remove the MSDNS provider (#3656)"
This reverts commit e9f136036f.
2025-07-09 13:07:03 -04:00
Tom Limoncelli
e9f136036f Revert "CHORE: Remove the MSDNS provider (#3656)"
This reverts commit 1ccd5eb532.
2025-07-09 13:06:42 -04:00
Tom Limoncelli
1ccd5eb532
CHORE: Remove the MSDNS provider (#3656) 2025-07-09 12:47:48 -04:00
Ishan Jain
e1830abb58
NEW PROVIDER: ADGUARDHOME (#3638) 2025-07-09 12:06:34 -04:00
James O'Gorman
4ce19352e9
PORKBUN: Improve retry handling, mark as concurrent (#3652) 2025-07-09 12:03:59 -04:00
Klett IT
3bdbb48164
NEW PROVIDE: FORTIGATE (#3642) 2025-07-08 08:37:19 -04:00
Jeffrey Cafferata
a8c41d931f
DOCS: Added requested provider Sav.com (#3635) 2025-06-23 15:48:20 -04:00
Jeffrey Cafferata
0a4162f14a
DOCS: How to add a requested provider (#3636) 2025-06-23 15:48:00 -04:00
tomf
4efa09bde6
MYTHICBEASTS: Mark as concurrent verified. (#3631) 2025-06-20 10:50:22 -04:00
Christopher Hicks
b2e3775c2e
DOCS: add links to help jump to provider table anchors (#3619)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-06-20 08:38:49 -04:00
Jeffrey Cafferata
e5f4d97950
DOCS: [GitBook] Refactor structure to match URL paths and fix missing page links (#3613) 2025-06-11 16:20:23 -04:00
Jeffrey Cafferata
1a7cb20599
DOCS: Added requested providers Scaleway (#3609) 2025-06-09 08:48:17 -04:00
Christopher Hicks
87cd4f40e3
DOCS: generate smaller tables for feature matrix (2nd try) (#3589) 2025-05-29 13:53:33 -04:00
Yuhui Xu
113c1ac13b
GCORE: Implement ListZones to allow auto create zones (#3588) 2025-05-29 09:56:33 -04:00
Tom Limoncelli
7882326a8d
CHORE: generate-all.sh (#3572) 2025-05-13 18:11:37 -04:00
Tom Limoncelli
5e4d68b41c
CLOUDFLAREAPI: Enable inserting DS records at the domain apex (even if they may be rejected) (#3571) 2025-05-12 17:14:32 -04:00
Tom Limoncelli
ba67db23b5
CHORE: generate-all.sh (#3561) 2025-05-03 09:01:06 -04:00
Yuxiang Zhu
6322a624b4
POWERDNS: Add support for DNAME, HTTPS, SVCB, and DNSKEY record types (#3525) 2025-05-03 08:24:23 -04:00
Eli Heady
1c04affe7c
INWX: Add AutoDNSSEC support (#3534)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:23:38 -04:00
Pascal Mathis
5715b842f5
BUNNY_DNS: Support DNSSEC and fix Null MX parsing (#3547) 2025-05-03 08:20:27 -04:00
Jeffrey Cafferata
bb7f881754
BUG: Fixed concurrency verified matrix builder (#3537) 2025-04-19 09:08:49 -04:00
J.C. Jones
605ec55546
PORKBUN: Add support for SVCB and HTTPS record types. (#3527) 2025-04-14 09:40:51 -04:00
gotjoshua
c4f5bdae0e
DOCS: add for CONCURRENCY_VERIFIED (#3510)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-04-03 13:01:26 -04:00
Jeffrey Cafferata
9c7fafab78
DOCS: Reclassify providers concurrency status (#3518) 2025-04-02 16:36:00 -04:00
Jeffrey Cafferata
6a008a9881
DOCS: Added requested providers Netim (#3517) 2025-04-01 16:41:25 -04:00
Tom Limoncelli
475f99b8d5
bug(rev) D_EXTEND does not work with REV (#3488) 2025-03-21 12:39:23 -04:00
Jeffrey Cafferata
47abf996e0
DOCS: Added requested providers BookMyName, IPv64 and Spaceship (#3496) 2025-03-21 10:17:42 -04:00
imlonghao
e0e32ca1a9
DOCS: fix broken links (#3437) 2025-02-17 08:41:37 -05:00
nyanotech
0d92d7a33f
DOCS: fix link to writing-providers.md (#3430) 2025-02-12 09:18:28 -05:00
Jeffrey Cafferata
4d94fcc357
DOCS: Provider request: Vercel DNS (#3416) 2025-02-05 15:26:16 -05:00
Kevin Zander
f80c1c0d7b
POWERDNS: Allow editing the SOA record (#3404)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-02-05 13:09:12 -05:00
Asif Nawaz
a3d6c51c7f
CNR: Add support for ALIAS record type (#3360) 2025-01-14 16:46:55 -05:00
Jeffrey Cafferata
f9718852ce
DOCS: Rackspace Cloud DNS provider request (#3322) 2025-01-08 09:54:13 -05:00
Berk D. Demir
cc366d4306
ROUTE53: Add HTTPS, SSHFP, SVCB, and TLSA record types (#3316)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-01-07 08:50:46 -05:00
Jeffrey Cafferata
519e4f82e1
DOCS: Provider URI redirect (#3307)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-01-06 09:53:49 -05:00