From 6e42ccfb3115034a4a82ca676e1de6c957b84358 Mon Sep 17 00:00:00 2001 From: Patrik Kernstock Date: Mon, 1 Dec 2025 15:13:06 +0100 Subject: [PATCH] INWX: Enable concurrency support (#3856) Tested dnscontrol with `CanConcur()` enabled and seems to work fine. Read #2873 to see what to do, and hope below is the right way to test. ```text $ go build -race -o dnscontrol-race $ ./dnscontrol-race version v4.27.2-0.20251127184623-cf6b870052c0+dirty $ dnscontrol-race preview CONCURRENTLY checking for 16 zone(s) SERIALLY checking for 6 zone(s) Serially checking for zone: "domainX.tld" Serially checking for zone: "domainX.tld" Serially checking for zone: "domainX.tld" Serially checking for zone: "domainX.tld" Serially checking for zone: "domainX.tld" Serially checking for zone: "domainX.tld" Waiting for concurrent checking(s) to complete...DONE CONCURRENTLY gathering records of 16 zone(s) SERIALLY gathering records of 6 zone(s) Serially Gathering: "domainX.tld" Serially Gathering: "domainX.tld" Serially Gathering: "domainX.tld" Serially Gathering: "domainX.tld" Serially Gathering: "domainX.tld" Serially Gathering: "domainX.tld" Waiting for concurrent gathering(s) to complete...DONE ******************** Domain: domainX.tld INFO#1: 4 records not being deleted because of NO_PURGE: [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld INFO#1: 4 records not being deleted because of NO_PURGE: [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld ******************** Domain: domainX.tld 1 correction (PK-INWX) INFO#1: 1 records not being deleted because of IGNORE*(): [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld ******************** Domain: domainX.tld ******************** Domain: domainX.tld 30 corrections (PK-INWX) [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld 2 corrections (PK-INWX) [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld ******************** Domain: domainX.tld ******************** Domain: domainX.tld 2 corrections (PK-INWX) [...] ******************** Domain: domainX.tld ******************** Domain: domainX.tld Done. 37 corrections. ``` Unfortunately INWX sandbox is sporadically still broken so `go test` is of limited help: ```text $ go test -v -verbose -profile INWX === RUN TestDNSProviders Testing Profile="INWX" (TYPE="INWX") helpers_test.go:122: INWX: Unable to login --- FAIL: TestDNSProviders (30.03s) === RUN TestDualProviders Testing Profile="INWX" (TYPE="INWX") provider_test.go:50: Clearing everything provider_test.go:57: Adding test nameservers provider_test.go:44: #1: + CREATE dnscontrol-inwx.com NS ns1.example.com. ttl=300 provider_test.go:44: #2: + CREATE dnscontrol-inwx.com NS ns2.example.com. ttl=300 provider_test.go:60: Running again to ensure stability provider_test.go:76: Removing test nameservers provider_test.go:44: #1: - DELETE dnscontrol-inwx.com NS ns1.example.com. ttl=300 provider_test.go:44: #2: - DELETE dnscontrol-inwx.com NS ns2.example.com. ttl=300 --- PASS: TestDualProviders (2.44s) === RUN TestNameserverDots Testing Profile="INWX" (TYPE="INWX") === RUN TestNameserverDots/No_trailing_dot_in_nameserver --- PASS: TestNameserverDots (0.30s) --- PASS: TestNameserverDots/No_trailing_dot_in_nameserver (0.00s) === RUN TestDuplicateNameservers Testing Profile="INWX" (TYPE="INWX") provider_test.go:145: Skipping. Deduplication logic is not implemented for this provider. --- SKIP: TestDuplicateNameservers (0.35s) FAIL exit status 1 FAIL github.com/StackExchange/dnscontrol/v4/integrationTest 33.127s ``` --- documentation/provider/index.md | 2 +- providers/inwx/inwxProvider.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/provider/index.md b/documentation/provider/index.md index 4b81545c8..50c15679f 100644 --- a/documentation/provider/index.md +++ b/documentation/provider/index.md @@ -119,7 +119,7 @@ Jump to a table: | [`HOSTINGDE`](hostingde.md) | ❔ | ✅ | ✅ | ✅ | | [`HUAWEICLOUD`](huaweicloud.md) | ❔ | ✅ | ✅ | ✅ | | [`INTERNETBS`](internetbs.md) | ❔ | ❔ | ❌ | ❔ | -| [`INWX`](inwx.md) | ❔ | ✅ | ✅ | ✅ | +| [`INWX`](inwx.md) | ✅ | ✅ | ✅ | ✅ | | [`JOKER`](joker.md) | ❌ | ❌ | ✅ | ✅ | | [`LINODE`](linode.md) | ❔ | ❌ | ❌ | ✅ | | [`LOOPIA`](loopia.md) | ❔ | ✅ | ❌ | ✅ | diff --git a/providers/inwx/inwxProvider.go b/providers/inwx/inwxProvider.go index ef5461eee..96cbbb47e 100644 --- a/providers/inwx/inwxProvider.go +++ b/providers/inwx/inwxProvider.go @@ -51,7 +51,7 @@ var features = providers.DocumentationNotes{ // See providers/capabilities.go for the entire list of capabilities. providers.CanAutoDNSSEC: providers.Can(), providers.CanGetZones: providers.Can(), - providers.CanConcur: providers.Unimplemented(), + providers.CanConcur: providers.Can(), providers.CanUseAlias: providers.Can(), providers.CanUseCAA: providers.Can(), providers.CanUseDS: providers.Unimplemented("DS records are only supported at the apex and require a different API call that hasn't been implemented yet."),