mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 09:36:58 +02:00
chore(domainfilter): use pointer receivers for DomainFilter (#5546)
* refactor(domainfilter): use pointer receivers for DomainFilter * refactor(domainfilter): complete pointer type consistency across providers
This commit is contained in:
parent
e24f88cbb3
commit
a4522f0b76
@ -45,7 +45,7 @@ type mockProvider struct {
|
|||||||
|
|
||||||
type filteredMockProvider struct {
|
type filteredMockProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
RecordsStore []*endpoint.Endpoint
|
RecordsStore []*endpoint.Endpoint
|
||||||
RecordsCallCount int
|
RecordsCallCount int
|
||||||
ApplyChangesCalls []*plan.Changes
|
ApplyChangesCalls []*plan.Changes
|
||||||
@ -328,7 +328,7 @@ func TestShouldRunOnce(t *testing.T) {
|
|||||||
assert.True(t, ctrl.ShouldRunOnce(now))
|
assert.True(t, ctrl.ShouldRunOnce(now))
|
||||||
}
|
}
|
||||||
|
|
||||||
func testControllerFiltersDomains(t *testing.T, configuredEndpoints []*endpoint.Endpoint, domainFilter endpoint.DomainFilter, providerEndpoints []*endpoint.Endpoint, expectedChanges []*plan.Changes) {
|
func testControllerFiltersDomains(t *testing.T, configuredEndpoints []*endpoint.Endpoint, domainFilter *endpoint.DomainFilter, providerEndpoints []*endpoint.Endpoint, expectedChanges []*plan.Changes) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
cfg := externaldns.NewConfig()
|
cfg := externaldns.NewConfig()
|
||||||
cfg.ManagedDNSRecordTypes = []string{endpoint.RecordTypeA, endpoint.RecordTypeAAAA, endpoint.RecordTypeCNAME}
|
cfg.ManagedDNSRecordTypes = []string{endpoint.RecordTypeA, endpoint.RecordTypeAAAA, endpoint.RecordTypeCNAME}
|
||||||
@ -402,7 +402,7 @@ func TestWhenNoFilterControllerConsidersAllComain(t *testing.T) {
|
|||||||
Targets: endpoint.Targets{"8.8.8.8"},
|
Targets: endpoint.Targets{"8.8.8.8"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
endpoint.DomainFilter{},
|
&endpoint.DomainFilter{},
|
||||||
[]*endpoint.Endpoint{
|
[]*endpoint.Endpoint{
|
||||||
{
|
{
|
||||||
DNSName: "some-record.used.tld",
|
DNSName: "some-record.used.tld",
|
||||||
|
@ -145,7 +145,7 @@ func Execute() {
|
|||||||
func buildProvider(
|
func buildProvider(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
cfg *externaldns.Config,
|
cfg *externaldns.Config,
|
||||||
domainFilter endpoint.DomainFilter,
|
domainFilter *endpoint.DomainFilter,
|
||||||
) (provider.Provider, error) {
|
) (provider.Provider, error) {
|
||||||
var p provider.Provider
|
var p provider.Provider
|
||||||
var err error
|
var err error
|
||||||
@ -339,7 +339,7 @@ func buildProvider(
|
|||||||
return p, err
|
return p, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildController(cfg *externaldns.Config, src source.Source, p provider.Provider, filter endpoint.DomainFilter) (*Controller, error) {
|
func buildController(cfg *externaldns.Config, src source.Source, p provider.Provider, filter *endpoint.DomainFilter) (*Controller, error) {
|
||||||
policy, ok := plan.Policies[cfg.Policy]
|
policy, ok := plan.Policies[cfg.Policy]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("unknown policy: %s", cfg.Policy)
|
return nil, fmt.Errorf("unknown policy: %s", cfg.Policy)
|
||||||
@ -429,7 +429,7 @@ func buildSource(ctx context.Context, cfg *externaldns.Config) (source.Source, e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RegexDomainFilter overrides DomainFilter
|
// RegexDomainFilter overrides DomainFilter
|
||||||
func createDomainFilter(cfg *externaldns.Config) endpoint.DomainFilter {
|
func createDomainFilter(cfg *externaldns.Config) *endpoint.DomainFilter {
|
||||||
if cfg.RegexDomainFilter != nil && cfg.RegexDomainFilter.String() != "" {
|
if cfg.RegexDomainFilter != nil && cfg.RegexDomainFilter.String() != "" {
|
||||||
return endpoint.NewRegexDomainFilter(cfg.RegexDomainFilter, cfg.RegexDomainExclusion)
|
return endpoint.NewRegexDomainFilter(cfg.RegexDomainFilter, cfg.RegexDomainExclusion)
|
||||||
} else {
|
} else {
|
||||||
|
@ -134,7 +134,7 @@ func TestCreateDomainFilter(t *testing.T) {
|
|||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
cfg *externaldns.Config
|
cfg *externaldns.Config
|
||||||
expectedDomainFilter endpoint.DomainFilter
|
expectedDomainFilter *endpoint.DomainFilter
|
||||||
isConfigured bool
|
isConfigured bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
|
@ -80,23 +80,26 @@ func prepareFilters(filters []string) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewDomainFilterWithExclusions returns a new DomainFilter, given a list of matches and exclusions
|
// NewDomainFilterWithExclusions returns a new DomainFilter, given a list of matches and exclusions
|
||||||
func NewDomainFilterWithExclusions(domainFilters []string, excludeDomains []string) DomainFilter {
|
func NewDomainFilterWithExclusions(domainFilters []string, excludeDomains []string) *DomainFilter {
|
||||||
return DomainFilter{Filters: prepareFilters(domainFilters), exclude: prepareFilters(excludeDomains)}
|
return &DomainFilter{Filters: prepareFilters(domainFilters), exclude: prepareFilters(excludeDomains)}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewDomainFilter returns a new DomainFilter given a comma separated list of domains
|
// NewDomainFilter returns a new DomainFilter given a comma separated list of domains
|
||||||
func NewDomainFilter(domainFilters []string) DomainFilter {
|
func NewDomainFilter(domainFilters []string) *DomainFilter {
|
||||||
return DomainFilter{Filters: prepareFilters(domainFilters)}
|
return &DomainFilter{Filters: prepareFilters(domainFilters)}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRegexDomainFilter returns a new DomainFilter given a regular expression
|
// NewRegexDomainFilter returns a new DomainFilter given a regular expression
|
||||||
func NewRegexDomainFilter(regexDomainFilter *regexp.Regexp, regexDomainExclusion *regexp.Regexp) DomainFilter {
|
func NewRegexDomainFilter(regexDomainFilter *regexp.Regexp, regexDomainExclusion *regexp.Regexp) *DomainFilter {
|
||||||
return DomainFilter{regex: regexDomainFilter, regexExclusion: regexDomainExclusion}
|
return &DomainFilter{regex: regexDomainFilter, regexExclusion: regexDomainExclusion}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Match checks whether a domain can be found in the DomainFilter.
|
// Match checks whether a domain can be found in the DomainFilter.
|
||||||
// RegexFilter takes precedence over Filters
|
// RegexFilter takes precedence over Filters
|
||||||
func (df DomainFilter) Match(domain string) bool {
|
func (df *DomainFilter) Match(domain string) bool {
|
||||||
|
if df == nil {
|
||||||
|
return true // nil filter matches everything
|
||||||
|
}
|
||||||
if df.regex != nil && df.regex.String() != "" || df.regexExclusion != nil && df.regexExclusion.String() != "" {
|
if df.regex != nil && df.regex.String() != "" || df.regexExclusion != nil && df.regexExclusion.String() != "" {
|
||||||
return matchRegex(df.regex, df.regexExclusion, domain)
|
return matchRegex(df.regex, df.regexExclusion, domain)
|
||||||
}
|
}
|
||||||
@ -145,7 +148,10 @@ func matchRegex(regex *regexp.Regexp, negativeRegex *regexp.Regexp, domain strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IsConfigured returns true if any inclusion or exclusion rules have been specified.
|
// IsConfigured returns true if any inclusion or exclusion rules have been specified.
|
||||||
func (df DomainFilter) IsConfigured() bool {
|
func (df *DomainFilter) IsConfigured() bool {
|
||||||
|
if df == nil {
|
||||||
|
return false // nil filter is not configured
|
||||||
|
}
|
||||||
if df.regex != nil && df.regex.String() != "" {
|
if df.regex != nil && df.regex.String() != "" {
|
||||||
return true
|
return true
|
||||||
} else if df.regexExclusion != nil && df.regexExclusion.String() != "" {
|
} else if df.regexExclusion != nil && df.regexExclusion.String() != "" {
|
||||||
@ -154,7 +160,14 @@ func (df DomainFilter) IsConfigured() bool {
|
|||||||
return len(df.Filters) > 0 || len(df.exclude) > 0
|
return len(df.Filters) > 0 || len(df.exclude) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (df DomainFilter) MarshalJSON() ([]byte, error) {
|
func (df *DomainFilter) MarshalJSON() ([]byte, error) {
|
||||||
|
if df == nil {
|
||||||
|
// compatibility with nil DomainFilter
|
||||||
|
return json.Marshal(domainFilterSerde{
|
||||||
|
Include: nil,
|
||||||
|
Exclude: nil,
|
||||||
|
})
|
||||||
|
}
|
||||||
if df.regex != nil || df.regexExclusion != nil {
|
if df.regex != nil || df.regexExclusion != nil {
|
||||||
var include, exclude string
|
var include, exclude string
|
||||||
if df.regex != nil {
|
if df.regex != nil {
|
||||||
@ -184,7 +197,7 @@ func (df *DomainFilter) UnmarshalJSON(b []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if deserialized.RegexInclude == "" && deserialized.RegexExclude == "" {
|
if deserialized.RegexInclude == "" && deserialized.RegexExclude == "" {
|
||||||
*df = NewDomainFilterWithExclusions(deserialized.Include, deserialized.Exclude)
|
*df = *NewDomainFilterWithExclusions(deserialized.Include, deserialized.Exclude)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,11 +218,14 @@ func (df *DomainFilter) UnmarshalJSON(b []byte) error {
|
|||||||
return fmt.Errorf("invalid regexExclude: %w", err)
|
return fmt.Errorf("invalid regexExclude: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*df = NewRegexDomainFilter(include, exclude)
|
*df = *NewRegexDomainFilter(include, exclude)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (df DomainFilter) MatchParent(domain string) bool {
|
func (df *DomainFilter) MatchParent(domain string) bool {
|
||||||
|
if df == nil {
|
||||||
|
return true // nil filter matches everything
|
||||||
|
}
|
||||||
if matchFilter(df.exclude, domain, false) {
|
if matchFilter(df.exclude, domain, false) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -701,7 +701,7 @@ func TestDomainFilterDeserializeError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertSerializes[T any](t *testing.T, domainFilter DomainFilter, expectedSerialization map[string]T) {
|
func assertSerializes[T any](t *testing.T, domainFilter *DomainFilter, expectedSerialization map[string]T) {
|
||||||
serialized, err := json.Marshal(domainFilter)
|
serialized, err := json.Marshal(domainFilter)
|
||||||
assert.NoError(t, err, "serializing")
|
assert.NoError(t, err, "serializing")
|
||||||
expected, err := json.Marshal(expectedSerialization)
|
expected, err := json.Marshal(expectedSerialization)
|
||||||
@ -709,14 +709,14 @@ func assertSerializes[T any](t *testing.T, domainFilter DomainFilter, expectedSe
|
|||||||
assert.JSONEq(t, string(expected), string(serialized), "json serialization")
|
assert.JSONEq(t, string(expected), string(serialized), "json serialization")
|
||||||
}
|
}
|
||||||
|
|
||||||
func deserialize[T any](t *testing.T, serialized map[string]T) DomainFilter {
|
func deserialize[T any](t *testing.T, serialized map[string]T) *DomainFilter {
|
||||||
inJson, err := json.Marshal(serialized)
|
inJson, err := json.Marshal(serialized)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
var deserialized DomainFilter
|
var deserialized DomainFilter
|
||||||
err = json.Unmarshal(inJson, &deserialized)
|
err = json.Unmarshal(inJson, &deserialized)
|
||||||
assert.NoError(t, err, "deserializing")
|
assert.NoError(t, err, "deserializing")
|
||||||
|
|
||||||
return deserialized
|
return &deserialized
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDomainFilterMatchParent(t *testing.T) {
|
func TestDomainFilterMatchParent(t *testing.T) {
|
||||||
|
@ -902,7 +902,7 @@ func (suite *PlanTestSuite) TestDomainFiltersInitial() {
|
|||||||
Policies: []Policy{&SyncPolicy{}},
|
Policies: []Policy{&SyncPolicy{}},
|
||||||
Current: current,
|
Current: current,
|
||||||
Desired: desired,
|
Desired: desired,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -926,7 +926,7 @@ func (suite *PlanTestSuite) TestDomainFiltersUpdate() {
|
|||||||
Policies: []Policy{&SyncPolicy{}},
|
Policies: []Policy{&SyncPolicy{}},
|
||||||
Current: current,
|
Current: current,
|
||||||
Desired: desired,
|
Desired: desired,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ type AkamaiDNSService interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AkamaiConfig struct {
|
type AkamaiConfig struct {
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
ZoneIDFilter provider.ZoneIDFilter
|
ZoneIDFilter provider.ZoneIDFilter
|
||||||
ServiceConsumerDomain string
|
ServiceConsumerDomain string
|
||||||
ClientToken string
|
ClientToken string
|
||||||
@ -68,7 +68,7 @@ type AkamaiConfig struct {
|
|||||||
type AkamaiProvider struct {
|
type AkamaiProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
// Edgedns zones to filter on
|
// Edgedns zones to filter on
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
// Contract Ids to filter on
|
// Contract Ids to filter on
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
// Edgegrid library configuration
|
// Edgegrid library configuration
|
||||||
|
@ -49,7 +49,7 @@ func newStub() *edgednsStub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createAkamaiStubProvider(stub *edgednsStub, domfilter endpoint.DomainFilter, idfilter provider.ZoneIDFilter) (*AkamaiProvider, error) {
|
func createAkamaiStubProvider(stub *edgednsStub, domfilter *endpoint.DomainFilter, idfilter provider.ZoneIDFilter) (*AkamaiProvider, error) {
|
||||||
akamaiConfig := AkamaiConfig{
|
akamaiConfig := AkamaiConfig{
|
||||||
DomainFilter: domfilter,
|
DomainFilter: domfilter,
|
||||||
ZoneIDFilter: idfilter,
|
ZoneIDFilter: idfilter,
|
||||||
@ -153,7 +153,7 @@ func (r *edgednsStub) UpdateRecord(record *dns.RecordBody, zone string, recLock
|
|||||||
// Test FetchZones
|
// Test FetchZones
|
||||||
func TestFetchZonesZoneIDFilter(t *testing.T) {
|
func TestFetchZonesZoneIDFilter(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.NewZoneIDFilter([]string{"Test"})
|
idfilter := provider.NewZoneIDFilter([]string{"Test"})
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@ -186,7 +186,7 @@ func TestFetchZonesEmpty(t *testing.T) {
|
|||||||
// TestAkamaiRecords tests record endpoint
|
// TestAkamaiRecords tests record endpoint
|
||||||
func TestAkamaiRecords(t *testing.T) {
|
func TestAkamaiRecords(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.ZoneIDFilter{}
|
idfilter := provider.ZoneIDFilter{}
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -221,7 +221,7 @@ func TestAkamaiRecords(t *testing.T) {
|
|||||||
|
|
||||||
func TestAkamaiRecordsEmpty(t *testing.T) {
|
func TestAkamaiRecordsEmpty(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"})
|
idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"})
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -265,7 +265,7 @@ func TestAkamaiRecordsFilters(t *testing.T) {
|
|||||||
// (p AkamaiProvider) createRecordsets(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) error
|
// (p AkamaiProvider) createRecordsets(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) error
|
||||||
func TestCreateRecords(t *testing.T) {
|
func TestCreateRecords(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.ZoneIDFilter{}
|
idfilter := provider.ZoneIDFilter{}
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@ -281,7 +281,7 @@ func TestCreateRecords(t *testing.T) {
|
|||||||
|
|
||||||
func TestCreateRecordsDomainFilter(t *testing.T) {
|
func TestCreateRecordsDomainFilter(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.ZoneIDFilter{}
|
idfilter := provider.ZoneIDFilter{}
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@ -299,7 +299,7 @@ func TestCreateRecordsDomainFilter(t *testing.T) {
|
|||||||
// TestDeleteRecords validate delete
|
// TestDeleteRecords validate delete
|
||||||
func TestDeleteRecords(t *testing.T) {
|
func TestDeleteRecords(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.ZoneIDFilter{}
|
idfilter := provider.ZoneIDFilter{}
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@ -333,7 +333,7 @@ func TestDeleteRecordsDomainFilter(t *testing.T) {
|
|||||||
// Test record update func
|
// Test record update func
|
||||||
func TestUpdateRecords(t *testing.T) {
|
func TestUpdateRecords(t *testing.T) {
|
||||||
stub := newStub()
|
stub := newStub()
|
||||||
domfilter := endpoint.DomainFilter{}
|
domfilter := &endpoint.DomainFilter{}
|
||||||
idfilter := provider.ZoneIDFilter{}
|
idfilter := provider.ZoneIDFilter{}
|
||||||
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
c, err := createAkamaiStubProvider(stub, domfilter, idfilter)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -70,7 +70,7 @@ type AlibabaCloudPrivateZoneAPI interface {
|
|||||||
// AlibabaCloudProvider implements the DNS provider for Alibaba Cloud.
|
// AlibabaCloudProvider implements the DNS provider for Alibaba Cloud.
|
||||||
type AlibabaCloudProvider struct {
|
type AlibabaCloudProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter // Private Zone only
|
zoneIDFilter provider.ZoneIDFilter // Private Zone only
|
||||||
MaxChangeCount int
|
MaxChangeCount int
|
||||||
EvaluateTargetHealth bool
|
EvaluateTargetHealth bool
|
||||||
@ -97,7 +97,7 @@ type alibabaCloudConfig struct {
|
|||||||
// NewAlibabaCloudProvider creates a new Alibaba Cloud provider.
|
// NewAlibabaCloudProvider creates a new Alibaba Cloud provider.
|
||||||
//
|
//
|
||||||
// Returns the provider or an error if a provider could not be created.
|
// Returns the provider or an error if a provider could not be created.
|
||||||
func NewAlibabaCloudProvider(configFile string, domainFilter endpoint.DomainFilter, zoneIDFileter provider.ZoneIDFilter, zoneType string, dryRun bool) (*AlibabaCloudProvider, error) {
|
func NewAlibabaCloudProvider(configFile string, domainFilter *endpoint.DomainFilter, zoneIDFileter provider.ZoneIDFilter, zoneType string, dryRun bool) (*AlibabaCloudProvider, error) {
|
||||||
cfg := alibabaCloudConfig{}
|
cfg := alibabaCloudConfig{}
|
||||||
if configFile != "" {
|
if configFile != "" {
|
||||||
contents, err := os.ReadFile(configFile)
|
contents, err := os.ReadFile(configFile)
|
||||||
|
@ -279,7 +279,7 @@ type AWSProvider struct {
|
|||||||
batchChangeInterval time.Duration
|
batchChangeInterval time.Duration
|
||||||
evaluateTargetHealth bool
|
evaluateTargetHealth bool
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
// filter hosted zones by id
|
// filter hosted zones by id
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
// filter hosted zones by type (e.g. private or public)
|
// filter hosted zones by type (e.g. private or public)
|
||||||
@ -296,7 +296,7 @@ type AWSProvider struct {
|
|||||||
|
|
||||||
// AWSConfig contains configuration to create a new AWS provider.
|
// AWSConfig contains configuration to create a new AWS provider.
|
||||||
type AWSConfig struct {
|
type AWSConfig struct {
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
ZoneIDFilter provider.ZoneIDFilter
|
ZoneIDFilter provider.ZoneIDFilter
|
||||||
ZoneTypeFilter provider.ZoneTypeFilter
|
ZoneTypeFilter provider.ZoneTypeFilter
|
||||||
ZoneTagFilter provider.ZoneTagFilter
|
ZoneTagFilter provider.ZoneTagFilter
|
||||||
@ -624,7 +624,7 @@ func (p *AWSProvider) GetDomainFilter() endpoint.DomainFilterInterface {
|
|||||||
zones, err := p.Zones(context.Background())
|
zones, err := p.Zones(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("failed to list zones: %v", err)
|
log.Errorf("failed to list zones: %v", err)
|
||||||
return endpoint.DomainFilter{}
|
return &endpoint.DomainFilter{}
|
||||||
}
|
}
|
||||||
zoneNames := []string(nil)
|
zoneNames := []string(nil)
|
||||||
for _, z := range zones {
|
for _, z := range zones {
|
||||||
|
@ -373,12 +373,12 @@ func TestAWSZonesWithTagFilterError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestAWSRecordsFilter(t *testing.T) {
|
func TestAWSRecordsFilter(t *testing.T) {
|
||||||
provider, _ := newAWSProvider(t, endpoint.DomainFilter{}, provider.ZoneIDFilter{}, provider.ZoneTypeFilter{}, false, false, nil)
|
provider, _ := newAWSProvider(t, &endpoint.DomainFilter{}, provider.ZoneIDFilter{}, provider.ZoneTypeFilter{}, false, false, nil)
|
||||||
domainFilter := provider.GetDomainFilter()
|
domainFilter := provider.GetDomainFilter()
|
||||||
require.NotNil(t, domainFilter)
|
require.NotNil(t, domainFilter)
|
||||||
require.IsType(t, endpoint.DomainFilter{}, domainFilter)
|
require.IsType(t, &endpoint.DomainFilter{}, domainFilter)
|
||||||
count := 0
|
count := 0
|
||||||
filters := domainFilter.(endpoint.DomainFilter).Filters
|
filters := domainFilter.(*endpoint.DomainFilter).Filters
|
||||||
for _, tld := range []string{
|
for _, tld := range []string{
|
||||||
"zone-4.ext-dns-test-3.teapot.zalan.do",
|
"zone-4.ext-dns-test-3.teapot.zalan.do",
|
||||||
".zone-4.ext-dns-test-3.teapot.zalan.do",
|
".zone-4.ext-dns-test-3.teapot.zalan.do",
|
||||||
@ -2208,11 +2208,11 @@ func listAWSRecords(t *testing.T, client Route53API, zone string) []route53types
|
|||||||
return resp.ResourceRecordSets
|
return resp.ResourceRecordSets
|
||||||
}
|
}
|
||||||
|
|
||||||
func newAWSProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, evaluateTargetHealth, dryRun bool, records []route53types.ResourceRecordSet) (*AWSProvider, *Route53APIStub) {
|
func newAWSProvider(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, evaluateTargetHealth, dryRun bool, records []route53types.ResourceRecordSet) (*AWSProvider, *Route53APIStub) {
|
||||||
return newAWSProviderWithTagFilter(t, domainFilter, zoneIDFilter, zoneTypeFilter, provider.NewZoneTagFilter([]string{}), evaluateTargetHealth, dryRun, records)
|
return newAWSProviderWithTagFilter(t, domainFilter, zoneIDFilter, zoneTypeFilter, provider.NewZoneTagFilter([]string{}), evaluateTargetHealth, dryRun, records)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newAWSProviderWithTagFilter(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, zoneTagFilter provider.ZoneTagFilter, evaluateTargetHealth, dryRun bool, records []route53types.ResourceRecordSet) (*AWSProvider, *Route53APIStub) {
|
func newAWSProviderWithTagFilter(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, zoneTagFilter provider.ZoneTagFilter, evaluateTargetHealth, dryRun bool, records []route53types.ResourceRecordSet) (*AWSProvider, *Route53APIStub) {
|
||||||
client := NewRoute53APIStub(t)
|
client := NewRoute53APIStub(t)
|
||||||
|
|
||||||
provider := &AWSProvider{
|
provider := &AWSProvider{
|
||||||
|
@ -53,7 +53,7 @@ func providerFilters(client *Route53APIFixtureStub, options ...func(awsProvider
|
|||||||
clients: map[string]Route53API{defaultAWSProfile: client},
|
clients: map[string]Route53API{defaultAWSProfile: client},
|
||||||
evaluateTargetHealth: false,
|
evaluateTargetHealth: false,
|
||||||
dryRun: false,
|
dryRun: false,
|
||||||
domainFilter: endpoint.NewDomainFilter([]string{}),
|
domainFilter: &endpoint.DomainFilter{},
|
||||||
zoneIDFilter: provider.NewZoneIDFilter([]string{}),
|
zoneIDFilter: provider.NewZoneIDFilter([]string{}),
|
||||||
zoneTypeFilter: provider.NewZoneTypeFilter(""),
|
zoneTypeFilter: provider.NewZoneTypeFilter(""),
|
||||||
zoneTagFilter: provider.NewZoneTagFilter([]string{}),
|
zoneTagFilter: provider.NewZoneTagFilter([]string{}),
|
||||||
|
@ -76,7 +76,7 @@ type AWSSDProvider struct {
|
|||||||
client AWSSDClient
|
client AWSSDClient
|
||||||
dryRun bool
|
dryRun bool
|
||||||
// only consider namespaces ending in this suffix
|
// only consider namespaces ending in this suffix
|
||||||
namespaceFilter endpoint.DomainFilter
|
namespaceFilter *endpoint.DomainFilter
|
||||||
// filter namespace by type (private or public)
|
// filter namespace by type (private or public)
|
||||||
namespaceTypeFilter sdtypes.NamespaceFilter
|
namespaceTypeFilter sdtypes.NamespaceFilter
|
||||||
// enables service without instances cleanup
|
// enables service without instances cleanup
|
||||||
@ -88,7 +88,7 @@ type AWSSDProvider struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewAWSSDProvider initializes a new AWS Cloud Map based Provider.
|
// NewAWSSDProvider initializes a new AWS Cloud Map based Provider.
|
||||||
func NewAWSSDProvider(domainFilter endpoint.DomainFilter, namespaceType string, dryRun, cleanEmptyService bool, ownerID string, tags map[string]string, client AWSSDClient) (*AWSSDProvider, error) {
|
func NewAWSSDProvider(domainFilter *endpoint.DomainFilter, namespaceType string, dryRun, cleanEmptyService bool, ownerID string, tags map[string]string, client AWSSDClient) (*AWSSDProvider, error) {
|
||||||
p := &AWSSDProvider{
|
p := &AWSSDProvider{
|
||||||
client: client,
|
client: client,
|
||||||
dryRun: dryRun,
|
dryRun: dryRun,
|
||||||
|
@ -300,7 +300,7 @@ func TestAWSSDProvider_ListNamespaces(t *testing.T) {
|
|||||||
|
|
||||||
for _, tc := range []struct {
|
for _, tc := range []struct {
|
||||||
msg string
|
msg string
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
namespaceTypeFilter string
|
namespaceTypeFilter string
|
||||||
expectedNamespaces []*sdtypes.NamespaceSummary
|
expectedNamespaces []*sdtypes.NamespaceSummary
|
||||||
}{
|
}{
|
||||||
|
@ -206,7 +206,7 @@ func (s *AWSSDClientStub) DeleteService(ctx context.Context, input *sd.DeleteSer
|
|||||||
return &sd.DeleteServiceOutput{}, nil
|
return &sd.DeleteServiceOutput{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTestAWSSDProvider(api AWSSDClient, domainFilter endpoint.DomainFilter, namespaceTypeFilter, ownerID string) *AWSSDProvider {
|
func newTestAWSSDProvider(api AWSSDClient, domainFilter *endpoint.DomainFilter, namespaceTypeFilter, ownerID string) *AWSSDProvider {
|
||||||
return &AWSSDProvider{
|
return &AWSSDProvider{
|
||||||
client: api,
|
client: api,
|
||||||
dryRun: false,
|
dryRun: false,
|
||||||
|
@ -53,8 +53,8 @@ type RecordSetsClient interface {
|
|||||||
// AzureProvider implements the DNS provider for Microsoft's Azure cloud platform.
|
// AzureProvider implements the DNS provider for Microsoft's Azure cloud platform.
|
||||||
type AzureProvider struct {
|
type AzureProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneNameFilter endpoint.DomainFilter
|
zoneNameFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
resourceGroup string
|
resourceGroup string
|
||||||
@ -69,7 +69,7 @@ type AzureProvider struct {
|
|||||||
// NewAzureProvider creates a new Azure provider.
|
// NewAzureProvider creates a new Azure provider.
|
||||||
//
|
//
|
||||||
// Returns the provider or an error if a provider could not be created.
|
// Returns the provider or an error if a provider could not be created.
|
||||||
func NewAzureProvider(configFile string, domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, subscriptionID string, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesCacheDuration time.Duration, maxRetriesCount int, dryRun bool) (*AzureProvider, error) {
|
func NewAzureProvider(configFile string, domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, subscriptionID string, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesCacheDuration time.Duration, maxRetriesCount int, dryRun bool) (*AzureProvider, error) {
|
||||||
cfg, err := getConfig(configFile, subscriptionID, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost)
|
cfg, err := getConfig(configFile, subscriptionID, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to read Azure config file '%s': %w", configFile, err)
|
return nil, fmt.Errorf("failed to read Azure config file '%s': %w", configFile, err)
|
||||||
|
@ -48,8 +48,8 @@ type PrivateRecordSetsClient interface {
|
|||||||
// AzurePrivateDNSProvider implements the DNS provider for Microsoft's Azure Private DNS service
|
// AzurePrivateDNSProvider implements the DNS provider for Microsoft's Azure Private DNS service
|
||||||
type AzurePrivateDNSProvider struct {
|
type AzurePrivateDNSProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneNameFilter endpoint.DomainFilter
|
zoneNameFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
resourceGroup string
|
resourceGroup string
|
||||||
@ -64,7 +64,7 @@ type AzurePrivateDNSProvider struct {
|
|||||||
// NewAzurePrivateDNSProvider creates a new Azure Private DNS provider.
|
// NewAzurePrivateDNSProvider creates a new Azure Private DNS provider.
|
||||||
//
|
//
|
||||||
// Returns the provider or an error if a provider could not be created.
|
// Returns the provider or an error if a provider could not be created.
|
||||||
func NewAzurePrivateDNSProvider(configFile string, domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, subscriptionID string, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesCacheDuration time.Duration, maxRetriesCount int, dryRun bool) (*AzurePrivateDNSProvider, error) {
|
func NewAzurePrivateDNSProvider(configFile string, domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, subscriptionID string, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesCacheDuration time.Duration, maxRetriesCount int, dryRun bool) (*AzurePrivateDNSProvider, error) {
|
||||||
cfg, err := getConfig(configFile, subscriptionID, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost)
|
cfg, err := getConfig(configFile, subscriptionID, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to read Azure config file '%s': %w", configFile, err)
|
return nil, fmt.Errorf("failed to read Azure config file '%s': %w", configFile, err)
|
||||||
|
@ -224,13 +224,13 @@ func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// newMockedAzurePrivateDNSProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
|
// newMockedAzurePrivateDNSProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
|
||||||
func newMockedAzurePrivateDNSProvider(domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, zones []*privatedns.PrivateZone, recordSets []*privatedns.RecordSet, maxRetriesCount int) (*AzurePrivateDNSProvider, error) {
|
func newMockedAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, zones []*privatedns.PrivateZone, recordSets []*privatedns.RecordSet, maxRetriesCount int) (*AzurePrivateDNSProvider, error) {
|
||||||
zonesClient := newMockPrivateZonesClient(zones)
|
zonesClient := newMockPrivateZonesClient(zones)
|
||||||
recordSetsClient := newMockPrivateRecordSectsClient(recordSets)
|
recordSetsClient := newMockPrivateRecordSectsClient(recordSets)
|
||||||
return newAzurePrivateDNSProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, &zonesClient, &recordSetsClient, maxRetriesCount), nil
|
return newAzurePrivateDNSProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, &zonesClient, &recordSetsClient, maxRetriesCount), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newAzurePrivateDNSProvider(domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, privateZonesClient PrivateZonesClient, privateRecordsClient PrivateRecordSetsClient, maxRetriesCount int) *AzurePrivateDNSProvider {
|
func newAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, privateZonesClient PrivateZonesClient, privateRecordsClient PrivateRecordSetsClient, maxRetriesCount int) *AzurePrivateDNSProvider {
|
||||||
return &AzurePrivateDNSProvider{
|
return &AzurePrivateDNSProvider{
|
||||||
domainFilter: domainFilter,
|
domainFilter: domainFilter,
|
||||||
zoneNameFilter: zoneNameFilter,
|
zoneNameFilter: zoneNameFilter,
|
||||||
|
@ -237,13 +237,13 @@ func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values
|
|||||||
}
|
}
|
||||||
|
|
||||||
// newMockedAzureProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
|
// newMockedAzureProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
|
||||||
func newMockedAzureProvider(domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zones []*dns.Zone, recordSets []*dns.RecordSet, maxRetriesCount int) (*AzureProvider, error) {
|
func newMockedAzureProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zones []*dns.Zone, recordSets []*dns.RecordSet, maxRetriesCount int) (*AzureProvider, error) {
|
||||||
zonesClient := newMockZonesClient(zones)
|
zonesClient := newMockZonesClient(zones)
|
||||||
recordSetsClient := newMockRecordSetsClient(recordSets)
|
recordSetsClient := newMockRecordSetsClient(recordSets)
|
||||||
return newAzureProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost, &zonesClient, &recordSetsClient, maxRetriesCount), nil
|
return newAzureProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost, &zonesClient, &recordSetsClient, maxRetriesCount), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newAzureProvider(domainFilter endpoint.DomainFilter, zoneNameFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesClient ZonesClient, recordsClient RecordSetsClient, maxRetriesCount int) *AzureProvider {
|
func newAzureProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesClient ZonesClient, recordsClient RecordSetsClient, maxRetriesCount int) *AzureProvider {
|
||||||
return &AzureProvider{
|
return &AzureProvider{
|
||||||
domainFilter: domainFilter,
|
domainFilter: domainFilter,
|
||||||
zoneNameFilter: zoneNameFilter,
|
zoneNameFilter: zoneNameFilter,
|
||||||
|
@ -35,7 +35,7 @@ import (
|
|||||||
type CivoProvider struct {
|
type CivoProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
Client civogo.Client
|
Client civogo.Client
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
DryRun bool
|
DryRun bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ type CivoChangeDelete struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewCivoProvider initializes a new Civo DNS based Provider.
|
// NewCivoProvider initializes a new Civo DNS based Provider.
|
||||||
func NewCivoProvider(domainFilter endpoint.DomainFilter, dryRun bool) (*CivoProvider, error) {
|
func NewCivoProvider(domainFilter *endpoint.DomainFilter, dryRun bool) (*CivoProvider, error) {
|
||||||
token, ok := os.LookupEnv("CIVO_TOKEN")
|
token, ok := os.LookupEnv("CIVO_TOKEN")
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("no token found")
|
return nil, fmt.Errorf("no token found")
|
||||||
|
@ -226,7 +226,7 @@ type CloudFlareProvider struct {
|
|||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
Client cloudFlareDNS
|
Client cloudFlareDNS
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
proxiedByDefault bool
|
proxiedByDefault bool
|
||||||
DryRun bool
|
DryRun bool
|
||||||
@ -289,7 +289,7 @@ func convertCloudflareError(err error) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewCloudFlareProvider initializes a new CloudFlare DNS based Provider.
|
// NewCloudFlareProvider initializes a new CloudFlare DNS based Provider.
|
||||||
func NewCloudFlareProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, proxiedByDefault bool, dryRun bool, regionKey string, customHostnamesConfig CustomHostnamesConfig, dnsRecordsConfig DNSRecordsConfig) (*CloudFlareProvider, error) {
|
func NewCloudFlareProvider(domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, proxiedByDefault bool, dryRun bool, regionKey string, customHostnamesConfig CustomHostnamesConfig, dnsRecordsConfig DNSRecordsConfig) (*CloudFlareProvider, error) {
|
||||||
// initialize via chosen auth method and returns new API object
|
// initialize via chosen auth method and returns new API object
|
||||||
var (
|
var (
|
||||||
config *cloudflare.API
|
config *cloudflare.API
|
||||||
|
@ -464,7 +464,7 @@ func AssertActions(t *testing.T, provider *CloudFlareProvider, endpoints []*endp
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: managedRecords,
|
ManagedRecords: managedRecords,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1670,7 +1670,7 @@ func TestCloudflareComplexUpdate(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1761,7 +1761,7 @@ func TestCustomTTLWithEnabledProxyNotChanged(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2222,7 +2222,7 @@ func TestCloudflareDNSRecordsOperationsFail(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
planned := plan.Calculate()
|
planned := plan.Calculate()
|
||||||
@ -2645,7 +2645,7 @@ func TestCloudflareCustomHostnameOperations(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME, endpoint.RecordTypeTXT},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME, endpoint.RecordTypeTXT},
|
||||||
}
|
}
|
||||||
planned := plan.Calculate()
|
planned := plan.Calculate()
|
||||||
@ -2669,7 +2669,7 @@ func TestCloudflareCustomHostnameOperations(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2799,7 +2799,7 @@ func TestCloudflareDisabledCustomHostnameOperations(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
planned := plan.Calculate()
|
planned := plan.Calculate()
|
||||||
@ -2898,7 +2898,7 @@ func TestCloudflareCustomHostnameNotFoundOnRecordDeletion(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2981,7 +2981,7 @@ func TestCloudflareListCustomHostnamesWithPagionation(t *testing.T) {
|
|||||||
plan := &plan.Plan{
|
plan := &plan.Plan{
|
||||||
Current: records,
|
Current: records,
|
||||||
Desired: endpoints,
|
Desired: endpoints,
|
||||||
DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter},
|
DomainFilter: endpoint.MatchAllDomainFilters{domainFilter},
|
||||||
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ type coreDNSProvider struct {
|
|||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
dryRun bool
|
dryRun bool
|
||||||
coreDNSPrefix string
|
coreDNSPrefix string
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
client coreDNSClient
|
client coreDNSClient
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ func newETCDClient() (coreDNSClient, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewCoreDNSProvider is a CoreDNS provider constructor
|
// NewCoreDNSProvider is a CoreDNS provider constructor
|
||||||
func NewCoreDNSProvider(domainFilter endpoint.DomainFilter, prefix string, dryRun bool) (provider.Provider, error) {
|
func NewCoreDNSProvider(domainFilter *endpoint.DomainFilter, prefix string, dryRun bool) (provider.Provider, error) {
|
||||||
client, err := newETCDClient()
|
client, err := newETCDClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -415,9 +415,7 @@ func TestCoreDNSApplyChanges_DomainDoNotMatch(t *testing.T) {
|
|||||||
coredns := coreDNSProvider{
|
coredns := coreDNSProvider{
|
||||||
client: client,
|
client: client,
|
||||||
coreDNSPrefix: defaultCoreDNSPrefix,
|
coreDNSPrefix: defaultCoreDNSPrefix,
|
||||||
domainFilter: endpoint.DomainFilter{
|
domainFilter: endpoint.NewDomainFilter([]string{"example.local"}),
|
||||||
Filters: []string{"example.local"},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
changes1 := &plan.Changes{
|
changes1 := &plan.Changes{
|
||||||
@ -755,7 +753,7 @@ func TestNewCoreDNSProvider(t *testing.T) {
|
|||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
testutils.TestHelperEnvSetter(t, tt.envs)
|
testutils.TestHelperEnvSetter(t, tt.envs)
|
||||||
|
|
||||||
provider, err := NewCoreDNSProvider(endpoint.DomainFilter{}, "/prefix/", false)
|
provider, err := NewCoreDNSProvider(&endpoint.DomainFilter{}, "/prefix/", false)
|
||||||
if tt.wantErr {
|
if tt.wantErr {
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.EqualError(t, err, tt.errMsg)
|
assert.EqualError(t, err, tt.errMsg)
|
||||||
|
@ -43,7 +43,7 @@ type DigitalOceanProvider struct {
|
|||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
Client godo.DomainsService
|
Client godo.DomainsService
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
// page size when querying paginated APIs
|
// page size when querying paginated APIs
|
||||||
apiPageSize int
|
apiPageSize int
|
||||||
DryRun bool
|
DryRun bool
|
||||||
@ -77,7 +77,7 @@ func (c *digitalOceanChanges) Empty() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewDigitalOceanProvider initializes a new DigitalOcean DNS based Provider.
|
// NewDigitalOceanProvider initializes a new DigitalOcean DNS based Provider.
|
||||||
func NewDigitalOceanProvider(ctx context.Context, domainFilter endpoint.DomainFilter, dryRun bool, apiPageSize int) (*DigitalOceanProvider, error) {
|
func NewDigitalOceanProvider(ctx context.Context, domainFilter *endpoint.DomainFilter, dryRun bool, apiPageSize int) (*DigitalOceanProvider, error) {
|
||||||
token, ok := os.LookupEnv("DO_TOKEN")
|
token, ok := os.LookupEnv("DO_TOKEN")
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("no token found")
|
return nil, fmt.Errorf("no token found")
|
||||||
|
@ -87,7 +87,7 @@ type dnsimpleProvider struct {
|
|||||||
client dnsimpleZoneServiceInterface
|
client dnsimpleZoneServiceInterface
|
||||||
identity dnsimpleIdentityService
|
identity dnsimpleIdentityService
|
||||||
accountID string
|
accountID string
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ type dnsimpleChange struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewDnsimpleProvider initializes a new Dnsimple based provider
|
// NewDnsimpleProvider initializes a new Dnsimple based provider
|
||||||
func NewDnsimpleProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool) (provider.Provider, error) {
|
func NewDnsimpleProvider(domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool) (provider.Provider, error) {
|
||||||
oauthToken := os.Getenv("DNSIMPLE_OAUTH")
|
oauthToken := os.Getenv("DNSIMPLE_OAUTH")
|
||||||
if len(oauthToken) == 0 {
|
if len(oauthToken) == 0 {
|
||||||
return nil, fmt.Errorf("no dnsimple oauth token provided")
|
return nil, fmt.Errorf("no dnsimple oauth token provided")
|
||||||
|
@ -41,7 +41,7 @@ type EgoscaleClientI interface {
|
|||||||
// ExoscaleProvider initialized as dns provider with no records
|
// ExoscaleProvider initialized as dns provider with no records
|
||||||
type ExoscaleProvider struct {
|
type ExoscaleProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domain endpoint.DomainFilter
|
domain *endpoint.DomainFilter
|
||||||
client EgoscaleClientI
|
client EgoscaleClientI
|
||||||
apiEnv string
|
apiEnv string
|
||||||
apiZone string
|
apiZone string
|
||||||
@ -252,7 +252,7 @@ func (ep *ExoscaleProvider) Records(ctx context.Context) ([]*endpoint.Endpoint,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ExoscaleWithDomain modifies the domain on which dns zones are filtered
|
// ExoscaleWithDomain modifies the domain on which dns zones are filtered
|
||||||
func ExoscaleWithDomain(domainFilter endpoint.DomainFilter) ExoscaleOption {
|
func ExoscaleWithDomain(domainFilter *endpoint.DomainFilter) ExoscaleOption {
|
||||||
return func(p *ExoscaleProvider) {
|
return func(p *ExoscaleProvider) {
|
||||||
p.domain = domainFilter
|
p.domain = domainFilter
|
||||||
}
|
}
|
||||||
|
@ -47,11 +47,11 @@ type GandiProvider struct {
|
|||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
LiveDNSClient LiveDNSClientAdapter
|
LiveDNSClient LiveDNSClientAdapter
|
||||||
DomainClient DomainClientAdapter
|
DomainClient DomainClientAdapter
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
DryRun bool
|
DryRun bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGandiProvider(ctx context.Context, domainFilter endpoint.DomainFilter, dryRun bool) (*GandiProvider, error) {
|
func NewGandiProvider(ctx context.Context, domainFilter *endpoint.DomainFilter, dryRun bool) (*GandiProvider, error) {
|
||||||
key, ok_key := os.LookupEnv("GANDI_KEY")
|
key, ok_key := os.LookupEnv("GANDI_KEY")
|
||||||
pat, ok_pat := os.LookupEnv("GANDI_PAT")
|
pat, ok_pat := os.LookupEnv("GANDI_PAT")
|
||||||
if !ok_key && !ok_pat {
|
if !ok_key && !ok_pat {
|
||||||
|
@ -58,7 +58,7 @@ type gdClient interface {
|
|||||||
type GDProvider struct {
|
type GDProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
|
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
client gdClient
|
client gdClient
|
||||||
ttl int64
|
ttl int64
|
||||||
DryRun bool
|
DryRun bool
|
||||||
@ -135,7 +135,7 @@ func (z gdZoneIDName) findZoneRecord(hostname string) (suitableZoneID string, su
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewGoDaddyProvider initializes a new GoDaddy DNS based Provider.
|
// NewGoDaddyProvider initializes a new GoDaddy DNS based Provider.
|
||||||
func NewGoDaddyProvider(ctx context.Context, domainFilter endpoint.DomainFilter, ttl int64, apiKey, apiSecret string, useOTE, dryRun bool) (*GDProvider, error) {
|
func NewGoDaddyProvider(ctx context.Context, domainFilter *endpoint.DomainFilter, ttl int64, apiKey, apiSecret string, useOTE, dryRun bool) (*GDProvider, error) {
|
||||||
client, err := NewClient(useOTE, apiKey, apiSecret)
|
client, err := NewClient(useOTE, apiKey, apiSecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -109,7 +109,7 @@ type GoogleProvider struct {
|
|||||||
// Interval between batch updates.
|
// Interval between batch updates.
|
||||||
batchChangeInterval time.Duration
|
batchChangeInterval time.Duration
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
// filter for zones based on visibility
|
// filter for zones based on visibility
|
||||||
zoneTypeFilter provider.ZoneTypeFilter
|
zoneTypeFilter provider.ZoneTypeFilter
|
||||||
// only consider hosted zones ending with this zone id
|
// only consider hosted zones ending with this zone id
|
||||||
@ -125,7 +125,7 @@ type GoogleProvider struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewGoogleProvider initializes a new Google CloudDNS based Provider.
|
// NewGoogleProvider initializes a new Google CloudDNS based Provider.
|
||||||
func NewGoogleProvider(ctx context.Context, project string, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, batchChangeSize int, batchChangeInterval time.Duration, zoneVisibility string, dryRun bool) (*GoogleProvider, error) {
|
func NewGoogleProvider(ctx context.Context, project string, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, batchChangeSize int, batchChangeInterval time.Duration, zoneVisibility string, dryRun bool) (*GoogleProvider, error) {
|
||||||
gcloud, err := google.DefaultClient(ctx, dns.NdevClouddnsReadwriteScope)
|
gcloud, err := google.DefaultClient(ctx, dns.NdevClouddnsReadwriteScope)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -677,7 +677,7 @@ func validateChangeRecord(t *testing.T, record *dns.ResourceRecordSet, expected
|
|||||||
assert.Equal(t, expected.Type, record.Type)
|
assert.Equal(t, expected.Type, record.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGoogleProviderZoneOverlap(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, dryRun bool, _ []*endpoint.Endpoint) *GoogleProvider {
|
func newGoogleProviderZoneOverlap(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, dryRun bool, _ []*endpoint.Endpoint) *GoogleProvider {
|
||||||
provider := &GoogleProvider{
|
provider := &GoogleProvider{
|
||||||
project: "zalando-external-dns-test",
|
project: "zalando-external-dns-test",
|
||||||
dryRun: false,
|
dryRun: false,
|
||||||
@ -744,7 +744,7 @@ func newGoogleProviderZoneOverlap(t *testing.T, domainFilter endpoint.DomainFilt
|
|||||||
return provider
|
return provider
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGoogleProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, records []*endpoint.Endpoint, zonesErr, recordsErr error) *GoogleProvider {
|
func newGoogleProvider(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, records []*endpoint.Endpoint, zonesErr, recordsErr error) *GoogleProvider {
|
||||||
provider := &GoogleProvider{
|
provider := &GoogleProvider{
|
||||||
project: "zalando-external-dns-test",
|
project: "zalando-external-dns-test",
|
||||||
dryRun: false,
|
dryRun: false,
|
||||||
|
@ -77,7 +77,7 @@ func InMemoryWithLogging() InMemoryOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// InMemoryWithDomain modifies the domain on which dns zones are filtered
|
// InMemoryWithDomain modifies the domain on which dns zones are filtered
|
||||||
func InMemoryWithDomain(domainFilter endpoint.DomainFilter) InMemoryOption {
|
func InMemoryWithDomain(domainFilter *endpoint.DomainFilter) InMemoryOption {
|
||||||
return func(p *InMemoryProvider) {
|
return func(p *InMemoryProvider) {
|
||||||
p.domain = domainFilter
|
p.domain = domainFilter
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ type LinodeDomainClient interface {
|
|||||||
type LinodeProvider struct {
|
type LinodeProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
Client LinodeDomainClient
|
Client LinodeDomainClient
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
DryRun bool
|
DryRun bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ type LinodeChangeDelete struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewLinodeProvider initializes a new Linode DNS based Provider.
|
// NewLinodeProvider initializes a new Linode DNS based Provider.
|
||||||
func NewLinodeProvider(domainFilter endpoint.DomainFilter, dryRun bool) (*LinodeProvider, error) {
|
func NewLinodeProvider(domainFilter *endpoint.DomainFilter, dryRun bool) (*LinodeProvider, error) {
|
||||||
token, ok := os.LookupEnv("LINODE_TOKEN")
|
token, ok := os.LookupEnv("LINODE_TOKEN")
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("no token found")
|
return nil, fmt.Errorf("no token found")
|
||||||
|
@ -85,7 +85,7 @@ func (n NS1DomainService) ListZones() ([]*dns.Zone, *http.Response, error) {
|
|||||||
|
|
||||||
// NS1Config passes cli args to the NS1Provider
|
// NS1Config passes cli args to the NS1Provider
|
||||||
type NS1Config struct {
|
type NS1Config struct {
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
ZoneIDFilter provider.ZoneIDFilter
|
ZoneIDFilter provider.ZoneIDFilter
|
||||||
NS1Endpoint string
|
NS1Endpoint string
|
||||||
NS1IgnoreSSL bool
|
NS1IgnoreSSL bool
|
||||||
@ -97,7 +97,7 @@ type NS1Config struct {
|
|||||||
type NS1Provider struct {
|
type NS1Provider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
client NS1DomainClient
|
client NS1DomainClient
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
minTTLSeconds int
|
minTTLSeconds int
|
||||||
|
@ -63,7 +63,7 @@ type OCIProvider struct {
|
|||||||
client ociDNSClient
|
client ociDNSClient
|
||||||
cfg OCIConfig
|
cfg OCIConfig
|
||||||
|
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
zoneScope string
|
zoneScope string
|
||||||
zoneCache *zoneCache
|
zoneCache *zoneCache
|
||||||
@ -93,7 +93,7 @@ func LoadOCIConfig(path string) (*OCIConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewOCIProvider initializes a new OCI DNS based Provider.
|
// NewOCIProvider initializes a new OCI DNS based Provider.
|
||||||
func NewOCIProvider(cfg OCIConfig, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneScope string, dryRun bool) (*OCIProvider, error) {
|
func NewOCIProvider(cfg OCIConfig, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneScope string, dryRun bool) (*OCIProvider, error) {
|
||||||
var client ociDNSClient
|
var client ociDNSClient
|
||||||
var err error
|
var err error
|
||||||
var configProvider common.ConfigurationProvider
|
var configProvider common.ConfigurationProvider
|
||||||
|
@ -129,7 +129,7 @@ func (c *mockOCIDNSClient) PatchZoneRecords(ctx context.Context, request dns.Pat
|
|||||||
}
|
}
|
||||||
|
|
||||||
// newOCIProvider creates an OCI provider with API calls mocked out.
|
// newOCIProvider creates an OCI provider with API calls mocked out.
|
||||||
func newOCIProvider(client ociDNSClient, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneScope string, dryRun bool) *OCIProvider {
|
func newOCIProvider(client ociDNSClient, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneScope string, dryRun bool) *OCIProvider {
|
||||||
return &OCIProvider{
|
return &OCIProvider{
|
||||||
client: client,
|
client: client,
|
||||||
cfg: OCIConfig{
|
cfg: OCIConfig{
|
||||||
@ -246,7 +246,7 @@ func TestOCIZones(t *testing.T) {
|
|||||||
barZoneId := "ocid1.dns-zone.oc1..502aeddba262b92fd13ed7874f6f1404"
|
barZoneId := "ocid1.dns-zone.oc1..502aeddba262b92fd13ed7874f6f1404"
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
zoneScope string
|
zoneScope string
|
||||||
expected map[string]dns.ZoneSummary
|
expected map[string]dns.ZoneSummary
|
||||||
@ -321,7 +321,7 @@ func TestOCIZones(t *testing.T) {
|
|||||||
func TestOCIRecords(t *testing.T) {
|
func TestOCIRecords(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
zoneIDFilter provider.ZoneIDFilter
|
zoneIDFilter provider.ZoneIDFilter
|
||||||
expected []*endpoint.Endpoint
|
expected []*endpoint.Endpoint
|
||||||
}{
|
}{
|
||||||
|
@ -60,7 +60,7 @@ type OVHProvider struct {
|
|||||||
|
|
||||||
apiRateLimiter ratelimit.Limiter
|
apiRateLimiter ratelimit.Limiter
|
||||||
|
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
|
|
||||||
// DryRun enables dry-run mode
|
// DryRun enables dry-run mode
|
||||||
DryRun bool
|
DryRun bool
|
||||||
@ -123,7 +123,7 @@ type ovhChange struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewOVHProvider initializes a new OVH DNS based Provider.
|
// NewOVHProvider initializes a new OVH DNS based Provider.
|
||||||
func NewOVHProvider(ctx context.Context, domainFilter endpoint.DomainFilter, endpoint string, apiRateLimit int, enableCNAMERelative, dryRun bool) (*OVHProvider, error) {
|
func NewOVHProvider(ctx context.Context, domainFilter *endpoint.DomainFilter, endpoint string, apiRateLimit int, enableCNAMERelative, dryRun bool) (*OVHProvider, error) {
|
||||||
client, err := ovh.NewEndpointClient(endpoint)
|
client, err := ovh.NewEndpointClient(endpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -371,7 +371,7 @@ func (p *OVHProvider) zones(ctx context.Context) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, zoneName := range zones {
|
for _, zoneName := range zones {
|
||||||
if p.domainFilter.Match(zoneName) {
|
if p.domainFilter == nil || p.domainFilter.Match(zoneName) {
|
||||||
filteredZones = append(filteredZones, zoneName)
|
filteredZones = append(filteredZones, zoneName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -621,7 +621,7 @@ func TestOvhRecordString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNewOvhProvider(t *testing.T) {
|
func TestNewOvhProvider(t *testing.T) {
|
||||||
var domainFilter endpoint.DomainFilter
|
domainFilter := &endpoint.DomainFilter{}
|
||||||
_, err := NewOVHProvider(t.Context(), domainFilter, "ovh-eu", 20, false, true)
|
_, err := NewOVHProvider(t.Context(), domainFilter, "ovh-eu", 20, false, true)
|
||||||
td.CmpError(t, err)
|
td.CmpError(t, err)
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ const (
|
|||||||
|
|
||||||
// PDNSConfig is comprised of the fields necessary to create a new PDNSProvider
|
// PDNSConfig is comprised of the fields necessary to create a new PDNSProvider
|
||||||
type PDNSConfig struct {
|
type PDNSConfig struct {
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
DryRun bool
|
DryRun bool
|
||||||
Server string
|
Server string
|
||||||
ServerID string
|
ServerID string
|
||||||
@ -140,7 +140,7 @@ type PDNSAPIClient struct {
|
|||||||
serverID string
|
serverID string
|
||||||
authCtx context.Context
|
authCtx context.Context
|
||||||
client *pgo.APIClient
|
client *pgo.APIClient
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListZones : Method returns all enabled zones from PowerDNS
|
// ListZones : Method returns all enabled zones from PowerDNS
|
||||||
|
@ -597,35 +597,15 @@ var (
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
DomainFilterListSingle = endpoint.DomainFilter{
|
DomainFilterListSingle = endpoint.NewDomainFilter([]string{"example.com"})
|
||||||
Filters: []string{
|
|
||||||
"example.com",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
DomainFilterChildListSingle = endpoint.DomainFilter{
|
DomainFilterChildListSingle = endpoint.NewDomainFilter([]string{"a.example.com"})
|
||||||
Filters: []string{
|
|
||||||
"a.example.com",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
DomainFilterListMultiple = endpoint.DomainFilter{
|
DomainFilterListMultiple = endpoint.NewDomainFilter([]string{"example.com", "mock.com"})
|
||||||
Filters: []string{
|
|
||||||
"example.com",
|
|
||||||
"mock.com",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
DomainFilterChildListMultiple = endpoint.DomainFilter{
|
DomainFilterChildListMultiple = endpoint.NewDomainFilter([]string{"a.example.com", "c.example.com"})
|
||||||
Filters: []string{
|
|
||||||
"a.example.com",
|
|
||||||
"c.example.com",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
DomainFilterListEmpty = endpoint.DomainFilter{
|
DomainFilterListEmpty = endpoint.NewDomainFilter([]string{})
|
||||||
Filters: []string{},
|
|
||||||
}
|
|
||||||
|
|
||||||
RegexDomainFilter = endpoint.NewRegexDomainFilter(regexp.MustCompile("example.com"), nil)
|
RegexDomainFilter = endpoint.NewRegexDomainFilter(regexp.MustCompile("example.com"), nil)
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ type PiholeConfig struct {
|
|||||||
// Disable verification of TLS certificates.
|
// Disable verification of TLS certificates.
|
||||||
TLSInsecureSkipVerify bool
|
TLSInsecureSkipVerify bool
|
||||||
// A filter to apply when looking up and applying records.
|
// A filter to apply when looking up and applying records.
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
// Do nothing and log what would have changed to stdout.
|
// Do nothing and log what would have changed to stdout.
|
||||||
DryRun bool
|
DryRun bool
|
||||||
// PiHole API version =<5 or >=6, default is 5
|
// PiHole API version =<5 or >=6, default is 5
|
||||||
|
@ -64,7 +64,7 @@ func (b BaseProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoi
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b BaseProvider) GetDomainFilter() endpoint.DomainFilterInterface {
|
func (b BaseProvider) GetDomainFilter() endpoint.DomainFilterInterface {
|
||||||
return endpoint.DomainFilter{}
|
return &endpoint.DomainFilter{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type contextKey struct {
|
type contextKey struct {
|
||||||
|
@ -68,7 +68,7 @@ type rfc2136Provider struct {
|
|||||||
krb5Realm string
|
krb5Realm string
|
||||||
|
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
actions rfc2136Actions
|
actions rfc2136Actions
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ type rfc2136Actions interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewRfc2136Provider is a factory function for OpenStack rfc2136 providers
|
// NewRfc2136Provider is a factory function for OpenStack rfc2136 providers
|
||||||
func NewRfc2136Provider(hosts []string, port int, zoneNames []string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter endpoint.DomainFilter, dryRun bool, minTTL time.Duration, createPTR bool, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, tlsConfig TLSConfig, loadBalancingStrategy string, actions rfc2136Actions) (provider.Provider, error) {
|
func NewRfc2136Provider(hosts []string, port int, zoneNames []string, insecure bool, keyName string, secret string, secretAlg string, axfr bool, domainFilter *endpoint.DomainFilter, dryRun bool, minTTL time.Duration, createPTR bool, gssTsig bool, krb5Username string, krb5Password string, krb5Realm string, batchChangeSize int, tlsConfig TLSConfig, loadBalancingStrategy string, actions rfc2136Actions) (provider.Provider, error) {
|
||||||
secretAlgChecked, ok := tsigAlgs[secretAlg]
|
secretAlgChecked, ok := tsigAlgs[secretAlg]
|
||||||
if !ok && !insecure && !gssTsig {
|
if !ok && !insecure && !gssTsig {
|
||||||
return nil, fmt.Errorf("%s is not supported TSIG algorithm", secretAlg)
|
return nil, fmt.Errorf("%s is not supported TSIG algorithm", secretAlg)
|
||||||
|
@ -186,7 +186,7 @@ func createRfc2136StubProvider(stub *rfc2136Stub, zoneNames ...string) (provider
|
|||||||
ClientCertFilePath: "",
|
ClientCertFilePath: "",
|
||||||
ClientCertKeyFilePath: "",
|
ClientCertKeyFilePath: "",
|
||||||
}
|
}
|
||||||
return NewRfc2136Provider([]string{""}, 0, zoneNames, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{""}, 0, zoneNames, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136StubProviderWithHosts(stub *rfc2136Stub) (provider.Provider, error) {
|
func createRfc2136StubProviderWithHosts(stub *rfc2136Stub) (provider.Provider, error) {
|
||||||
@ -197,15 +197,15 @@ func createRfc2136StubProviderWithHosts(stub *rfc2136Stub) (provider.Provider, e
|
|||||||
ClientCertFilePath: "",
|
ClientCertFilePath: "",
|
||||||
ClientCertKeyFilePath: "",
|
ClientCertKeyFilePath: "",
|
||||||
}
|
}
|
||||||
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2", "rfc2136-host3"}, 0, nil, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2", "rfc2136-host3"}, 0, nil, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136TLSStubProvider(stub *rfc2136Stub, tlsConfig TLSConfig) (provider.Provider, error) {
|
func createRfc2136TLSStubProvider(stub *rfc2136Stub, tlsConfig TLSConfig) (provider.Provider, error) {
|
||||||
return NewRfc2136Provider([]string{"rfc2136-host"}, 0, nil, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{"rfc2136-host"}, 0, nil, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136TLSStubProviderWithHosts(stub *rfc2136Stub, tlsConfig TLSConfig) (provider.Provider, error) {
|
func createRfc2136TLSStubProviderWithHosts(stub *rfc2136Stub, tlsConfig TLSConfig) (provider.Provider, error) {
|
||||||
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2"}, 0, nil, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2"}, 0, nil, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136StubProviderWithReverse(stub *rfc2136Stub) (provider.Provider, error) {
|
func createRfc2136StubProviderWithReverse(stub *rfc2136Stub) (provider.Provider, error) {
|
||||||
@ -218,7 +218,7 @@ func createRfc2136StubProviderWithReverse(stub *rfc2136Stub) (provider.Provider,
|
|||||||
}
|
}
|
||||||
|
|
||||||
zones := []string{"foo.com", "3.2.1.in-addr.arpa"}
|
zones := []string{"foo.com", "3.2.1.in-addr.arpa"}
|
||||||
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{Filters: zones}, false, 300*time.Second, true, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, endpoint.NewDomainFilter(zones), false, 300*time.Second, true, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136StubProviderWithZones(stub *rfc2136Stub) (provider.Provider, error) {
|
func createRfc2136StubProviderWithZones(stub *rfc2136Stub) (provider.Provider, error) {
|
||||||
@ -230,7 +230,7 @@ func createRfc2136StubProviderWithZones(stub *rfc2136Stub) (provider.Provider, e
|
|||||||
ClientCertKeyFilePath: "",
|
ClientCertKeyFilePath: "",
|
||||||
}
|
}
|
||||||
zones := []string{"foo.com", "foobar.com"}
|
zones := []string{"foo.com", "foobar.com"}
|
||||||
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136StubProviderWithZonesFilters(stub *rfc2136Stub) (provider.Provider, error) {
|
func createRfc2136StubProviderWithZonesFilters(stub *rfc2136Stub) (provider.Provider, error) {
|
||||||
@ -242,7 +242,7 @@ func createRfc2136StubProviderWithZonesFilters(stub *rfc2136Stub) (provider.Prov
|
|||||||
ClientCertKeyFilePath: "",
|
ClientCertKeyFilePath: "",
|
||||||
}
|
}
|
||||||
zones := []string{"foo.com", "foobar.com"}
|
zones := []string{"foo.com", "foobar.com"}
|
||||||
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{Filters: zones}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
return NewRfc2136Provider([]string{""}, 0, zones, false, "key", "secret", "hmac-sha512", true, endpoint.NewDomainFilter(zones), false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, "", stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRfc2136StubProviderWithStrategy(stub *rfc2136Stub, strategy string) (provider.Provider, error) {
|
func createRfc2136StubProviderWithStrategy(stub *rfc2136Stub, strategy string) (provider.Provider, error) {
|
||||||
@ -253,7 +253,7 @@ func createRfc2136StubProviderWithStrategy(stub *rfc2136Stub, strategy string) (
|
|||||||
ClientCertFilePath: "",
|
ClientCertFilePath: "",
|
||||||
ClientCertKeyFilePath: "",
|
ClientCertKeyFilePath: "",
|
||||||
}
|
}
|
||||||
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2", "rfc2136-host3"}, 0, nil, false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, strategy, stub)
|
return NewRfc2136Provider([]string{"rfc2136-host1", "rfc2136-host2", "rfc2136-host3"}, 0, nil, false, "key", "secret", "hmac-sha512", true, &endpoint.DomainFilter{}, false, 300*time.Second, false, false, "", "", "", 50, tlsConfig, strategy, stub)
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractUpdateSectionFromMessage(msg fmt.Stringer) []string {
|
func extractUpdateSectionFromMessage(msg fmt.Stringer) []string {
|
||||||
|
@ -45,7 +45,7 @@ type ScalewayProvider struct {
|
|||||||
domainAPI DomainAPI
|
domainAPI DomainAPI
|
||||||
dryRun bool
|
dryRun bool
|
||||||
// only consider hosted zones managing domains ending in this suffix
|
// only consider hosted zones managing domains ending in this suffix
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
// ScalewayChange differentiates between ChangActions
|
// ScalewayChange differentiates between ChangActions
|
||||||
@ -55,7 +55,7 @@ type ScalewayChange struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewScalewayProvider initializes a new Scaleway DNS provider
|
// NewScalewayProvider initializes a new Scaleway DNS provider
|
||||||
func NewScalewayProvider(ctx context.Context, domainFilter endpoint.DomainFilter, dryRun bool) (*ScalewayProvider, error) {
|
func NewScalewayProvider(ctx context.Context, domainFilter *endpoint.DomainFilter, dryRun bool) (*ScalewayProvider, error) {
|
||||||
var err error
|
var err error
|
||||||
defaultPageSize := uint64(1000)
|
defaultPageSize := uint64(1000)
|
||||||
if envPageSize, ok := os.LookupEnv("SCW_DEFAULT_PAGE_SIZE"); ok {
|
if envPageSize, ok := os.LookupEnv("SCW_DEFAULT_PAGE_SIZE"); ok {
|
||||||
|
@ -41,14 +41,14 @@ const (
|
|||||||
type TransIPProvider struct {
|
type TransIPProvider struct {
|
||||||
provider.BaseProvider
|
provider.BaseProvider
|
||||||
domainRepo domain.Repository
|
domainRepo domain.Repository
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
dryRun bool
|
dryRun bool
|
||||||
|
|
||||||
zoneMap provider.ZoneIDName
|
zoneMap provider.ZoneIDName
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTransIPProvider initializes a new TransIP Provider.
|
// NewTransIPProvider initializes a new TransIP Provider.
|
||||||
func NewTransIPProvider(accountName, privateKeyFile string, domainFilter endpoint.DomainFilter, dryRun bool) (*TransIPProvider, error) {
|
func NewTransIPProvider(accountName, privateKeyFile string, domainFilter *endpoint.DomainFilter, dryRun bool) (*TransIPProvider, error) {
|
||||||
// check given arguments
|
// check given arguments
|
||||||
if accountName == "" {
|
if accountName == "" {
|
||||||
return nil, errors.New("required --transip-account not set")
|
return nil, errors.New("required --transip-account not set")
|
||||||
|
@ -39,7 +39,7 @@ var records []*endpoint.Endpoint
|
|||||||
|
|
||||||
type FakeWebhookProvider struct {
|
type FakeWebhookProvider struct {
|
||||||
err error
|
err error
|
||||||
domainFilter endpoint.DomainFilter
|
domainFilter *endpoint.DomainFilter
|
||||||
assertChanges func(*plan.Changes)
|
assertChanges func(*plan.Changes)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,7 +334,7 @@ func TestNegotiateHandler_Success(t *testing.T) {
|
|||||||
require.Equal(t, http.StatusOK, res.StatusCode)
|
require.Equal(t, http.StatusOK, res.StatusCode)
|
||||||
require.Equal(t, MediaTypeFormatAndVersion, res.Header.Get(ContentTypeHeader))
|
require.Equal(t, MediaTypeFormatAndVersion, res.Header.Get(ContentTypeHeader))
|
||||||
|
|
||||||
var df endpoint.DomainFilter
|
df := &endpoint.DomainFilter{}
|
||||||
body, err := io.ReadAll(res.Body)
|
body, err := io.ReadAll(res.Body)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, df.UnmarshalJSON(body))
|
require.NoError(t, df.UnmarshalJSON(body))
|
||||||
|
@ -94,7 +94,7 @@ var (
|
|||||||
type WebhookProvider struct {
|
type WebhookProvider struct {
|
||||||
client *http.Client
|
client *http.Client
|
||||||
remoteServerURL *url.URL
|
remoteServerURL *url.URL
|
||||||
DomainFilter endpoint.DomainFilter
|
DomainFilter *endpoint.DomainFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -132,8 +132,8 @@ func NewWebhookProvider(u string) (*WebhookProvider, error) {
|
|||||||
return nil, fmt.Errorf("wrong content type returned from server: %s", ct)
|
return nil, fmt.Errorf("wrong content type returned from server: %s", ct)
|
||||||
}
|
}
|
||||||
|
|
||||||
df := endpoint.DomainFilter{}
|
df := &endpoint.DomainFilter{}
|
||||||
if err := json.NewDecoder(resp.Body).Decode(&df); err != nil {
|
if err := json.NewDecoder(resp.Body).Decode(df); err != nil {
|
||||||
return nil, fmt.Errorf("failed to unmarshal response body of DomainFilter: %w", err)
|
return nil, fmt.Errorf("failed to unmarshal response body of DomainFilter: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user