mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 17:46:57 +02:00
pdns: also match parent zones when partitioning zones
This commit is contained in:
parent
fc37ff0f2c
commit
e32daefbbc
@ -166,7 +166,7 @@ func (c *PDNSAPIClient) ListZones() (zones []pgo.Zone, resp *http.Response, err
|
|||||||
func (c *PDNSAPIClient) PartitionZones(zones []pgo.Zone) (filteredZones []pgo.Zone, residualZones []pgo.Zone) {
|
func (c *PDNSAPIClient) PartitionZones(zones []pgo.Zone) (filteredZones []pgo.Zone, residualZones []pgo.Zone) {
|
||||||
if c.domainFilter.IsConfigured() {
|
if c.domainFilter.IsConfigured() {
|
||||||
for _, zone := range zones {
|
for _, zone := range zones {
|
||||||
if c.domainFilter.Match(zone.Name) {
|
if c.domainFilter.Match(zone.Name) || c.domainFilter.MatchParent(zone.Name) {
|
||||||
filteredZones = append(filteredZones, zone)
|
filteredZones = append(filteredZones, zone)
|
||||||
} else {
|
} else {
|
||||||
residualZones = append(residualZones, zone)
|
residualZones = append(residualZones, zone)
|
||||||
|
@ -478,6 +478,12 @@ var (
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DomainFilterChildListSingle = endpoint.DomainFilter{
|
||||||
|
Filters: []string{
|
||||||
|
"a.example.com",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
DomainFilterListMultiple = endpoint.DomainFilter{
|
DomainFilterListMultiple = endpoint.DomainFilter{
|
||||||
Filters: []string{
|
Filters: []string{
|
||||||
"example.com",
|
"example.com",
|
||||||
@ -485,6 +491,13 @@ var (
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DomainFilterChildListMultiple = endpoint.DomainFilter{
|
||||||
|
Filters: []string{
|
||||||
|
"a.example.com",
|
||||||
|
"c.example.com",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
DomainFilterListEmpty = endpoint.DomainFilter{
|
DomainFilterListEmpty = endpoint.DomainFilter{
|
||||||
Filters: []string{},
|
Filters: []string{},
|
||||||
}
|
}
|
||||||
@ -503,12 +516,26 @@ var (
|
|||||||
domainFilter: DomainFilterListSingle,
|
domainFilter: DomainFilterListSingle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DomainFilterChildSingleClient = &PDNSAPIClient{
|
||||||
|
dryRun: false,
|
||||||
|
authCtx: context.WithValue(context.Background(), pgo.ContextAPIKey, pgo.APIKey{Key: "TEST-API-KEY"}),
|
||||||
|
client: pgo.NewAPIClient(pgo.NewConfiguration()),
|
||||||
|
domainFilter: DomainFilterChildListSingle,
|
||||||
|
}
|
||||||
|
|
||||||
DomainFilterMultipleClient = &PDNSAPIClient{
|
DomainFilterMultipleClient = &PDNSAPIClient{
|
||||||
dryRun: false,
|
dryRun: false,
|
||||||
authCtx: context.WithValue(context.Background(), pgo.ContextAPIKey, pgo.APIKey{Key: "TEST-API-KEY"}),
|
authCtx: context.WithValue(context.Background(), pgo.ContextAPIKey, pgo.APIKey{Key: "TEST-API-KEY"}),
|
||||||
client: pgo.NewAPIClient(pgo.NewConfiguration()),
|
client: pgo.NewAPIClient(pgo.NewConfiguration()),
|
||||||
domainFilter: DomainFilterListMultiple,
|
domainFilter: DomainFilterListMultiple,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DomainFilterChildMultipleClient = &PDNSAPIClient{
|
||||||
|
dryRun: false,
|
||||||
|
authCtx: context.WithValue(context.Background(), pgo.ContextAPIKey, pgo.APIKey{Key: "TEST-API-KEY"}),
|
||||||
|
client: pgo.NewAPIClient(pgo.NewConfiguration()),
|
||||||
|
domainFilter: DomainFilterChildListMultiple,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
@ -1015,6 +1042,16 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSClientPartitionZones() {
|
|||||||
filteredZones, residualZones = DomainFilterMultipleClient.PartitionZones(zoneList)
|
filteredZones, residualZones = DomainFilterMultipleClient.PartitionZones(zoneList)
|
||||||
assert.Equal(suite.T(), partitionResultFilteredMultipleFilter, filteredZones)
|
assert.Equal(suite.T(), partitionResultFilteredMultipleFilter, filteredZones)
|
||||||
assert.Equal(suite.T(), partitionResultResidualMultipleFilter, residualZones)
|
assert.Equal(suite.T(), partitionResultResidualMultipleFilter, residualZones)
|
||||||
|
|
||||||
|
// Check filtered, residual zones when a single child domain filter specified
|
||||||
|
filteredZones, residualZones = DomainFilterChildSingleClient.PartitionZones(zoneList)
|
||||||
|
assert.Equal(suite.T(), partitionResultFilteredSingleFilter, filteredZones)
|
||||||
|
assert.Equal(suite.T(), partitionResultResidualSingleFilter, residualZones)
|
||||||
|
|
||||||
|
// Check filter, residual zones when multiple child domain filters specified
|
||||||
|
filteredZones, residualZones = DomainFilterChildMultipleClient.PartitionZones(zoneList)
|
||||||
|
assert.Equal(suite.T(), partitionResultFilteredMultipleFilter, filteredZones)
|
||||||
|
assert.Equal(suite.T(), partitionResultResidualMultipleFilter, residualZones)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNewPDNSProviderTestSuite(t *testing.T) {
|
func TestNewPDNSProviderTestSuite(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user