dnscontrol/providers/netcup/netcupProvider.go

155 lines
4.3 KiB
Go
Raw Normal View History

package netcup
import (
"encoding/json"
"fmt"
"github.com/StackExchange/dnscontrol/v3/models"
"github.com/StackExchange/dnscontrol/v3/pkg/diff"
"github.com/StackExchange/dnscontrol/v3/pkg/diff2"
"github.com/StackExchange/dnscontrol/v3/providers"
)
var features = providers.DocumentationNotes{
MAINT: Sort various lists (#1433) * maint: sort lists in build/generate/featureMatrix.go * maint: sort lists in docs/byo-secrets.md * maint: sort lists in models/record.go * maint: sort lists in pkg/normalize/validate.go * maint: sort lists in providers/activedir/activedirProvider.go * maint: sort lists in providers/akamaiedgedns/akamaiEdgeDnsProvider.go * maint: sort lists in providers/axfrddns/axfrddnsProvider.go * maint: sort lists in providers/azuredns/azureDnsProvider.go * maint: sort lists in providers/cloudflare/cloudflareProvider.go * maint: sort lists in providers/cloudns/cloudnsProvider.go * maint: sort lists in providers/desec/desecProvider.go * maint: sort lists in providers/digitalocean/digitaloceanProvider.go * maint: sort lists in providers/dnsimple/dnsimpleProvider.go * maint: sort lists in providers/dnsmadeeasy/dnsMadeEasyProvider.go * maint: sort lists in providers/exoscale/exoscaleProvider.go * maint: sort lists in providers/gandiv5/gandi_v5Provider.go * maint: sort lists in providers/hedns/hednsProvider.go * maint: sort lists in providers/hetzner/hetznerProvider.go * maint: sort lists in providers/hexonet/hexonetProvider.go * maint: sort lists in providers/inwx/inwxProvider.go * maint: sort lists in providers/linode/linodeProvider.go * maint: sort lists in providers/namecheap/namecheapProvider.go * maint: sort lists in providers/namedotcom/namedotcomProvider.go * maint: sort lists in providers/netcup/netcupProvider.go * maint: sort lists in providers/ns1/ns1Provider.go * maint: sort lists in providers/octodns/octodnsProvider.go * maint: sort lists in providers/oracle/oracleProvider.go * maint: sort lists in providers/ovh/ovhProvider.go * maint: sort lists in providers/packetframe/packetframeProvider.go * maint: sort lists in providers/powerdns/powerdnsProvider.go * maint: sort lists in providers/route53/route53Provider.go * maint: sort lists in providers/vultr/vultrProvider.go * Update go:build pragmas for windows * More sorting * go generate
2022-03-03 00:19:15 +08:00
providers.CanGetZones: providers.Cannot(),
providers.CanUseCAA: providers.Can(),
providers.CanUseLOC: providers.Cannot(),
MAINT: Sort various lists (#1433) * maint: sort lists in build/generate/featureMatrix.go * maint: sort lists in docs/byo-secrets.md * maint: sort lists in models/record.go * maint: sort lists in pkg/normalize/validate.go * maint: sort lists in providers/activedir/activedirProvider.go * maint: sort lists in providers/akamaiedgedns/akamaiEdgeDnsProvider.go * maint: sort lists in providers/axfrddns/axfrddnsProvider.go * maint: sort lists in providers/azuredns/azureDnsProvider.go * maint: sort lists in providers/cloudflare/cloudflareProvider.go * maint: sort lists in providers/cloudns/cloudnsProvider.go * maint: sort lists in providers/desec/desecProvider.go * maint: sort lists in providers/digitalocean/digitaloceanProvider.go * maint: sort lists in providers/dnsimple/dnsimpleProvider.go * maint: sort lists in providers/dnsmadeeasy/dnsMadeEasyProvider.go * maint: sort lists in providers/exoscale/exoscaleProvider.go * maint: sort lists in providers/gandiv5/gandi_v5Provider.go * maint: sort lists in providers/hedns/hednsProvider.go * maint: sort lists in providers/hetzner/hetznerProvider.go * maint: sort lists in providers/hexonet/hexonetProvider.go * maint: sort lists in providers/inwx/inwxProvider.go * maint: sort lists in providers/linode/linodeProvider.go * maint: sort lists in providers/namecheap/namecheapProvider.go * maint: sort lists in providers/namedotcom/namedotcomProvider.go * maint: sort lists in providers/netcup/netcupProvider.go * maint: sort lists in providers/ns1/ns1Provider.go * maint: sort lists in providers/octodns/octodnsProvider.go * maint: sort lists in providers/oracle/oracleProvider.go * maint: sort lists in providers/ovh/ovhProvider.go * maint: sort lists in providers/packetframe/packetframeProvider.go * maint: sort lists in providers/powerdns/powerdnsProvider.go * maint: sort lists in providers/route53/route53Provider.go * maint: sort lists in providers/vultr/vultrProvider.go * Update go:build pragmas for windows * More sorting * go generate
2022-03-03 00:19:15 +08:00
providers.CanUsePTR: providers.Cannot(),
providers.CanUseSRV: providers.Can(),
providers.DocCreateDomains: providers.Cannot(),
providers.DocDualHost: providers.Cannot(),
providers.DocOfficiallySupported: providers.Cannot(),
}
func init() {
fns := providers.DspFuncs{
2021-05-05 02:15:31 +08:00
Initializer: New,
RecordAuditor: AuditRecords,
}
providers.RegisterDomainServiceProviderType("NETCUP", fns, features)
}
// New creates a new API handle.
func New(settings map[string]string, _ json.RawMessage) (providers.DNSServiceProvider, error) {
if settings["api-key"] == "" || settings["api-password"] == "" || settings["customer-number"] == "" {
return nil, fmt.Errorf("missing netcup login parameters")
}
api := &netcupProvider{}
err := api.login(settings["api-key"], settings["api-password"], settings["customer-number"])
if err != nil {
return nil, fmt.Errorf("login to netcup DNS failed, please check your credentials: %v", err)
}
return api, nil
}
// GetZoneRecords gets the records of a zone and returns them in RecordConfig format.
func (api *netcupProvider) GetZoneRecords(domain string) (models.Records, error) {
records, err := api.getRecords(domain)
if err != nil {
return nil, err
}
existingRecords := make([]*models.RecordConfig, len(records))
for i := range records {
existingRecords[i] = toRecordConfig(domain, &records[i])
}
return existingRecords, nil
}
// GetNameservers returns the nameservers for a domain.
// As netcup doesn't support setting nameservers over this API, these are static.
// Domains not managed by netcup DNS will return an error
func (api *netcupProvider) GetNameservers(domain string) ([]*models.Nameserver, error) {
return models.ToNameservers([]string{
"root-dns.netcup.net",
"second-dns.netcup.net",
"third-dns.netcup.net",
})
}
// GetDomainCorrections returns the corrections for a domain.
func (api *netcupProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) {
dc, err := dc.Copy()
if err != nil {
return nil, err
}
dc.Punycode()
domain := dc.Name
// Setting the TTL is not supported for netcup
for _, r := range dc.Records {
r.TTL = 0
}
// Filter out types we can't modify (like NS)
newRecords := models.Records{}
for _, r := range dc.Records {
if r.Type != "NS" {
newRecords = append(newRecords, r)
}
}
dc.Records = newRecords
// Check existing set
existingRecords, err := api.GetZoneRecords(domain)
if err != nil {
return nil, err
}
// Normalize
models.PostProcessRecords(existingRecords)
Autosplit long TXT records disabled (#1481) providers-test-netcup.log appended: === RUN TestDNSProviders === RUN TestDNSProviders/oXXX.de === RUN TestDNSProviders/oXXX.de/Clean_Slate:Empty integration_test.go:220: DELETE A test.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50790741 === RUN TestDNSProviders/oXXX.de/00:GeneralACD:Create_an_A_record integration_test.go:220: CREATE A oXXX.de 1.1.1.1 ttl=0 === RUN TestDNSProviders/oXXX.de/00:GeneralACD:Change_it integration_test.go:220: MODIFY A oXXX.de: (1.1.1.1 ttl=0) -> (1.2.3.4 ttl=0), Netcup ID: 50825306: === RUN TestDNSProviders/oXXX.de/00:GeneralACD:Add_another integration_test.go:220: CREATE A www.oXXX.de 1.2.3.4 ttl=0 === RUN TestDNSProviders/oXXX.de/00:GeneralACD:Add_another(same_name) integration_test.go:220: CREATE A www.oXXX.de 5.6.7.8 ttl=0 === RUN TestDNSProviders/oXXX.de/00:GeneralACD:Change_a_ttl integration_test.go:216: Expected changes, but got none === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty integration_test.go:220: DELETE A oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825306 integration_test.go:220: DELETE A www.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825307 integration_test.go:220: DELETE A www.oXXX.de 5.6.7.8 ttl=0, Netcup ID: 50825308 === RUN TestDNSProviders/oXXX.de/01:WildcardACD:Create_wildcard integration_test.go:220: CREATE A *.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A www.oXXX.de 1.1.1.1 ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#01 integration_test.go:220: DELETE A *.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825309 integration_test.go:220: DELETE A www.oXXX.de 1.1.1.1 ttl=0, Netcup ID: 50825310 === RUN TestDNSProviders/oXXX.de/02:CNAME:Create_a_CNAME integration_test.go:220: CREATE CNAME foo.oXXX.de google.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#02 integration_test.go:220: DELETE CNAME foo.oXXX.de google.com. ttl=0, Netcup ID: 50825311 === RUN TestDNSProviders/oXXX.de/03:MX:MX_record integration_test.go:220: CREATE MX oXXX.de 5 foo.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#03 integration_test.go:220: DELETE MX oXXX.de 5 foo.com. ttl=0, Netcup ID: 50825312 === RUN TestDNSProviders/oXXX.de/04:Null_MX_***SKIPPED(excluded_by_not("NETCUP"))***:Empty === RUN TestDNSProviders/oXXX.de/05:NS_***SKIPPED(excluded_by_not("NETCUP"))***:Empty === RUN TestDNSProviders/oXXX.de/06:IGNORE_NAME_function:Create_some_records integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0 integration_test.go:220: CREATE A foo.oXXX.de 1.2.3.4 ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#04 integration_test.go:220: DELETE A foo.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825313 === RUN TestDNSProviders/oXXX.de/07:IGNORE_NAME_apex:Create_some_records integration_test.go:220: CREATE TXT bar.oXXX.de "stringbar" ttl=0 integration_test.go:220: CREATE A bar.oXXX.de 2.4.6.8 ttl=0 integration_test.go:220: CREATE A oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE TXT oXXX.de "simple" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 2. integration_test.go:241: UNEXPECTED #0: CREATE TXT bar.oXXX.de "stringbar" ttl=0 integration_test.go:241: UNEXPECTED #1: CREATE TXT oXXX.de "simple" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#05 integration_test.go:220: DELETE A bar.oXXX.de 2.4.6.8 ttl=0, Netcup ID: 50825314 integration_test.go:220: DELETE A oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825315 === RUN TestDNSProviders/oXXX.de/08:IGNORE_TARGET_function:Create_some_records integration_test.go:220: CREATE CNAME bar.oXXX.de test.bar.com. ttl=0 integration_test.go:220: CREATE CNAME foo.oXXX.de test.foo.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#06 integration_test.go:220: DELETE CNAME bar.oXXX.de test.bar.com. ttl=0, Netcup ID: 50825316 integration_test.go:220: DELETE CNAME foo.oXXX.de test.foo.com. ttl=0, Netcup ID: 50825317 === RUN TestDNSProviders/oXXX.de/09:simple_TXT:Create_a_TXT integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#07 === RUN TestDNSProviders/oXXX.de/10:simple_TXT-spf1:Create_a_TXT/SPF integration_test.go:220: CREATE TXT foo.oXXX.de "v=spf1 ip4:99.99.99.99 -all" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "v=spf1 ip4:99.99.99.99 -all" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#08 === RUN TestDNSProviders/oXXX.de/11:long_TXT:Create_long_TXT integration_test.go:220: CREATE TXT foo.oXXX.de "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#09 === RUN TestDNSProviders/oXXX.de/12:complex_TXT:TXT_with_0-octel_string integration_test.go:206: ***SKIPPED(PROVIDER DOES NOT SUPPORT 'txtstring is empty' ::"12:complex TXT") === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#10 === RUN TestDNSProviders/oXXX.de/13:long_TXT:Create_a_505_TXT integration_test.go:220: CREATE TXT foo257.oXXX.de "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo257.oXXX.de "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#11 === RUN TestDNSProviders/oXXX.de/14:TXTMulti:Create_TXTMulti_1 integration_test.go:220: CREATE TXT foo1.oXXX.de "simple" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo1.oXXX.de "simple" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#12 === RUN TestDNSProviders/oXXX.de/15:TXTMulti-same:Create_TXTMulti_1 integration_test.go:220: CREATE TXT foo.oXXX.de "simple" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE TXT foo.oXXX.de "simple" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#13 === RUN TestDNSProviders/oXXX.de/16:TypeChange:Create_a_CNAME integration_test.go:220: CREATE CNAME foo.oXXX.de google.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#14 integration_test.go:220: DELETE CNAME foo.oXXX.de google.com. ttl=0, Netcup ID: 50825318 === RUN TestDNSProviders/oXXX.de/17:Case_Sensitivity:Create_CAPS integration_test.go:220: CREATE MX bar.oXXX.de 5 bar.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#15 integration_test.go:220: DELETE MX bar.oXXX.de 5 bar.com. ttl=0, Netcup ID: 50825319 === RUN TestDNSProviders/oXXX.de/18:IDNA:Internationalized_name integration_test.go:220: CREATE A xn--ndaaa.oXXX.de 1.2.3.4 ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#16 integration_test.go:220: DELETE A xn--ndaaa.oXXX.de 1.2.3.4 ttl=0, Netcup ID: 50825320 === RUN TestDNSProviders/oXXX.de/19:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target integration_test.go:220: CREATE CNAME xn--o-0gab.oXXX.de xn--ndaaa.xn--vhquv. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#17 integration_test.go:220: DELETE CNAME xn--o-0gab.oXXX.de xn--ndaaa.xn--vhquv. ttl=0, Netcup ID: 50825321 === RUN TestDNSProviders/oXXX.de/20:pager101:99_records integration_test.go:220: CREATE A rec0000.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0001.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0002.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0003.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0004.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0005.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0006.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0007.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0008.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0009.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0010.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0011.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0012.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0013.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0014.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0015.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0016.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0017.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0018.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0019.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0020.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0021.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0022.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0023.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0024.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0025.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0026.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0027.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0028.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0029.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0030.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0031.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0032.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0033.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0034.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0035.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0036.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0037.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0038.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0039.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0040.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0041.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0042.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0043.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0044.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0045.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0046.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0047.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0048.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0049.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0050.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0051.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0052.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0053.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0054.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0055.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0056.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0057.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0058.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0059.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0060.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0061.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0062.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0063.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0064.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0065.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0066.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0067.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0068.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0069.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0070.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0071.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0072.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0073.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0074.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0075.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0076.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0077.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0078.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0079.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0080.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0081.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0082.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0083.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0084.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0085.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0086.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0087.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0088.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0089.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0090.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0091.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0092.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0093.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0094.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0095.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0096.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0097.oXXX.de 1.2.3.4 ttl=0 integration_test.go:220: CREATE A rec0098.oXXX.de 1.2.3.4 ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 99. integration_test.go:241: UNEXPECTED #0: CREATE A rec0000.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #1: CREATE A rec0001.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #2: CREATE A rec0002.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #3: CREATE A rec0003.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #4: CREATE A rec0004.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #5: CREATE A rec0005.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #6: CREATE A rec0006.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #7: CREATE A rec0007.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #8: CREATE A rec0008.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #9: CREATE A rec0009.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #10: CREATE A rec0010.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #11: CREATE A rec0011.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #12: CREATE A rec0012.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #13: CREATE A rec0013.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #14: CREATE A rec0014.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #15: CREATE A rec0015.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #16: CREATE A rec0016.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #17: CREATE A rec0017.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #18: CREATE A rec0018.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #19: CREATE A rec0019.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #20: CREATE A rec0020.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #21: CREATE A rec0021.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #22: CREATE A rec0022.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #23: CREATE A rec0023.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #24: CREATE A rec0024.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #25: CREATE A rec0025.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #26: CREATE A rec0026.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #27: CREATE A rec0027.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #28: CREATE A rec0028.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #29: CREATE A rec0029.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #30: CREATE A rec0030.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #31: CREATE A rec0031.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #32: CREATE A rec0032.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #33: CREATE A rec0033.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #34: CREATE A rec0034.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #35: CREATE A rec0035.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #36: CREATE A rec0036.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #37: CREATE A rec0037.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #38: CREATE A rec0038.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #39: CREATE A rec0039.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #40: CREATE A rec0040.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #41: CREATE A rec0041.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #42: CREATE A rec0042.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #43: CREATE A rec0043.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #44: CREATE A rec0044.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #45: CREATE A rec0045.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #46: CREATE A rec0046.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #47: CREATE A rec0047.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #48: CREATE A rec0048.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #49: CREATE A rec0049.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #50: CREATE A rec0050.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #51: CREATE A rec0051.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #52: CREATE A rec0052.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #53: CREATE A rec0053.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #54: CREATE A rec0054.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #55: CREATE A rec0055.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #56: CREATE A rec0056.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #57: CREATE A rec0057.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #58: CREATE A rec0058.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #59: CREATE A rec0059.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #60: CREATE A rec0060.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #61: CREATE A rec0061.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #62: CREATE A rec0062.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #63: CREATE A rec0063.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #64: CREATE A rec0064.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #65: CREATE A rec0065.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #66: CREATE A rec0066.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #67: CREATE A rec0067.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #68: CREATE A rec0068.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #69: CREATE A rec0069.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #70: CREATE A rec0070.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #71: CREATE A rec0071.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #72: CREATE A rec0072.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #73: CREATE A rec0073.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #74: CREATE A rec0074.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #75: CREATE A rec0075.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #76: CREATE A rec0076.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #77: CREATE A rec0077.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #78: CREATE A rec0078.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #79: CREATE A rec0079.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #80: CREATE A rec0080.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #81: CREATE A rec0081.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #82: CREATE A rec0082.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #83: CREATE A rec0083.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #84: CREATE A rec0084.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #85: CREATE A rec0085.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #86: CREATE A rec0086.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #87: CREATE A rec0087.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #88: CREATE A rec0088.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #89: CREATE A rec0089.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #90: CREATE A rec0090.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #91: CREATE A rec0091.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #92: CREATE A rec0092.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #93: CREATE A rec0093.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #94: CREATE A rec0094.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #95: CREATE A rec0095.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #96: CREATE A rec0096.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #97: CREATE A rec0097.oXXX.de 1.2.3.4 ttl=0 integration_test.go:241: UNEXPECTED #98: CREATE A rec0098.oXXX.de 1.2.3.4 ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#18 === RUN TestDNSProviders/oXXX.de/21:pager601_***SKIPPED(disabled_by_only)***:Empty === RUN TestDNSProviders/oXXX.de/22:pager1201_***SKIPPED(disabled_by_only)***:Empty === RUN TestDNSProviders/oXXX.de/23:CAA:CAA_record integration_test.go:220: CREATE CAA oXXX.de 0 issue "letsencrypt.org" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issue "letsencrypt.org" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#19 === RUN TestDNSProviders/oXXX.de/24:CAA_with_;:CAA_many_records integration_test.go:220: CREATE CAA oXXX.de 0 issuewild ";" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issuewild ";" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#20 === RUN TestDNSProviders/oXXX.de/25:Issue_1374:CAA_spaces integration_test.go:220: CREATE CAA oXXX.de 0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE CAA oXXX.de 0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#21 === RUN TestDNSProviders/oXXX.de/26:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/27:PTR_***SKIPPED(CanUsePTR_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/28:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/29:SRV:SRV_record integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 5 6 7 foo.com. ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 1. integration_test.go:241: UNEXPECTED #0: CREATE SRV _sip._tcp.oXXX.de 5 6 7 foo.com. ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#22 === RUN TestDNSProviders/oXXX.de/30:SRV_w/_null_target:Null_Target integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 52 62 72 foo.com. ttl=0 integration_test.go:220: CREATE SRV _sip._tcp.oXXX.de 15 65 75 . ttl=0 integration_test.go:239: Expected 0 corrections on second run, but found 2. integration_test.go:241: UNEXPECTED #0: CREATE SRV _sip._tcp.oXXX.de 52 62 72 foo.com. ttl=0 integration_test.go:241: UNEXPECTED #1: CREATE SRV _sip._tcp.oXXX.de 15 65 75 . ttl=0 === RUN TestDNSProviders/oXXX.de/Post_cleanup:Empty#23 === RUN TestDNSProviders/oXXX.de/31:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/32:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/33:DS_***SKIPPED(CanUseDS_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/34:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/35:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/36:ALIAS_***SKIPPED(CanUseAlias_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/37:AZURE_ALIAS_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/38:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/39:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty === RUN TestDNSProviders/oXXX.de/40:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty === RUN TestDNSProviders/oXXX.de/41:CF_PROXY_***SKIPPED(disabled_by_only)***:Empty === RUN TestDNSProviders/oXXX.de/42:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty --- FAIL: TestDNSProviders (25.84s) --- FAIL: TestDNSProviders/oXXX.de (24.98s) --- PASS: TestDNSProviders/oXXX.de/Clean_Slate:Empty (0.25s) --- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Create_an_A_record (0.33s) --- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Change_it (0.32s) --- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Add_another (0.34s) --- PASS: TestDNSProviders/oXXX.de/00:GeneralACD:Add_another(same_name) (0.38s) --- FAIL: TestDNSProviders/oXXX.de/00:GeneralACD:Change_a_ttl (0.11s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty (0.59s) --- PASS: TestDNSProviders/oXXX.de/01:WildcardACD:Create_wildcard (0.46s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#01 (0.37s) --- PASS: TestDNSProviders/oXXX.de/02:CNAME:Create_a_CNAME (0.31s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#02 (0.23s) --- PASS: TestDNSProviders/oXXX.de/03:MX:MX_record (0.31s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#03 (0.21s) --- PASS: TestDNSProviders/oXXX.de/04:Null_MX_***SKIPPED(excluded_by_not("NETCUP"))***:Empty (0.10s) --- PASS: TestDNSProviders/oXXX.de/05:NS_***SKIPPED(excluded_by_not("NETCUP"))***:Empty (0.08s) --- FAIL: TestDNSProviders/oXXX.de/06:IGNORE_NAME_function:Create_some_records (0.36s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#04 (0.24s) --- FAIL: TestDNSProviders/oXXX.de/07:IGNORE_NAME_apex:Create_some_records (0.57s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#05 (0.35s) --- PASS: TestDNSProviders/oXXX.de/08:IGNORE_TARGET_function:Create_some_records (0.45s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#06 (0.38s) --- FAIL: TestDNSProviders/oXXX.de/09:simple_TXT:Create_a_TXT (0.25s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#07 (0.08s) --- FAIL: TestDNSProviders/oXXX.de/10:simple_TXT-spf1:Create_a_TXT/SPF (0.28s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#08 (0.12s) --- FAIL: TestDNSProviders/oXXX.de/11:long_TXT:Create_long_TXT (0.25s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#09 (0.11s) --- SKIP: TestDNSProviders/oXXX.de/12:complex_TXT:TXT_with_0-octel_string (0.00s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#10 (0.10s) --- FAIL: TestDNSProviders/oXXX.de/13:long_TXT:Create_a_505_TXT (0.25s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#11 (0.08s) --- FAIL: TestDNSProviders/oXXX.de/14:TXTMulti:Create_TXTMulti_1 (0.26s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#12 (0.09s) --- FAIL: TestDNSProviders/oXXX.de/15:TXTMulti-same:Create_TXTMulti_1 (0.24s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#13 (0.10s) --- PASS: TestDNSProviders/oXXX.de/16:TypeChange:Create_a_CNAME (0.34s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#14 (0.23s) --- PASS: TestDNSProviders/oXXX.de/17:Case_Sensitivity:Create_CAPS (0.33s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#15 (0.22s) --- PASS: TestDNSProviders/oXXX.de/18:IDNA:Internationalized_name (0.34s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#16 (0.21s) --- PASS: TestDNSProviders/oXXX.de/19:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target (0.29s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#17 (0.24s) --- FAIL: TestDNSProviders/oXXX.de/20:pager101:99_records (11.55s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#18 (0.05s) --- PASS: TestDNSProviders/oXXX.de/21:pager601_***SKIPPED(disabled_by_only)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/22:pager1201_***SKIPPED(disabled_by_only)***:Empty (0.05s) --- FAIL: TestDNSProviders/oXXX.de/23:CAA:CAA_record (0.20s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#19 (0.05s) --- FAIL: TestDNSProviders/oXXX.de/24:CAA_with_;:CAA_many_records (0.19s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#20 (0.06s) --- FAIL: TestDNSProviders/oXXX.de/25:Issue_1374:CAA_spaces (0.17s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#21 (0.07s) --- PASS: TestDNSProviders/oXXX.de/26:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/27:PTR_***SKIPPED(CanUsePTR_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/28:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty (0.06s) --- FAIL: TestDNSProviders/oXXX.de/29:SRV:SRV_record (0.17s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#22 (0.06s) --- FAIL: TestDNSProviders/oXXX.de/30:SRV_w/_null_target:Null_Target (0.25s) --- PASS: TestDNSProviders/oXXX.de/Post_cleanup:Empty#23 (0.08s) --- PASS: TestDNSProviders/oXXX.de/31:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/32:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/33:DS_***SKIPPED(CanUseDS_not_supported)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/34:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/35:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/36:ALIAS_***SKIPPED(CanUseAlias_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/37:AZURE_ALIAS_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/38:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/39:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.06s) --- PASS: TestDNSProviders/oXXX.de/40:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/41:CF_PROXY_***SKIPPED(disabled_by_only)***:Empty (0.05s) --- PASS: TestDNSProviders/oXXX.de/42:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty (0.06s) === RUN TestDualProviders integration_test.go:312: Skipping. DocDualHost == Cannot --- SKIP: TestDualProviders (0.06s) FAIL exit status 1 FAIL github.com/StackExchange/dnscontrol/v3/integrationTest 25.942s Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2022-05-09 02:50:40 +08:00
// no need for txtutil.SplitSingleLongTxt in function GetDomainCorrections
// txtutil.SplitSingleLongTxt(dc.Records) // Autosplit long TXT records
var corrections []*models.Correction
var create, del, modify diff.Changeset
2023-03-14 02:19:19 +08:00
var differ diff.Differ
if !diff2.EnableDiff2 {
2023-03-14 02:19:19 +08:00
differ = diff.New(dc)
} else {
2023-03-14 02:19:19 +08:00
differ = diff.NewCompat(dc)
}
2023-03-14 02:19:19 +08:00
_, create, del, modify, err = differ.IncrementalDiff(existingRecords)
if err != nil {
return nil, err
}
// Deletes first so changing type works etc.
for _, m := range del {
req := m.Existing.Original.(*record)
corr := &models.Correction{
Msg: fmt.Sprintf("%s, Netcup ID: %s", m.String(), req.ID),
F: func() error {
return api.deleteRecord(domain, req)
},
}
corrections = append(corrections, corr)
}
for _, m := range create {
req := fromRecordConfig(m.Desired)
corr := &models.Correction{
Msg: m.String(),
F: func() error {
return api.createRecord(domain, req)
},
}
corrections = append(corrections, corr)
}
for _, m := range modify {
id := m.Existing.Original.(*record).ID
req := fromRecordConfig(m.Desired)
req.ID = id
corr := &models.Correction{
Msg: fmt.Sprintf("%s, Netcup ID: %s: ", m.String(), id),
F: func() error {
return api.modifyRecord(domain, req)
},
}
corrections = append(corrections, corr)
}
return corrections, nil
}