Commit Graph

21 Commits

Author SHA1 Message Date
Markus Cisler
14d64e09f2 Change DomainFilter to apply to records as well
This moves `domain_filter.go` to the `endpoint` package to make it
possible to filter and exclude record names in
`plan.filterRecordsForPlan()` so it does not have to be implemented in
every single provider.

Because some providers access `DomainFilter.filters` directly it had to
be exported.
2020-02-24 11:19:45 +01:00
Tariq Ibrahim
a5896c2326
remove context.TODO()s in external-dns 2020-01-15 13:59:20 -08:00
tariqibrahim
672b00d821 add ctx parameter to provider interface and aws API 2020-01-12 13:16:55 -08:00
Tariq Ibrahim
bf4b1767fa
add more linters and improve code quality 2020-01-07 15:18:00 -08:00
Tariq Ibrahim
41ba7f1ff5
rename project root package to sigs.k8s.io 2020-01-06 08:08:35 -08:00
Bryan Stenson
26b32f3e4f typo; remove extra space 2019-12-06 13:37:48 -08:00
Nick Jüttner
f763d2a413 Move into kubernetes-sigs organization (#1245)
* Move into kubernetes-sigs organization

* Disable labeler action for forks
2019-11-01 17:10:19 +01:00
Tariq Ibrahim
9afd5fac90
update digitalocean/godo to the latest stable version 2019-08-13 17:53:39 -07:00
Michael Fraenkel
fab942f486 Cache the endpoints on the controller loop
The controller will retrieve all the endpoints at the beginning of its
loop. When changes need to be applied, the provider may need to query
the endpoints again. Allow the provider to skip the queries if its data was
cached.
2019-05-07 19:51:53 -04:00
Andrew Starr-Bochicchio
edc018cfd1 Add support to configure TTLs on DigitalOcean. 2018-08-09 18:43:23 -04:00
Nenad Ilic
2da3301a2c
Update DO CNAME type API request to prevent error 422
For some reason, the DO API requires the '.' at the end of "data" in case of CNAME request
Example: {"type":"CNAME","name":"hello","data":"www.example.com."}
2018-07-04 13:26:41 +02:00
Gary Kramlich
0e8354795f Merge branch 'master' into issue-239-multiple-targets 2018-04-12 12:11:15 -05:00
Mikkel Oscar Lyderik Larsen
9ecd48ec32
digitalocean: Fix handling of domain record names
The DomainRecord response from the Digital Ocean API does not contain
the zone as part of the name and thus we must append the zone name when
converting it to an endpoint for the plan calculation.

Furthermore the root domain is identified by `@` and must be converted
to the zone name for the endpoint, and converted back to `@` when the
record is submitted to the DO API.

https://developers.digitalocean.com/documentation/v2/#retrieve-an-existing-domain-record

Fix #487
2018-03-16 23:08:59 +01:00
Gary Kramlich
1cef71e0be Inititial support for multiple targets per record 2018-03-13 23:16:51 -05:00
Till Klocke
5d54849699 Implementation of multiple targets based on PR #404 and #396 (#418)
* Endpoint.Target is now Endpoint.Targets. This is its own type representing mutliple targets for a single DNS name while adding some convenience for sorting and comparing

* Made everything compile and tests run through with the new Endpoint.Targets

* The ingress source can now properly handle multiple target ips per host

* Added custom conflict resolver, to better understand how conflict resolution has to work for me

* My custom conflict resolver behaves a bit different than the PerResource resolver, therefore I needed to modify the expected test result

Removed unnecessary FIXME

* The ingress source now creates CNAME endpoints with multiple targets to let the DNS provider decide how to handle multiple CNAME targets. This could be interesting for weighted targets etc.

* Adopted the expected results to the new way we create endpoints for CNAMEs

* Removed Add method from Targets since manipulating the slice through here is unnecessary complicated and doesn't deliver enough convenience

* Reverted ConflictResolver to the original one. There is some discussing to do what the best way is to handle conflicts

* Added missing documenting comment to IsLess of Targets

* Added documenting comments to Targets,Targets.Same and NewTargets to clarify their intention and usage

* Service source now also generates endpoints with multiple targets

* Service and Ingress source now sort all Targets for every Endpoint to make order of Targets predictable

* Endpoints generated by the Google Cloud DNS provider now also have sorted Targets to make order of Targets predictable

* Modified provider dyn to be able to compile with multi target changes

* Fixed small nitpicks, so my code is acceptable

* Fixed merge method after updating to new Targets. Replacing '!=' with .Same of course needs a boolean negation

* Tests for dyn provider now also use the new Targets instead of Target

* Simplified extractServiceIps as implied by linki to make it more readable

* ref: change service ClusterIP retrieval again

* Added entry to CHANGELOG.md describing the new features contained in this PR
2018-02-21 18:11:45 +01:00
Nick Jüttner
f5b0d93e91 DigitalOcean creates entries with host in them twice (#459)
* DigitalOcean creates entries with host in them twice

* Unit test

* DigitalOcean creates entries with host in them twice (#459)

* docs: cleanup changelog a little
2018-02-21 15:53:31 +01:00
Nick Jüttner
f5639c4cb7 #228 Simplify DNS provider requirements by extracting common (#263)
* #228 Simplify DNS provider requirements by extracting common

* #228 Simplify DNS provider requirements by extracting common

* Missing boilerplate added

* rename recordtypefilter, fail fast statements

* rework zone finder, update deps

* chore: drop namespace from cloudflare method name
2017-10-11 12:16:28 +02:00
Martin Linkhorst
3331a57a18 Fix issue with uppercase logrus import (#351)
* chore: use lowercase for logrus repository

* chore: update dependencies using glide
2017-10-09 17:14:18 +02:00
Seth Pollack
f14a953b5f Kops Compatibility #1: Set RecordType at source (#248)
* set RecordType at source

* add comments for linting
2017-08-25 14:41:40 +02:00
Nils Juenemann
73d397961e Support for multiple domains within --domain-filter (#252)
* Support for multiple domains within --domain-filter

The parameter accepts a comma separated list of domains with or without trailing dot. Example: --domain-filter="example.org, company.test.,staging.com". Closes #247 and #229

* Add boilerplate header

* Add documentation for methods and structs

* use StringsVar for the domain-filter flag

* go fmt

* Remove camel case from tests

* Revert changes in README.md

* Move DomainFilter to provider package

* Make a new slice and copy elements to it

* Update CHANGELOG.md

* docs: change minor spelling mistake
2017-06-29 18:59:05 +02:00
Nick Jüttner
cafe6c08d0 Digital Ocean as a new provider (#171)
* Initial Digital Ocean as a new provider

* chore: vendor dependencies

* Remove zone parameter from ApplyChanges and Records

* fix(digitalocean): fix correct imports, unshadow a variable

* fix(digitalocean): respect domain-filter if provided

* add changes to digital ocean provider from PR review (#3)

* fix tests and bugs in find suitable zones for digital ocean (#5)

* tests failed due to wrong formatting

* add digitalocean integration to the main and more tests

* fix suitable zone for digital ocean
2017-06-16 10:44:03 +02:00