Refactor Provider to require DomainFilter

This commit is contained in:
John Gardiner Myers 2023-06-19 20:17:23 -07:00
parent 930061a990
commit 43eea7fa9b
9 changed files with 14 additions and 14 deletions

View File

@ -175,7 +175,7 @@ type Controller struct {
// The interval between individual synchronizations // The interval between individual synchronizations
Interval time.Duration Interval time.Duration
// The DomainFilter defines which DNS records to keep or exclude // The DomainFilter defines which DNS records to keep or exclude
DomainFilter endpoint.DomainFilterInterface DomainFilter endpoint.DomainFilter
// The nextRunAt used for throttling and batching reconciliation // The nextRunAt used for throttling and batching reconciliation
nextRunAt time.Time nextRunAt time.Time
// The nextRunAtMux is for atomic updating of nextRunAt // The nextRunAtMux is for atomic updating of nextRunAt

View File

@ -47,7 +47,7 @@ type mockProvider struct {
type filteredMockProvider struct { type filteredMockProvider struct {
provider.BaseProvider provider.BaseProvider
domainFilter endpoint.DomainFilterInterface domainFilter endpoint.DomainFilter
RecordsStore []*endpoint.Endpoint RecordsStore []*endpoint.Endpoint
RecordsCallCount int RecordsCallCount int
ApplyChangesCalls []*plan.Changes ApplyChangesCalls []*plan.Changes
@ -57,7 +57,7 @@ type errorMockProvider struct {
mockProvider mockProvider
} }
func (p *filteredMockProvider) GetDomainFilter() endpoint.DomainFilterInterface { func (p *filteredMockProvider) GetDomainFilter() endpoint.DomainFilter {
return p.domainFilter return p.domainFilter
} }
@ -279,7 +279,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.DomainFilterInterface, 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}
@ -353,7 +353,7 @@ func TestWhenNoFilterControllerConsidersAllComain(t *testing.T) {
Targets: endpoint.Targets{"8.8.8.8"}, Targets: endpoint.Targets{"8.8.8.8"},
}, },
}, },
nil, endpoint.DomainFilter{},
[]*endpoint.Endpoint{ []*endpoint.Endpoint{
{ {
DNSName: "some-record.used.tld", DNSName: "some-record.used.tld",

View File

@ -517,11 +517,11 @@ func (p *AWSProvider) createUpdateChanges(newEndpoints, oldEndpoints []*endpoint
} }
// GetDomainFilter generates a filter to exclude any domain that is not controlled by the provider // GetDomainFilter generates a filter to exclude any domain that is not controlled by the provider
func (p *AWSProvider) GetDomainFilter() endpoint.DomainFilterInterface { func (p *AWSProvider) GetDomainFilter() endpoint.DomainFilter {
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 {

View File

@ -319,7 +319,7 @@ func TestAWSRecordsFilter(t *testing.T) {
assert.NotNil(t, domainFilter) assert.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.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",

View File

@ -38,7 +38,7 @@ type Provider interface {
// unnecessary (potentially failing) changes. It may also modify other fields, add, or remove // unnecessary (potentially failing) changes. It may also modify other fields, add, or remove
// Endpoints. It is permitted to modify the supplied endpoints. // Endpoints. It is permitted to modify the supplied endpoints.
AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint
GetDomainFilter() endpoint.DomainFilterInterface GetDomainFilter() endpoint.DomainFilter
} }
type BaseProvider struct{} type BaseProvider struct{}
@ -51,7 +51,7 @@ func (b BaseProvider) PropertyValuesEqual(name, previous, current string) bool {
return previous == current return previous == current
} }
func (b BaseProvider) GetDomainFilter() endpoint.DomainFilterInterface { func (b BaseProvider) GetDomainFilter() endpoint.DomainFilter {
return endpoint.DomainFilter{} return endpoint.DomainFilter{}
} }

View File

@ -42,7 +42,7 @@ func NewAWSSDRegistry(provider provider.Provider, ownerID string) (*AWSSDRegistr
}, nil }, nil
} }
func (sdr *AWSSDRegistry) GetDomainFilter() endpoint.DomainFilterInterface { func (sdr *AWSSDRegistry) GetDomainFilter() endpoint.DomainFilter {
return sdr.provider.GetDomainFilter() return sdr.provider.GetDomainFilter()
} }

View File

@ -36,7 +36,7 @@ func NewNoopRegistry(provider provider.Provider) (*NoopRegistry, error) {
}, nil }, nil
} }
func (im *NoopRegistry) GetDomainFilter() endpoint.DomainFilterInterface { func (im *NoopRegistry) GetDomainFilter() endpoint.DomainFilter {
return im.provider.GetDomainFilter() return im.provider.GetDomainFilter()
} }

View File

@ -34,7 +34,7 @@ type Registry interface {
ApplyChanges(ctx context.Context, changes *plan.Changes) error ApplyChanges(ctx context.Context, changes *plan.Changes) error
PropertyValuesEqual(attribute string, previous string, current string) bool PropertyValuesEqual(attribute string, previous string, current string) bool
AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint
GetDomainFilter() endpoint.DomainFilterInterface GetDomainFilter() endpoint.DomainFilter
} }
// TODO(ideahitme): consider moving this to Plan // TODO(ideahitme): consider moving this to Plan

View File

@ -96,7 +96,7 @@ func getSupportedTypes() []string {
return []string{endpoint.RecordTypeA, endpoint.RecordTypeAAAA, endpoint.RecordTypeCNAME, endpoint.RecordTypeNS} return []string{endpoint.RecordTypeA, endpoint.RecordTypeAAAA, endpoint.RecordTypeCNAME, endpoint.RecordTypeNS}
} }
func (im *TXTRegistry) GetDomainFilter() endpoint.DomainFilterInterface { func (im *TXTRegistry) GetDomainFilter() endpoint.DomainFilter {
return im.provider.GetDomainFilter() return im.provider.GetDomainFilter()
} }