mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 17:46:57 +02:00
Refactor Provider to require DomainFilter
This commit is contained in:
parent
930061a990
commit
43eea7fa9b
@ -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
|
||||||
|
@ -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",
|
||||||
|
@ -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 {
|
||||||
|
@ -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",
|
||||||
|
@ -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{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user