diff --git a/controller/controller.go b/controller/controller.go index 4502776b7..41976c5f1 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -215,12 +215,13 @@ func (c *Controller) RunOnce(ctx context.Context) error { verifiedARecords.Set(float64(vARecords)) verifiedAAAARecords.Set(float64(vAAAARecords)) endpoints = c.Registry.AdjustEndpoints(endpoints) + registryFilter := c.Registry.GetDomainFilter() plan := &plan.Plan{ Policies: []plan.Policy{c.Policy}, Current: records, Desired: endpoints, - DomainFilter: endpoint.MatchAllDomainFilters{c.DomainFilter, c.Registry.GetDomainFilter()}, + DomainFilter: endpoint.MatchAllDomainFilters{&c.DomainFilter, ®istryFilter}, ManagedRecords: c.ManagedRecordTypes, } diff --git a/endpoint/domain_filter.go b/endpoint/domain_filter.go index 7bfe1b3e6..a41dbd0d3 100644 --- a/endpoint/domain_filter.go +++ b/endpoint/domain_filter.go @@ -25,12 +25,7 @@ import ( "strings" ) -// DomainFilterInterface defines the interface to select matching domains for a specific provider or runtime -type DomainFilterInterface interface { - Match(domain string) bool -} - -type MatchAllDomainFilters []DomainFilterInterface +type MatchAllDomainFilters []*DomainFilter func (f MatchAllDomainFilters) Match(domain string) bool { for _, filter := range f { diff --git a/plan/plan.go b/plan/plan.go index 5f9ef0cc5..4a8918d0c 100644 --- a/plan/plan.go +++ b/plan/plan.go @@ -43,7 +43,7 @@ type Plan struct { // Populated after calling Calculate() Changes *Changes // DomainFilter matches DNS names - DomainFilter endpoint.DomainFilterInterface + DomainFilter endpoint.MatchAllDomainFilters // DNS record types that will be considered for management ManagedRecords []string } @@ -232,7 +232,7 @@ func (p *Plan) shouldUpdateProviderSpecific(desired, current *endpoint.Endpoint) // Per RFC 1034, CNAME records conflict with all other records - it is the // only record with this property. The behavior of the planner may need to be // made more sophisticated to codify this. -func filterRecordsForPlan(records []*endpoint.Endpoint, domainFilter endpoint.DomainFilterInterface, managedRecords []string) []*endpoint.Endpoint { +func filterRecordsForPlan(records []*endpoint.Endpoint, domainFilter endpoint.MatchAllDomainFilters, managedRecords []string) []*endpoint.Endpoint { filtered := []*endpoint.Endpoint{} for _, record := range records { diff --git a/plan/plan_test.go b/plan/plan_test.go index e012aea52..92508353e 100644 --- a/plan/plan_test.go +++ b/plan/plan_test.go @@ -601,11 +601,12 @@ func (suite *PlanTestSuite) TestDomainFiltersInitial() { expectedUpdateNew := []*endpoint.Endpoint{} expectedDelete := []*endpoint.Endpoint{} + domainFilter := endpoint.NewDomainFilterWithExclusions([]string{"domain.tld"}, []string{"ex.domain.tld"}) p := &Plan{ Policies: []Policy{&SyncPolicy{}}, Current: current, Desired: desired, - DomainFilter: endpoint.NewDomainFilterWithExclusions([]string{"domain.tld"}, []string{"ex.domain.tld"}), + DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter}, ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME}, } @@ -624,11 +625,12 @@ func (suite *PlanTestSuite) TestDomainFiltersUpdate() { expectedUpdateNew := []*endpoint.Endpoint{} expectedDelete := []*endpoint.Endpoint{} + domainFilter := endpoint.NewDomainFilterWithExclusions([]string{"domain.tld"}, []string{"ex.domain.tld"}) p := &Plan{ Policies: []Policy{&SyncPolicy{}}, Current: current, Desired: desired, - DomainFilter: endpoint.NewDomainFilterWithExclusions([]string{"domain.tld"}, []string{"ex.domain.tld"}), + DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter}, ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME}, } diff --git a/provider/cloudflare/cloudflare_test.go b/provider/cloudflare/cloudflare_test.go index f29a6cd8d..41453f29b 100644 --- a/provider/cloudflare/cloudflare_test.go +++ b/provider/cloudflare/cloudflare_test.go @@ -303,11 +303,11 @@ func AssertActions(t *testing.T, provider *CloudFlareProvider, endpoints []*endp } endpoints = provider.AdjustEndpoints(endpoints) - + domainFilter := endpoint.NewDomainFilter([]string{"bar.com"}) plan := &plan.Plan{ Current: records, Desired: endpoints, - DomainFilter: endpoint.NewDomainFilter([]string{"bar.com"}), + DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter}, ManagedRecords: managedRecords, } @@ -1189,6 +1189,7 @@ func TestCloudflareComplexUpdate(t *testing.T) { t.Errorf("should not fail, %s", err) } + domainFilter := endpoint.NewDomainFilter([]string{"bar.com"}) plan := &plan.Plan{ Current: records, Desired: provider.AdjustEndpoints([]*endpoint.Endpoint{ @@ -1206,7 +1207,7 @@ func TestCloudflareComplexUpdate(t *testing.T) { }, }, }), - DomainFilter: endpoint.NewDomainFilter([]string{"bar.com"}), + DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter}, ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME}, } @@ -1292,10 +1293,11 @@ func TestCustomTTLWithEnabledProxyNotChanged(t *testing.T) { provider.AdjustEndpoints(endpoints) + domainFilter := endpoint.NewDomainFilter([]string{"bar.com"}) plan := &plan.Plan{ Current: records, Desired: endpoints, - DomainFilter: endpoint.NewDomainFilter([]string{"bar.com"}), + DomainFilter: endpoint.MatchAllDomainFilters{&domainFilter}, ManagedRecords: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME}, }