Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
torgiren
External Dns
Commits
ec7c6ba4
Unverified
Commit
ec7c6ba4
authored
5 years ago
by
Kubernetes Prow Robot
Committed by
GitHub
5 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1442 from freenowtech/filter-record-creation
Change DomainFilter to apply to records as well
parents
1e7c6002
14d64e09
master
Raffo-patch-1
changelog-for-v0.7.3
correctly-update-aws-records-when-type-changes
dansimone/support-prefer-ingress-annotations
dependabot/go_modules/github.com/Azure/azure-sdk-for-go-61.4.0incompatible
dependabot/go_modules/github.com/aliyun/alibaba-cloud-sdk-go-1.61.1473
dependabot/go_modules/github.com/exoscale/egoscale-1.19.0
dependabot/go_modules/github.com/projectcontour/contour-1.20.0
dependabot/go_modules/k8s.io/apimachinery-0.23.3
fix-1820
gh-pages
infoblox-multiple-A-records-fix
njuettner/go_modules/github.com/akamai/AkamaiOPEN-edgegrid-golang-0.9.11
njuettner/go_modules/github.com/alecthomas/kingpin-2.2.6incompatible
njuettner/go_modules/github.com/digitalocean/godo-1.34.0
njuettner/go_modules/github.com/pkg/errors-0.9.1
njuettner/go_modules/github.com/prometheus/client_golang-1.5.1
normalize
raffo-fix-2348
raffo/add-dependabot
raffo/add-kustomize-base
raffo/add-trivy-scanning
raffo/arm
raffo/arm32v7
raffo/bump-ci-timeout
raffo/bump-cloudbuild-timeout
raffo/bump-deps-sec
raffo/bump-kustomize
raffo/bump-kustomize-1
raffo/bump-kustomize-version-0.7.5
raffo/bump-modules
raffo/codeQL
raffo/drop-the-changelog
raffo/e2e-aws
raffo/edit-infoblox-maintainers
raffo/fix-1820
raffo/fix-1936
raffo/fix-build
raffo/fix-dependabot
raffo/fix-ns-deletion
raffo/fix-scaleway-security
raffo/fix-that-typo
raffo/fix-trivy
raffo/fix-trivy-again
raffo/fix-vulnerabilities
raffo/goarm
raffo/gpr-docker-image
raffo/knolog
raffo/kustomize-endpoints
raffo/multiarch
raffo/multiarch-docs
raffo/new-ingress-resource
raffo/new-maintainers
raffo/provider-structure-refactor
raffo/release-conventions
raffo/release-note-patch
raffo/release-script
raffo/release-script-update
raffo/release-v0.7.2
raffo/remove-azure-test
raffo/remove-broken-link
raffo/remove-masters
raffo/revert-tzdata
raffo/split-sources
raffo/update-kustomize-080
raffo/update-v0.10-role
raffo/use-actions
raffo/v0.7.6
sagor999/infoblox-multiple-A-records
test-things
validate-txt-prefix
v1.0.0-mf
v0.10.2
v0.10.1
v0.10.0
v0.9.0
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
v0.7.2
v0.7.1
v0.7.0
external-dns-helm-chart-1.7.1
external-dns-helm-chart-1.7.0
external-dns-helm-chart-1.6.0
external-dns-helm-chart-1.5.0
external-dns-helm-chart-1.4.1
external-dns-helm-chart-1.4.0
external-dns-helm-chart-1.3.2
external-dns-helm-chart-1.3.1
external-dns-helm-chart-1.3.0
external-dns-helm-chart-1.2.0
No related merge requests found
Changes
51
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
controller/controller.go
+7
-3
controller/controller.go
endpoint/domain_filter.go
+8
-6
endpoint/domain_filter.go
endpoint/domain_filter_test.go
+1
-1
endpoint/domain_filter_test.go
main.go
+7
-5
main.go
plan/plan.go
+10
-3
plan/plan.go
plan/plan_test.go
+70
-0
plan/plan_test.go
provider/akamai.go
+2
-2
provider/akamai.go
provider/akamai_test.go
+5
-5
provider/akamai_test.go
provider/alibaba_cloud.go
+5
-5
provider/alibaba_cloud.go
provider/alibaba_cloud_test.go
+2
-1
provider/alibaba_cloud_test.go
provider/aws.go
+2
-2
provider/aws.go
provider/aws_sd.go
+2
-2
provider/aws_sd.go
provider/aws_sd_test.go
+14
-14
provider/aws_sd_test.go
provider/aws_test.go
+13
-13
provider/aws_test.go
provider/azure.go
+2
-2
provider/azure.go
provider/azure_private_dns.go
+2
-2
provider/azure_private_dns.go
provider/azure_privatedns_test.go
+5
-5
provider/azure_privatedns_test.go
provider/azure_test.go
+5
-5
provider/azure_test.go
provider/cloudflare.go
+2
-2
provider/cloudflare.go
provider/cloudflare_test.go
+4
-4
provider/cloudflare_test.go
with
168 additions
and
82 deletions
+168
-82
controller/controller.go
+
7
-
3
View file @
ec7c6ba4
...
...
@@ -23,6 +23,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
log
"github.com/sirupsen/logrus"
"sigs.k8s.io/external-dns/endpoint"
"sigs.k8s.io/external-dns/plan"
"sigs.k8s.io/external-dns/provider"
"sigs.k8s.io/external-dns/registry"
...
...
@@ -100,6 +101,8 @@ type Controller struct {
Policy
plan
.
Policy
// The interval between individual synchronizations
Interval
time
.
Duration
// The DomainFilter defines which DNS records to keep or exclude
DomainFilter
endpoint
.
DomainFilter
}
// RunOnce runs a single iteration of a reconciliation loop.
...
...
@@ -123,9 +126,10 @@ func (c *Controller) RunOnce(ctx context.Context) error {
sourceEndpointsTotal
.
Set
(
float64
(
len
(
endpoints
)))
plan
:=
&
plan
.
Plan
{
Policies
:
[]
plan
.
Policy
{
c
.
Policy
},
Current
:
records
,
Desired
:
endpoints
,
Policies
:
[]
plan
.
Policy
{
c
.
Policy
},
Current
:
records
,
Desired
:
endpoints
,
DomainFilter
:
c
.
DomainFilter
,
}
plan
=
plan
.
Calculate
()
...
...
This diff is collapsed.
Click to expand it.
provider
/domain_filter.go
→
endpoint
/domain_filter.go
+
8
-
6
View file @
ec7c6ba4
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
provider
package
endpoint
import
(
"strings"
...
...
@@ -22,7 +22,9 @@ import (
// DomainFilter holds a lists of valid domain names
type
DomainFilter
struct
{
filters
[]
string
// Filters define what domains to match
Filters
[]
string
// exclude define what domains not to match
exclude
[]
string
}
...
...
@@ -47,7 +49,7 @@ func NewDomainFilter(domainFilters []string) DomainFilter {
// Match checks whether a domain can be found in the DomainFilter.
func
(
df
DomainFilter
)
Match
(
domain
string
)
bool
{
return
matchFilter
(
df
.
f
ilters
,
domain
,
true
)
&&
!
matchFilter
(
df
.
exclude
,
domain
,
false
)
return
matchFilter
(
df
.
F
ilters
,
domain
,
true
)
&&
!
matchFilter
(
df
.
exclude
,
domain
,
false
)
}
// matchFilter determines if any `filters` match `domain`.
...
...
@@ -78,8 +80,8 @@ func matchFilter(filters []string, domain string, emptyval bool) bool {
// IsConfigured returns true if DomainFilter is configured, false otherwise
func
(
df
DomainFilter
)
IsConfigured
()
bool
{
if
len
(
df
.
f
ilters
)
==
1
{
return
df
.
f
ilters
[
0
]
!=
""
if
len
(
df
.
F
ilters
)
==
1
{
return
df
.
F
ilters
[
0
]
!=
""
}
return
len
(
df
.
f
ilters
)
>
0
return
len
(
df
.
F
ilters
)
>
0
}
This diff is collapsed.
Click to expand it.
provider
/domain_filter_test.go
→
endpoint
/domain_filter_test.go
+
1
-
1
View file @
ec7c6ba4
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
provider
package
endpoint
import
(
"testing"
...
...
This diff is collapsed.
Click to expand it.
main.go
+
7
-
5
View file @
ec7c6ba4
...
...
@@ -30,6 +30,7 @@ import (
_
"k8s.io/client-go/plugin/pkg/client/auth"
"sigs.k8s.io/external-dns/controller"
"sigs.k8s.io/external-dns/endpoint"
"sigs.k8s.io/external-dns/pkg/apis/externaldns"
"sigs.k8s.io/external-dns/pkg/apis/externaldns/validation"
"sigs.k8s.io/external-dns/plan"
...
...
@@ -114,7 +115,7 @@ func main() {
// Combine multiple sources into a single, deduplicated source.
endpointsSource
:=
source
.
NewDedupSource
(
source
.
NewMultiSource
(
sources
))
domainFilter
:=
provider
.
NewDomainFilterWithExclusions
(
cfg
.
DomainFilter
,
cfg
.
ExcludeDomains
)
domainFilter
:=
endpoint
.
NewDomainFilterWithExclusions
(
cfg
.
DomainFilter
,
cfg
.
ExcludeDomains
)
zoneIDFilter
:=
provider
.
NewZoneIDFilter
(
cfg
.
ZoneIDFilter
)
zoneTypeFilter
:=
provider
.
NewZoneTypeFilter
(
cfg
.
AWSZoneType
)
zoneTagFilter
:=
provider
.
NewZoneTagFilter
(
cfg
.
AWSZoneTagFilter
)
...
...
@@ -285,10 +286,11 @@ func main() {
}
ctrl
:=
controller
.
Controller
{
Source
:
endpointsSource
,
Registry
:
r
,
Policy
:
policy
,
Interval
:
cfg
.
Interval
,
Source
:
endpointsSource
,
Registry
:
r
,
Policy
:
policy
,
Interval
:
cfg
.
Interval
,
DomainFilter
:
domainFilter
,
}
if
cfg
.
UpdateEvents
{
...
...
This diff is collapsed.
Click to expand it.
plan/plan.go
+
10
-
3
View file @
ec7c6ba4
...
...
@@ -35,6 +35,8 @@ type Plan struct {
// List of changes necessary to move towards desired state
// Populated after calling Calculate()
Changes
*
Changes
// DomainFilter matches DNS names
DomainFilter
endpoint
.
DomainFilter
}
// Changes holds lists of actions to be executed by dns providers
...
...
@@ -111,10 +113,10 @@ func (t planTable) addCandidate(e *endpoint.Endpoint) {
func
(
p
*
Plan
)
Calculate
()
*
Plan
{
t
:=
newPlanTable
()
for
_
,
current
:=
range
filterRecordsForPlan
(
p
.
Current
)
{
for
_
,
current
:=
range
filterRecordsForPlan
(
p
.
Current
,
p
.
DomainFilter
)
{
t
.
addCurrent
(
current
)
}
for
_
,
desired
:=
range
filterRecordsForPlan
(
p
.
Desired
)
{
for
_
,
desired
:=
range
filterRecordsForPlan
(
p
.
Desired
,
p
.
DomainFilter
)
{
t
.
addCandidate
(
desired
)
}
...
...
@@ -227,10 +229,15 @@ func shouldUpdateProviderSpecific(desired, current *endpoint.Endpoint) bool {
// 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
)
[]
*
endpoint
.
Endpoint
{
func
filterRecordsForPlan
(
records
[]
*
endpoint
.
Endpoint
,
domainFilter
endpoint
.
DomainFilter
)
[]
*
endpoint
.
Endpoint
{
filtered
:=
[]
*
endpoint
.
Endpoint
{}
for
_
,
record
:=
range
records
{
// Ignore records that do not match the domain filter provided
if
!
domainFilter
.
Match
(
record
.
DNSName
)
{
continue
}
// Explicitly specify which records we want to use for planning.
// TODO: Add AAAA records as well when they are supported.
switch
record
.
RecordType
{
...
...
This diff is collapsed.
Click to expand it.
plan/plan_test.go
+
70
-
0
View file @
ec7c6ba4
...
...
@@ -42,6 +42,10 @@ type PlanTestSuite struct {
multiple1
*
endpoint
.
Endpoint
multiple2
*
endpoint
.
Endpoint
multiple3
*
endpoint
.
Endpoint
domainFilterFiltered1
*
endpoint
.
Endpoint
domainFilterFiltered2
*
endpoint
.
Endpoint
domainFilterFiltered3
*
endpoint
.
Endpoint
domainFilterExcluded
*
endpoint
.
Endpoint
}
func
(
suite
*
PlanTestSuite
)
SetupTest
()
{
...
...
@@ -160,6 +164,26 @@ func (suite *PlanTestSuite) SetupTest() {
RecordType
:
"A"
,
SetIdentifier
:
"test-set-2"
,
}
suite
.
domainFilterFiltered1
=
&
endpoint
.
Endpoint
{
DNSName
:
"foo.domain.tld"
,
Targets
:
endpoint
.
Targets
{
"1.2.3.4"
},
RecordType
:
"A"
,
}
suite
.
domainFilterFiltered2
=
&
endpoint
.
Endpoint
{
DNSName
:
"bar.domain.tld"
,
Targets
:
endpoint
.
Targets
{
"1.2.3.5"
},
RecordType
:
"A"
,
}
suite
.
domainFilterFiltered3
=
&
endpoint
.
Endpoint
{
DNSName
:
"baz.domain.tld"
,
Targets
:
endpoint
.
Targets
{
"1.2.3.6"
},
RecordType
:
"A"
,
}
suite
.
domainFilterExcluded
=
&
endpoint
.
Endpoint
{
DNSName
:
"foo.ex.domain.tld"
,
Targets
:
endpoint
.
Targets
{
"1.1.1.1"
},
RecordType
:
"A"
,
}
}
func
(
suite
*
PlanTestSuite
)
TestSyncFirstRound
()
{
...
...
@@ -492,6 +516,52 @@ func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() {
validateEntries
(
suite
.
T
(),
changes
.
Delete
,
expectedDelete
)
}
func
(
suite
*
PlanTestSuite
)
TestDomainFiltersInitial
()
{
current
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterExcluded
}
desired
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterExcluded
,
suite
.
domainFilterFiltered1
,
suite
.
domainFilterFiltered2
,
suite
.
domainFilterFiltered3
}
expectedCreate
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterFiltered1
,
suite
.
domainFilterFiltered2
,
suite
.
domainFilterFiltered3
}
expectedUpdateOld
:=
[]
*
endpoint
.
Endpoint
{}
expectedUpdateNew
:=
[]
*
endpoint
.
Endpoint
{}
expectedDelete
:=
[]
*
endpoint
.
Endpoint
{}
p
:=
&
Plan
{
Policies
:
[]
Policy
{
&
SyncPolicy
{}},
Current
:
current
,
Desired
:
desired
,
DomainFilter
:
endpoint
.
NewDomainFilterWithExclusions
([]
string
{
"domain.tld"
},
[]
string
{
"ex.domain.tld"
}),
}
changes
:=
p
.
Calculate
()
.
Changes
validateEntries
(
suite
.
T
(),
changes
.
Create
,
expectedCreate
)
validateEntries
(
suite
.
T
(),
changes
.
UpdateNew
,
expectedUpdateNew
)
validateEntries
(
suite
.
T
(),
changes
.
UpdateOld
,
expectedUpdateOld
)
validateEntries
(
suite
.
T
(),
changes
.
Delete
,
expectedDelete
)
}
func
(
suite
*
PlanTestSuite
)
TestDomainFiltersUpdate
()
{
current
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterExcluded
,
suite
.
domainFilterFiltered1
,
suite
.
domainFilterFiltered2
}
desired
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterExcluded
,
suite
.
domainFilterFiltered1
,
suite
.
domainFilterFiltered2
,
suite
.
domainFilterFiltered3
}
expectedCreate
:=
[]
*
endpoint
.
Endpoint
{
suite
.
domainFilterFiltered3
}
expectedUpdateOld
:=
[]
*
endpoint
.
Endpoint
{}
expectedUpdateNew
:=
[]
*
endpoint
.
Endpoint
{}
expectedDelete
:=
[]
*
endpoint
.
Endpoint
{}
p
:=
&
Plan
{
Policies
:
[]
Policy
{
&
SyncPolicy
{}},
Current
:
current
,
Desired
:
desired
,
DomainFilter
:
endpoint
.
NewDomainFilterWithExclusions
([]
string
{
"domain.tld"
},
[]
string
{
"ex.domain.tld"
}),
}
changes
:=
p
.
Calculate
()
.
Changes
validateEntries
(
suite
.
T
(),
changes
.
Create
,
expectedCreate
)
validateEntries
(
suite
.
T
(),
changes
.
UpdateNew
,
expectedUpdateNew
)
validateEntries
(
suite
.
T
(),
changes
.
UpdateOld
,
expectedUpdateOld
)
validateEntries
(
suite
.
T
(),
changes
.
Delete
,
expectedDelete
)
}
func
TestPlan
(
t
*
testing
.
T
)
{
suite
.
Run
(
t
,
new
(
PlanTestSuite
))
}
...
...
This diff is collapsed.
Click to expand it.
provider/akamai.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -49,7 +49,7 @@ func (*akamaiOpenClient) Do(config edgegrid.Config, req *http.Request) (*http.Re
// AkamaiConfig clarifies the method signature
type
AkamaiConfig
struct
{
DomainFilter
DomainFilter
DomainFilter
endpoint
.
DomainFilter
ZoneIDFilter
ZoneIDFilter
ServiceConsumerDomain
string
ClientToken
string
...
...
@@ -60,7 +60,7 @@ type AkamaiConfig struct {
// AkamaiProvider implements the DNS provider for Akamai.
type
AkamaiProvider
struct
{
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
zoneIDFilter
ZoneIDFilter
config
edgegrid
.
Config
dryRun
bool
...
...
This diff is collapsed.
Click to expand it.
provider/akamai_test.go
+
5
-
5
View file @
ec7c6ba4
...
...
@@ -108,7 +108,7 @@ func TestFetchZonesZoneIDFilter(t *testing.T) {
func
TestFetchZonesEmpty
(
t
*
testing
.
T
)
{
config
:=
AkamaiConfig
{
DomainFilter
:
NewDomainFilter
([]
string
{
"Nonexistent"
}),
DomainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"Nonexistent"
}),
ZoneIDFilter
:
NewZoneIDFilter
([]
string
{
"Nonexistent"
}),
}
...
...
@@ -184,7 +184,7 @@ func TestAkamaiRecordsEmpty(t *testing.T) {
func
TestAkamaiRecordsFilters
(
t
*
testing
.
T
)
{
config
:=
AkamaiConfig
{
DomainFilter
:
NewDomainFilter
([]
string
{
"www.exclude.me"
}),
DomainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"www.exclude.me"
}),
ZoneIDFilter
:
NewZoneIDFilter
([]
string
{
"Exclude-Me"
}),
}
...
...
@@ -221,7 +221,7 @@ func TestCreateRecords(t *testing.T) {
func
TestCreateRecordsDomainFilter
(
t
*
testing
.
T
)
{
config
:=
AkamaiConfig
{
DomainFilter
:
NewDomainFilter
([]
string
{
"example.com"
}),
DomainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
}
client
:=
&
mockAkamaiClient
{}
...
...
@@ -260,7 +260,7 @@ func TestDeleteRecords(t *testing.T) {
func
TestDeleteRecordsDomainFilter
(
t
*
testing
.
T
)
{
config
:=
AkamaiConfig
{
DomainFilter
:
NewDomainFilter
([]
string
{
"example.com"
}),
DomainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
}
client
:=
&
mockAkamaiClient
{}
...
...
@@ -299,7 +299,7 @@ func TestUpdateRecords(t *testing.T) {
func
TestUpdateRecordsDomainFilter
(
t
*
testing
.
T
)
{
config
:=
AkamaiConfig
{
DomainFilter
:
NewDomainFilter
([]
string
{
"example.com"
}),
DomainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
}
client
:=
&
mockAkamaiClient
{}
...
...
This diff is collapsed.
Click to expand it.
provider/alibaba_cloud.go
+
5
-
5
View file @
ec7c6ba4
...
...
@@ -66,7 +66,7 @@ type AlibabaCloudPrivateZoneAPI interface {
// AlibabaCloudProvider implements the DNS provider for Alibaba Cloud.
type
AlibabaCloudProvider
struct
{
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
zoneIDFilter
ZoneIDFilter
// Private Zone only
MaxChangeCount
int
EvaluateTargetHealth
bool
...
...
@@ -93,7 +93,7 @@ type alibabaCloudConfig struct {
// NewAlibabaCloudProvider creates a new Alibaba Cloud provider.
//
// Returns the provider or an error if a provider could not be created.
func
NewAlibabaCloudProvider
(
configFile
string
,
domainFilter
DomainFilter
,
zoneIDFileter
ZoneIDFilter
,
zoneType
string
,
dryRun
bool
)
(
*
AlibabaCloudProvider
,
error
)
{
func
NewAlibabaCloudProvider
(
configFile
string
,
domainFilter
endpoint
.
DomainFilter
,
zoneIDFileter
ZoneIDFilter
,
zoneType
string
,
dryRun
bool
)
(
*
AlibabaCloudProvider
,
error
)
{
cfg
:=
alibabaCloudConfig
{}
if
configFile
!=
""
{
contents
,
err
:=
ioutil
.
ReadFile
(
configFile
)
...
...
@@ -382,7 +382,7 @@ func (p *AlibabaCloudProvider) records() ([]alidns.Record, error) {
log
.
Infof
(
"Retrieving Alibaba Cloud DNS Domain Records"
)
var
results
[]
alidns
.
Record
if
len
(
p
.
domainFilter
.
f
ilters
)
==
1
&&
p
.
domainFilter
.
f
ilters
[
0
]
==
""
{
if
len
(
p
.
domainFilter
.
F
ilters
)
==
1
&&
p
.
domainFilter
.
F
ilters
[
0
]
==
""
{
domainNames
,
tmpErr
:=
p
.
getDomainList
()
if
tmpErr
!=
nil
{
log
.
Errorf
(
"AlibabaCloudProvider getDomainList error %v"
,
tmpErr
)
...
...
@@ -397,7 +397,7 @@ func (p *AlibabaCloudProvider) records() ([]alidns.Record, error) {
results
=
append
(
results
,
tmpResults
...
)
}
}
else
{
for
_
,
domainName
:=
range
p
.
domainFilter
.
f
ilters
{
for
_
,
domainName
:=
range
p
.
domainFilter
.
F
ilters
{
tmpResults
,
err
:=
p
.
getDomainRecords
(
domainName
)
if
err
!=
nil
{
log
.
Errorf
(
"getDomainRecords %s error %v"
,
domainName
,
err
)
...
...
@@ -672,7 +672,7 @@ func (p *AlibabaCloudProvider) splitDNSName(endpoint *endpoint.Endpoint) (rr str
found
:=
false
for
_
,
filter
:=
range
p
.
domainFilter
.
f
ilters
{
for
_
,
filter
:=
range
p
.
domainFilter
.
F
ilters
{
if
strings
.
HasSuffix
(
name
,
"."
+
filter
)
{
rr
=
name
[
0
:
len
(
name
)
-
len
(
filter
)
-
1
]
domain
=
filter
...
...
This diff is collapsed.
Click to expand it.
provider/alibaba_cloud_test.go
+
2
-
1
View file @
ec7c6ba4
...
...
@@ -22,6 +22,7 @@ import (
"github.com/aliyun/alibaba-cloud-sdk-go/services/alidns"
"github.com/aliyun/alibaba-cloud-sdk-go/services/pvtz"
"sigs.k8s.io/external-dns/endpoint"
"sigs.k8s.io/external-dns/plan"
...
...
@@ -232,7 +233,7 @@ func newTestAlibabaCloudProvider(private bool) *AlibabaCloudProvider {
// cfg.AccessKeyID,
// cfg.AccessKeySecret,
//)
domainFilterTest
:=
NewDomainFilter
([]
string
{
"container-service.top."
,
"example.org"
})
domainFilterTest
:=
endpoint
.
NewDomainFilter
([]
string
{
"container-service.top."
,
"example.org"
})
return
&
AlibabaCloudProvider
{
domainFilter
:
domainFilterTest
,
...
...
This diff is collapsed.
Click to expand it.
provider/aws.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -117,7 +117,7 @@ type AWSProvider struct {
batchChangeInterval
time
.
Duration
evaluateTargetHealth
bool
// only consider hosted zones managing domains ending in this suffix
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
// filter hosted zones by id
zoneIDFilter
ZoneIDFilter
// filter hosted zones by type (e.g. private or public)
...
...
@@ -129,7 +129,7 @@ type AWSProvider struct {
// AWSConfig contains configuration to create a new AWS provider.
type
AWSConfig
struct
{
DomainFilter
DomainFilter
DomainFilter
endpoint
.
DomainFilter
ZoneIDFilter
ZoneIDFilter
ZoneTypeFilter
ZoneTypeFilter
ZoneTagFilter
ZoneTagFilter
...
...
This diff is collapsed.
Click to expand it.
provider/aws_sd.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -76,13 +76,13 @@ type AWSSDProvider struct {
client
AWSSDClient
dryRun
bool
// only consider namespaces ending in this suffix
namespaceFilter
DomainFilter
namespaceFilter
endpoint
.
DomainFilter
// filter namespace by type (private or public)
namespaceTypeFilter
*
sd
.
NamespaceFilter
}
// NewAWSSDProvider initializes a new AWS Cloud Map based Provider.
func
NewAWSSDProvider
(
domainFilter
DomainFilter
,
namespaceType
string
,
assumeRole
string
,
dryRun
bool
)
(
*
AWSSDProvider
,
error
)
{
func
NewAWSSDProvider
(
domainFilter
endpoint
.
DomainFilter
,
namespaceType
string
,
assumeRole
string
,
dryRun
bool
)
(
*
AWSSDProvider
,
error
)
{
config
:=
aws
.
NewConfig
()
config
=
config
.
WithHTTPClient
(
...
...
This diff is collapsed.
Click to expand it.
provider/aws_sd_test.go
+
14
-
14
View file @
ec7c6ba4
...
...
@@ -180,7 +180,7 @@ func (s *AWSSDClientStub) UpdateService(input *sd.UpdateServiceInput) (*sd.Updat
return
&
sd
.
UpdateServiceOutput
{},
nil
}
func
newTestAWSSDProvider
(
api
AWSSDClient
,
domainFilter
DomainFilter
,
namespaceTypeFilter
string
)
*
AWSSDProvider
{
func
newTestAWSSDProvider
(
api
AWSSDClient
,
domainFilter
endpoint
.
DomainFilter
,
namespaceTypeFilter
string
)
*
AWSSDProvider
{
return
&
AWSSDProvider
{
client
:
api
,
namespaceFilter
:
domainFilter
,
...
...
@@ -287,7 +287,7 @@ func TestAWSSDProvider_Records(t *testing.T) {
instances
:
instances
,
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
endpoints
,
_
:=
provider
.
Records
(
context
.
Background
())
...
...
@@ -315,7 +315,7 @@ func TestAWSSDProvider_ApplyChanges(t *testing.T) {
{
DNSName
:
"service3.private.com"
,
Targets
:
endpoint
.
Targets
{
"cname.target.com"
},
RecordType
:
endpoint
.
RecordTypeCNAME
,
RecordTTL
:
100
},
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
ctx
:=
context
.
Background
()
...
...
@@ -366,14 +366,14 @@ func TestAWSSDProvider_ListNamespaces(t *testing.T) {
for
_
,
tc
:=
range
[]
struct
{
msg
string
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
namespaceTypeFilter
string
expectedNamespaces
[]
*
sd
.
NamespaceSummary
}{
{
"public filter"
,
NewDomainFilter
([]
string
{}),
"public"
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"public"
])}},
{
"private filter"
,
NewDomainFilter
([]
string
{}),
"private"
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"private"
])}},
{
"domain filter"
,
NewDomainFilter
([]
string
{
"public.com"
}),
""
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"public"
])}},
{
"non-existing domain"
,
NewDomainFilter
([]
string
{
"xxx.com"
}),
""
,
[]
*
sd
.
NamespaceSummary
{}},
{
"public filter"
,
endpoint
.
NewDomainFilter
([]
string
{}),
"public"
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"public"
])}},
{
"private filter"
,
endpoint
.
NewDomainFilter
([]
string
{}),
"private"
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"private"
])}},
{
"domain filter"
,
endpoint
.
NewDomainFilter
([]
string
{
"public.com"
}),
""
,
[]
*
sd
.
NamespaceSummary
{
namespaceToNamespaceSummary
(
namespaces
[
"public"
])}},
{
"non-existing domain"
,
endpoint
.
NewDomainFilter
([]
string
{
"xxx.com"
}),
""
,
[]
*
sd
.
NamespaceSummary
{}},
}
{
provider
:=
newTestAWSSDProvider
(
api
,
tc
.
domainFilter
,
tc
.
namespaceTypeFilter
)
...
...
@@ -438,7 +438,7 @@ func TestAWSSDProvider_ListServicesByNamespace(t *testing.T) {
}{
{
map
[
string
]
*
sd
.
Service
{
"service1"
:
services
[
"private"
][
"srv1"
],
"service2"
:
services
[
"private"
][
"srv2"
]}},
}
{
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
result
,
err
:=
provider
.
ListServicesByNamespaceID
(
namespaces
[
"private"
]
.
Id
)
require
.
NoError
(
t
,
err
)
...
...
@@ -494,7 +494,7 @@ func TestAWSSDProvider_ListInstancesByService(t *testing.T) {
instances
:
instances
,
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
result
,
err
:=
provider
.
ListInstancesByServiceID
(
services
[
"private"
][
"srv1"
]
.
Id
)
require
.
NoError
(
t
,
err
)
...
...
@@ -531,7 +531,7 @@ func TestAWSSDProvider_CreateService(t *testing.T) {
expectedServices
:=
make
(
map
[
string
]
*
sd
.
Service
)
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
// A type
provider
.
CreateService
(
aws
.
String
(
"private"
),
aws
.
String
(
"A-srv"
),
&
endpoint
.
Endpoint
{
...
...
@@ -635,7 +635,7 @@ func TestAWSSDProvider_UpdateService(t *testing.T) {
services
:
services
,
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
// update service with different TTL
provider
.
UpdateService
(
services
[
"private"
][
"srv1"
],
&
endpoint
.
Endpoint
{
...
...
@@ -702,7 +702,7 @@ func TestAWSSDProvider_RegisterInstance(t *testing.T) {
instances
:
make
(
map
[
string
]
map
[
string
]
*
sd
.
Instance
),
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
expectedInstances
:=
make
(
map
[
string
]
*
sd
.
Instance
)
...
...
@@ -819,7 +819,7 @@ func TestAWSSDProvider_DeregisterInstance(t *testing.T) {
instances
:
instances
,
}
provider
:=
newTestAWSSDProvider
(
api
,
NewDomainFilter
([]
string
{}),
""
)
provider
:=
newTestAWSSDProvider
(
api
,
endpoint
.
NewDomainFilter
([]
string
{}),
""
)
provider
.
DeregisterInstance
(
services
[
"private"
][
"srv1"
],
endpoint
.
NewEndpoint
(
"srv1.private.com."
,
endpoint
.
RecordTypeA
,
"1.2.3.4"
))
...
...
This diff is collapsed.
Click to expand it.
provider/aws_test.go
+
13
-
13
View file @
ec7c6ba4
...
...
@@ -299,7 +299,7 @@ func TestAWSZones(t *testing.T) {
{
"zone id filter"
,
NewZoneIDFilter
([]
string
{
"/hostedzone/zone-3.ext-dns-test-2.teapot.zalan.do."
}),
NewZoneTypeFilter
(
""
),
NewZoneTagFilter
([]
string
{}),
privateZones
},
{
"tag filter"
,
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
NewZoneTagFilter
([]
string
{
"zone=3"
}),
privateZones
},
}
{
provider
,
_
:=
newAWSProviderWithTagFilter
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
ti
.
zoneIDFilter
,
ti
.
zoneTypeFilter
,
ti
.
zoneTagFilter
,
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
_
:=
newAWSProviderWithTagFilter
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
ti
.
zoneIDFilter
,
ti
.
zoneTypeFilter
,
ti
.
zoneTagFilter
,
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
zones
,
err
:=
provider
.
Zones
(
context
.
Background
())
require
.
NoError
(
t
,
err
)
...
...
@@ -309,7 +309,7 @@ func TestAWSZones(t *testing.T) {
}
func
TestAWSRecords
(
t
*
testing
.
T
)
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
false
,
false
,
[]
*
endpoint
.
Endpoint
{
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
false
,
false
,
[]
*
endpoint
.
Endpoint
{
endpoint
.
NewEndpointWithTTL
(
"list-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"1.2.3.4"
),
endpoint
.
NewEndpointWithTTL
(
"list-test.zone-2.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
),
endpoint
.
NewEndpointWithTTL
(
"*.wildcard-test.zone-2.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
),
...
...
@@ -351,7 +351,7 @@ func TestAWSRecords(t *testing.T) {
func
TestAWSCreateRecords
(
t
*
testing
.
T
)
{
customTTL
:=
endpoint
.
TTL
(
60
)
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
records
:=
[]
*
endpoint
.
Endpoint
{
endpoint
.
NewEndpoint
(
"create-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
"1.2.3.4"
),
...
...
@@ -376,7 +376,7 @@ func TestAWSCreateRecords(t *testing.T) {
}
func
TestAWSUpdateRecords
(
t
*
testing
.
T
)
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{
endpoint
.
NewEndpointWithTTL
(
"update-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
),
endpoint
.
NewEndpointWithTTL
(
"update-test.zone-2.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.4.4"
),
endpoint
.
NewEndpointWithTTL
(
"update-test-cname.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeCNAME
,
endpoint
.
TTL
(
recordTTL
),
"foo.elb.amazonaws.com"
),
...
...
@@ -419,7 +419,7 @@ func TestAWSDeleteRecords(t *testing.T) {
endpoint
.
NewEndpointWithTTL
(
"delete-test-multiple.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
,
"8.8.4.4"
),
}
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
false
,
false
,
originalEndpoints
)
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
false
,
false
,
originalEndpoints
)
require
.
NoError
(
t
,
provider
.
DeleteRecords
(
context
.
Background
(),
originalEndpoints
))
...
...
@@ -446,7 +446,7 @@ func TestAWSApplyChanges(t *testing.T) {
}
for
_
,
tt
:=
range
tests
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{
endpoint
.
NewEndpointWithTTL
(
"update-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
),
endpoint
.
NewEndpointWithTTL
(
"delete-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.8.8"
),
endpoint
.
NewEndpointWithTTL
(
"update-test.zone-2.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"8.8.4.4"
),
...
...
@@ -538,7 +538,7 @@ func TestAWSApplyChangesDryRun(t *testing.T) {
endpoint
.
NewEndpointWithTTL
(
"delete-test-multiple.zone-2.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
endpoint
.
TTL
(
recordTTL
),
"1.2.3.4"
,
"4.3.2.1"
),
}
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
true
,
originalEndpoints
)
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
true
,
originalEndpoints
)
createRecords
:=
[]
*
endpoint
.
Endpoint
{
endpoint
.
NewEndpoint
(
"create-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
endpoint
.
RecordTypeA
,
"8.8.8.8"
),
...
...
@@ -686,7 +686,7 @@ func TestAWSChangesByZones(t *testing.T) {
}
func
TestAWSsubmitChanges
(
t
*
testing
.
T
)
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
const
subnets
=
16
const
hosts
=
defaultBatchChangeSize
/
subnets
...
...
@@ -715,7 +715,7 @@ func TestAWSsubmitChanges(t *testing.T) {
}
func
TestAWSsubmitChangesError
(
t
*
testing
.
T
)
{
provider
,
clientStub
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
clientStub
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
clientStub
.
MockMethod
(
"ChangeResourceRecordSets"
,
mock
.
Anything
)
.
Return
(
nil
,
fmt
.
Errorf
(
"Mock route53 failure"
))
ctx
:=
context
.
Background
()
...
...
@@ -851,7 +851,7 @@ func validateAWSChangeRecord(t *testing.T, record *route53.Change, expected *rou
}
func
TestAWSCreateRecordsWithCNAME
(
t
*
testing
.
T
)
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
records
:=
[]
*
endpoint
.
Endpoint
{
{
DNSName
:
"create-test.zone-1.ext-dns-test-2.teapot.zalan.do"
,
Targets
:
endpoint
.
Targets
{
"foo.example.org"
},
RecordType
:
endpoint
.
RecordTypeCNAME
},
...
...
@@ -881,7 +881,7 @@ func TestAWSCreateRecordsWithALIAS(t *testing.T) {
"false"
:
false
,
""
:
false
,
}
{
provider
,
_
:=
newAWSProvider
(
t
,
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
provider
,
_
:=
newAWSProvider
(
t
,
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test-2.teapot.zalan.do."
}),
NewZoneIDFilter
([]
string
{}),
NewZoneTypeFilter
(
""
),
defaultEvaluateTargetHealth
,
false
,
[]
*
endpoint
.
Endpoint
{})
// Test dualstack and ipv4 load balancer targets
records
:=
[]
*
endpoint
.
Endpoint
{
...
...
@@ -1180,11 +1180,11 @@ func escapeAWSRecords(t *testing.T, provider *AWSProvider, zone string) {
require
.
NoError
(
t
,
err
)
}
}
func
newAWSProvider
(
t
*
testing
.
T
,
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zoneTypeFilter
ZoneTypeFilter
,
evaluateTargetHealth
,
dryRun
bool
,
records
[]
*
endpoint
.
Endpoint
)
(
*
AWSProvider
,
*
Route53APIStub
)
{
func
newAWSProvider
(
t
*
testing
.
T
,
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zoneTypeFilter
ZoneTypeFilter
,
evaluateTargetHealth
,
dryRun
bool
,
records
[]
*
endpoint
.
Endpoint
)
(
*
AWSProvider
,
*
Route53APIStub
)
{
return
newAWSProviderWithTagFilter
(
t
,
domainFilter
,
zoneIDFilter
,
zoneTypeFilter
,
NewZoneTagFilter
([]
string
{}),
evaluateTargetHealth
,
dryRun
,
records
)
}
func
newAWSProviderWithTagFilter
(
t
*
testing
.
T
,
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zoneTypeFilter
ZoneTypeFilter
,
zoneTagFilter
ZoneTagFilter
,
evaluateTargetHealth
,
dryRun
bool
,
records
[]
*
endpoint
.
Endpoint
)
(
*
AWSProvider
,
*
Route53APIStub
)
{
func
newAWSProviderWithTagFilter
(
t
*
testing
.
T
,
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zoneTypeFilter
ZoneTypeFilter
,
zoneTagFilter
ZoneTagFilter
,
evaluateTargetHealth
,
dryRun
bool
,
records
[]
*
endpoint
.
Endpoint
)
(
*
AWSProvider
,
*
Route53APIStub
)
{
client
:=
NewRoute53APIStub
()
provider
:=
&
AWSProvider
{
...
...
This diff is collapsed.
Click to expand it.
provider/azure.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -66,7 +66,7 @@ type RecordSetsClient interface {
// AzureProvider implements the DNS provider for Microsoft's Azure cloud platform.
type
AzureProvider
struct
{
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
zoneIDFilter
ZoneIDFilter
dryRun
bool
resourceGroup
string
...
...
@@ -78,7 +78,7 @@ type AzureProvider struct {
// NewAzureProvider creates a new Azure provider.
//
// Returns the provider or an error if a provider could not be created.
func
NewAzureProvider
(
configFile
string
,
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
dryRun
bool
)
(
*
AzureProvider
,
error
)
{
func
NewAzureProvider
(
configFile
string
,
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
dryRun
bool
)
(
*
AzureProvider
,
error
)
{
contents
,
err
:=
ioutil
.
ReadFile
(
configFile
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to read Azure config file '%s': %v"
,
configFile
,
err
)
...
...
This diff is collapsed.
Click to expand it.
provider/azure_private_dns.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -45,7 +45,7 @@ type PrivateRecordSetsClient interface {
// AzurePrivateDNSProvider implements the DNS provider for Microsoft's Azure Private DNS service
type
AzurePrivateDNSProvider
struct
{
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
zoneIDFilter
ZoneIDFilter
dryRun
bool
subscriptionID
string
...
...
@@ -57,7 +57,7 @@ type AzurePrivateDNSProvider struct {
// NewAzurePrivateDNSProvider creates a new Azure Private DNS provider.
//
// Returns the provider or an error if a provider could not be created.
func
NewAzurePrivateDNSProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
resourceGroup
string
,
subscriptionID
string
,
dryRun
bool
)
(
*
AzurePrivateDNSProvider
,
error
)
{
func
NewAzurePrivateDNSProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
resourceGroup
string
,
subscriptionID
string
,
dryRun
bool
)
(
*
AzurePrivateDNSProvider
,
error
)
{
authorizer
,
err
:=
auth
.
NewAuthorizerFromEnvironment
()
if
err
!=
nil
{
return
nil
,
err
...
...
This diff is collapsed.
Click to expand it.
provider/azure_privatedns_test.go
+
5
-
5
View file @
ec7c6ba4
...
...
@@ -203,7 +203,7 @@ func (client *mockPrivateRecordSetsClient) CreateOrUpdate(ctx context.Context, r
}
// newMockedAzurePrivateDNSProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
func
newMockedAzurePrivateDNSProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
zones
*
[]
privatedns
.
PrivateZone
,
recordSets
*
[]
privatedns
.
RecordSet
)
(
*
AzurePrivateDNSProvider
,
error
)
{
func
newMockedAzurePrivateDNSProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
zones
*
[]
privatedns
.
PrivateZone
,
recordSets
*
[]
privatedns
.
RecordSet
)
(
*
AzurePrivateDNSProvider
,
error
)
{
// init zone-related parts of the mock-client
pageIterator
:=
mockPrivateZoneListResultPageIterator
{
results
:
[]
privatedns
.
PrivateZoneListResult
{
...
...
@@ -236,7 +236,7 @@ func newMockedAzurePrivateDNSProvider(domainFilter DomainFilter, zoneIDFilter Zo
return
newAzurePrivateDNSProvider
(
domainFilter
,
zoneIDFilter
,
dryRun
,
resourceGroup
,
&
zonesClient
,
&
recordSetsClient
),
nil
}
func
newAzurePrivateDNSProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
privateZonesClient
PrivateZonesClient
,
privateRecordsClient
PrivateRecordSetsClient
)
*
AzurePrivateDNSProvider
{
func
newAzurePrivateDNSProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
privateZonesClient
PrivateZonesClient
,
privateRecordsClient
PrivateRecordSetsClient
)
*
AzurePrivateDNSProvider
{
return
&
AzurePrivateDNSProvider
{
domainFilter
:
domainFilter
,
zoneIDFilter
:
zoneIDFilter
,
...
...
@@ -248,7 +248,7 @@ func newAzurePrivateDNSProvider(domainFilter DomainFilter, zoneIDFilter ZoneIDFi
}
func
TestAzurePrivateDNSRecord
(
t
*
testing
.
T
)
{
provider
,
err
:=
newMockedAzurePrivateDNSProvider
(
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
provider
,
err
:=
newMockedAzurePrivateDNSProvider
(
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
&
[]
privatedns
.
PrivateZone
{
createMockPrivateZone
(
"example.com"
,
"/privateDnsZones/example.com"
),
},
...
...
@@ -284,7 +284,7 @@ func TestAzurePrivateDNSRecord(t *testing.T) {
}
func
TestAzurePrivateDNSMultiRecord
(
t
*
testing
.
T
)
{
provider
,
err
:=
newMockedAzurePrivateDNSProvider
(
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
provider
,
err
:=
newMockedAzurePrivateDNSProvider
(
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
&
[]
privatedns
.
PrivateZone
{
createMockPrivateZone
(
"example.com"
,
"/privateDnsZones/example.com"
),
},
...
...
@@ -382,7 +382,7 @@ func testAzurePrivateDNSApplyChangesInternal(t *testing.T, dryRun bool, client P
}
provider
:=
newAzurePrivateDNSProvider
(
NewDomainFilter
([]
string
{
""
}),
endpoint
.
NewDomainFilter
([]
string
{
""
}),
NewZoneIDFilter
([]
string
{
""
}),
dryRun
,
"group"
,
...
...
This diff is collapsed.
Click to expand it.
provider/azure_test.go
+
5
-
5
View file @
ec7c6ba4
...
...
@@ -206,7 +206,7 @@ func (client *mockRecordSetsClient) CreateOrUpdate(ctx context.Context, resource
}
// newMockedAzureProvider creates an AzureProvider comprising the mocked clients for zones and recordsets
func
newMockedAzureProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
zones
*
[]
dns
.
Zone
,
recordSets
*
[]
dns
.
RecordSet
)
(
*
AzureProvider
,
error
)
{
func
newMockedAzureProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
zones
*
[]
dns
.
Zone
,
recordSets
*
[]
dns
.
RecordSet
)
(
*
AzureProvider
,
error
)
{
// init zone-related parts of the mock-client
pageIterator
:=
mockZoneListResultPageIterator
{
results
:
[]
dns
.
ZoneListResult
{
...
...
@@ -239,7 +239,7 @@ func newMockedAzureProvider(domainFilter DomainFilter, zoneIDFilter ZoneIDFilter
return
newAzureProvider
(
domainFilter
,
zoneIDFilter
,
dryRun
,
resourceGroup
,
userAssignedIdentityClientID
,
&
zonesClient
,
&
recordSetsClient
),
nil
}
func
newAzureProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
zonesClient
ZonesClient
,
recordsClient
RecordSetsClient
)
*
AzureProvider
{
func
newAzureProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
dryRun
bool
,
resourceGroup
string
,
userAssignedIdentityClientID
string
,
zonesClient
ZonesClient
,
recordsClient
RecordSetsClient
)
*
AzureProvider
{
return
&
AzureProvider
{
domainFilter
:
domainFilter
,
zoneIDFilter
:
zoneIDFilter
,
...
...
@@ -256,7 +256,7 @@ func validateAzureEndpoints(t *testing.T, endpoints []*endpoint.Endpoint, expect
}
func
TestAzureRecord
(
t
*
testing
.
T
)
{
provider
,
err
:=
newMockedAzureProvider
(
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
""
,
provider
,
err
:=
newMockedAzureProvider
(
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
""
,
&
[]
dns
.
Zone
{
createMockZone
(
"example.com"
,
"/dnszones/example.com"
),
},
...
...
@@ -293,7 +293,7 @@ func TestAzureRecord(t *testing.T) {
}
func
TestAzureMultiRecord
(
t
*
testing
.
T
)
{
provider
,
err
:=
newMockedAzureProvider
(
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
""
,
provider
,
err
:=
newMockedAzureProvider
(
endpoint
.
NewDomainFilter
([]
string
{
"example.com"
}),
NewZoneIDFilter
([]
string
{
""
}),
true
,
"k8s"
,
""
,
&
[]
dns
.
Zone
{
createMockZone
(
"example.com"
,
"/dnszones/example.com"
),
},
...
...
@@ -392,7 +392,7 @@ func testAzureApplyChangesInternal(t *testing.T, dryRun bool, client RecordSetsC
}
provider
:=
newAzureProvider
(
NewDomainFilter
([]
string
{
""
}),
endpoint
.
NewDomainFilter
([]
string
{
""
}),
NewZoneIDFilter
([]
string
{
""
}),
dryRun
,
"group"
,
...
...
This diff is collapsed.
Click to expand it.
provider/cloudflare.go
+
2
-
2
View file @
ec7c6ba4
...
...
@@ -102,7 +102,7 @@ func (z zoneService) ListZonesContext(ctx context.Context, opts ...cloudflare.Re
type
CloudFlareProvider
struct
{
Client
cloudFlareDNS
// only consider hosted zones managing domains ending in this suffix
domainFilter
DomainFilter
domainFilter
endpoint
.
DomainFilter
zoneIDFilter
ZoneIDFilter
proxiedByDefault
bool
DryRun
bool
...
...
@@ -116,7 +116,7 @@ type cloudFlareChange struct {
}
// NewCloudFlareProvider initializes a new CloudFlare DNS based Provider.
func
NewCloudFlareProvider
(
domainFilter
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zonesPerPage
int
,
proxiedByDefault
bool
,
dryRun
bool
)
(
*
CloudFlareProvider
,
error
)
{
func
NewCloudFlareProvider
(
domainFilter
endpoint
.
DomainFilter
,
zoneIDFilter
ZoneIDFilter
,
zonesPerPage
int
,
proxiedByDefault
bool
,
dryRun
bool
)
(
*
CloudFlareProvider
,
error
)
{
// initialize via chosen auth method and returns new API object
var
(
config
*
cloudflare
.
API
...
...
This diff is collapsed.
Click to expand it.
provider/cloudflare_test.go
+
4
-
4
View file @
ec7c6ba4
...
...
@@ -247,7 +247,7 @@ func TestNewCloudFlareChangeProxiable(t *testing.T) {
func
TestCloudFlareZones
(
t
*
testing
.
T
)
{
provider
:=
&
CloudFlareProvider
{
Client
:
&
mockCloudFlareClient
{},
domainFilter
:
NewDomainFilter
([]
string
{
"zalando.to."
}),
domainFilter
:
endpoint
.
NewDomainFilter
([]
string
{
"zalando.to."
}),
zoneIDFilter
:
NewZoneIDFilter
([]
string
{
""
}),
}
...
...
@@ -288,7 +288,7 @@ func TestRecords(t *testing.T) {
func
TestNewCloudFlareProvider
(
t
*
testing
.
T
)
{
_
=
os
.
Setenv
(
"CF_API_TOKEN"
,
"abc123def"
)
_
,
err
:=
NewCloudFlareProvider
(
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
NewZoneIDFilter
([]
string
{
""
}),
25
,
false
,
...
...
@@ -300,7 +300,7 @@ func TestNewCloudFlareProvider(t *testing.T) {
_
=
os
.
Setenv
(
"CF_API_KEY"
,
"xxxxxxxxxxxxxxxxx"
)
_
=
os
.
Setenv
(
"CF_API_EMAIL"
,
"test@test.com"
)
_
,
err
=
NewCloudFlareProvider
(
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
NewZoneIDFilter
([]
string
{
""
}),
1
,
false
,
...
...
@@ -311,7 +311,7 @@ func TestNewCloudFlareProvider(t *testing.T) {
_
=
os
.
Unsetenv
(
"CF_API_KEY"
)
_
=
os
.
Unsetenv
(
"CF_API_EMAIL"
)
_
,
err
=
NewCloudFlareProvider
(
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
endpoint
.
NewDomainFilter
([]
string
{
"ext-dns-test.zalando.to."
}),
NewZoneIDFilter
([]
string
{
""
}),
50
,
false
,
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help