diff --git a/main.go b/main.go index 02d909202..4f5118c27 100644 --- a/main.go +++ b/main.go @@ -240,7 +240,7 @@ func main() { p, err = provider.NewOCIProvider(*config, domainFilter, zoneIDFilter, cfg.DryRun) } case "rfc2136": - p, err = provider.NewRfc2136Provider(cfg.RFC2136Host, cfg.RFC2136Port, cfg.RFC2136Zone, cfg.RFC2136Insecure, cfg.RFC2136TSIGKeyName, cfg.RFC2136TSIGSecret, cfg.RFC2136TSIGSecretAlg, cfg.RFC2136TAXFR, domainFilter, cfg.DryRun, nil, cfg.RFC2136MinTTLSeconds) + p, err = provider.NewRfc2136Provider(cfg.RFC2136Host, cfg.RFC2136Port, cfg.RFC2136Zone, cfg.RFC2136Insecure, cfg.RFC2136TSIGKeyName, cfg.RFC2136TSIGSecret, cfg.RFC2136TSIGSecretAlg, cfg.RFC2136TAXFR, domainFilter, cfg.DryRun, cfg.RFC2136MinTTLSeconds, nil) case "ns1": p, err = provider.NewNS1Provider( provider.NS1Config{ diff --git a/pkg/apis/externaldns/types.go b/pkg/apis/externaldns/types.go index 0a9a159d2..a03d07352 100644 --- a/pkg/apis/externaldns/types.go +++ b/pkg/apis/externaldns/types.go @@ -130,7 +130,7 @@ type Config struct { RFC2136TSIGSecret string `secure:"yes"` RFC2136TSIGSecretAlg string RFC2136TAXFR bool - RFC2136MinTTLSeconds int + RFC2136MinTTLSeconds int64 NS1Endpoint string NS1IgnoreSSL bool TransIPAccountName string @@ -368,7 +368,7 @@ func (cfg *Config) ParseFlags(args []string) error { app.Flag("rfc2136-tsig-secret", "When using the RFC2136 provider, specify the TSIG (base64) value to attached to DNS messages (required when --rfc2136-insecure=false)").Default(defaultConfig.RFC2136TSIGSecret).StringVar(&cfg.RFC2136TSIGSecret) app.Flag("rfc2136-tsig-secret-alg", "When using the RFC2136 provider, specify the TSIG (base64) value to attached to DNS messages (required when --rfc2136-insecure=false)").Default(defaultConfig.RFC2136TSIGSecretAlg).StringVar(&cfg.RFC2136TSIGSecretAlg) app.Flag("rfc2136-tsig-axfr", "When using the RFC2136 provider, specify the TSIG (base64) value to attached to DNS messages (required when --rfc2136-insecure=false)").BoolVar(&cfg.RFC2136TAXFR) - app.Flag("rfc2136-min-ttl", "When using the RFC2136 provider, specify minimal TTL (in seconds) for records. This value will be used if the provided TTL for a service/ingress is lower than this").Default(strconv.Itoa(defaultConfig.RFC2136MinTTLSeconds)).IntVar(&cfg.RFC2136MinTTLSeconds) + app.Flag("rfc2136-min-ttl", "When using the RFC2136 provider, specify minimal TTL (in seconds) for records. This value will be used if the provided TTL for a service/ingress is lower than this").Default(strconv.FormatInt(defaultConfig.RFC2136MinTTLSeconds, 10)).Int64Var(&cfg.RFC2136MinTTLSeconds) // Flags related to TransIP provider app.Flag("transip-account", "When using the TransIP provider, specify the account name (required when --provider=transip)").Default(defaultConfig.TransIPAccountName).StringVar(&cfg.TransIPAccountName) diff --git a/provider/rfc2136.go b/provider/rfc2136.go index 2c887fe56..765323619 100644 --- a/provider/rfc2136.go +++ b/provider/rfc2136.go @@ -41,7 +41,7 @@ type rfc2136Provider struct { tsigSecretAlg string insecure bool axfr bool - minTTLSeconds int + minTTLSeconds int64 // only consider hosted zones managing domains ending in this suffix domainFilter DomainFilter @@ -65,7 +65,7 @@ type rfc2136Actions interface { } // NewRfc2136Provider is a factory function for OpenStack rfc2136 providers -func NewRfc2136Provider(host string, port int, zoneName string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter DomainFilter, dryRun bool, actions rfc2136Actions, minTTLSeconds int) (Provider, error) { +func NewRfc2136Provider(host string, port int, zoneName string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter DomainFilter, dryRun bool, minTTLSeconds int64, actions rfc2136Actions) (Provider, error) { secretAlgChecked, ok := tsigAlgs[secretAlg] if !ok && !insecure { return nil, errors.Errorf("%s is not supported TSIG algorithm", secretAlg) @@ -256,7 +256,7 @@ func (r rfc2136Provider) UpdateRecord(m *dns.Msg, ep *endpoint.Endpoint) error { func (r rfc2136Provider) AddRecord(m *dns.Msg, ep *endpoint.Endpoint) error { log.Debugf("AddRecord.ep=%s", ep) - var ttl = int64(r.minTTLSeconds) + var ttl = r.minTTLSeconds if ep.RecordTTL.IsConfigured() && int64(ep.RecordTTL) > ttl { ttl = int64(ep.RecordTTL) } diff --git a/provider/rfc2136_test.go b/provider/rfc2136_test.go index cf6d02422..6cf0d2cd4 100644 --- a/provider/rfc2136_test.go +++ b/provider/rfc2136_test.go @@ -93,14 +93,13 @@ func (r *rfc2136Stub) IncomeTransfer(m *dns.Msg, a string) (env chan *dns.Envelo } func createRfc2136StubProvider(stub *rfc2136Stub) (Provider, error) { - return NewRfc2136Provider("", 0, "", false, "key", "secret", "hmac-sha512", true, DomainFilter{}, false, stub, 300) + return NewRfc2136Provider("", 0, "", false, "key", "secret", "hmac-sha512", true, DomainFilter{}, false, 300, stub) } func extractAuthoritySectionFromMessage(msg fmt.Stringer) []string { const searchPattern = "AUTHORITY SECTION:" - data := msg.String() - authoritySectionOffset := strings.Index(data, searchPattern) - return strings.Split(strings.TrimSpace(data[authoritySectionOffset+len(searchPattern):]), "\n") + authoritySectionOffset := strings.Index(msg.String(), searchPattern) + return strings.Split(strings.TrimSpace(msg.String()[authoritySectionOffset+len(searchPattern):]), "\n") } // TestRfc2136GetRecordsMultipleTargets simulates a single record with multiple targets.