From 4211cf1dc0dcd5053b68ecc3fe997e92fd32321c Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Thu, 30 Jul 2020 17:09:21 +0200 Subject: [PATCH] Fixing PowerDNS domain creation (#786) --- providers/powerdns/powerdnsProvider.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/providers/powerdns/powerdnsProvider.go b/providers/powerdns/powerdnsProvider.go index fe9977b9e..6aa178796 100644 --- a/providers/powerdns/powerdnsProvider.go +++ b/providers/powerdns/powerdnsProvider.go @@ -11,6 +11,8 @@ import ( "github.com/miekg/dns/dnsutil" "github.com/mittwald/go-powerdns" "github.com/mittwald/go-powerdns/apis/zones" + "github.com/mittwald/go-powerdns/pdnshttp" + "net/http" "strings" ) @@ -196,12 +198,18 @@ func (api *PowerDNS) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Co // EnsureDomainExists adds a domain to the DNS service if it does not exist func (api *PowerDNS) EnsureDomainExists(domain string) error { - if zone, _ := api.client.Zones().GetZone(context.Background(), api.ServerName, domain); zone.ID != "" { + if _, err := api.client.Zones().GetZone(context.Background(), api.ServerName, domain+"."); err != nil { + if e, ok := err.(pdnshttp.ErrUnexpectedStatus); ok { + if e.StatusCode != http.StatusNotFound { + return err + } + } + } else { // domain seems to be there return nil } _, err := api.client.Zones().CreateZone(context.Background(), api.ServerName, zones.Zone{ - Name: domain, + Name: domain + ".", Type: zones.ZoneTypeZone, DNSSec: api.DNSSecOnCreate, Nameservers: api.DefaultNS,