Commit Graph

27 Commits

Author SHA1 Message Date
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
Martin Linkhorst
398b49b3d4
feat(controller): expose managed resources and records as metrics 2018-11-28 15:02:05 +01:00
k8s-ci-robot
edc29a1b6a
Merge pull request #581 from jchv/txtRecordHandling
Do not replace TXT records with A/CNAME records in planner (#580)
2018-11-14 05:13:14 -08:00
wvl
4633573564 Add generic metrics for Source & Registry Errors (#652)
* Add generic metrics for Source & Registry Errors

Change-Id: Ie145f200f815712ec372fca1c897bee3710b045b

* add label to distinguish read errors

Change-Id: I9fb1295c6fb3b2c5814ba942b4af91e1fca1c2c1

* detect write errors

Change-Id: I524360923359a5aebe6224c4e32553b138dfbdab

* revert back to label less metrics

Change-Id: Id689e0ba8c3a40a520f5af73219a4e202c167e03

* fixup Gopkg.lock

Change-Id: I3e3fdc8ad792128421b92db587bdde6e788fea58
2018-08-20 18:15:57 +02:00
John Chadwick
dd036e1b78 Fix test where record type is blank. 2018-06-01 09:08:17 -04:00
Raphael Deem
daeda2ed53 use ticker (#553)
* use ticker

* stop the ticker
2018-05-15 16:45:41 +02: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
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
Martin Linkhorst
f837b6536d feat(plan): allow plan to have multiple policies (#204) 2017-05-31 20:31:03 +02:00
Martin Linkhorst
406afacbf7 experiment: use testify in test code (#186)
* ref(source): use testify with mocks in test code

* fix: re-introduce NewMockSource for convenience

* fix: avoid circular dependency

* ref: increase usage of testify

* chore: vendor testify as a dependency

* fix(*): cleanup testify expectations
2017-05-31 10:24:11 +02:00
Martin Linkhorst
707bdc4d95 ref(*): remove superflous zone parameter (#212) 2017-05-22 15:38:27 +02:00
Yerken
82a172a9f9 minor improvements to logging (#175)
* minor improvements to logging

* chore(*): change log.Infoln to log.Info

* fix: fix incorrect example code
2017-04-26 12:06:16 +02:00
Yerken
5e3f2b7773 first effort to improve logging in external-dns to provide with basic needed logging (#174)
* continue on controller loop error

* add logging in source

* use formatter on logChanges for endpoints

* fix log messages, log skipped records

* add logging in aws, uppercase the rest

* respect google dry run policy

* add ing/svc namespace/name on logging

* fix error logging on template failure

* fix bugs, propagate template error

* log if nothing is being updated, debug log skipped endpoints

* change zone-not-found logging order
2017-04-25 12:22:46 +02:00
Yerken
cbf54d904c move the logging to registry (#157) 2017-04-13 14:59:07 +02:00
Henning Jacobs
afa4cff158 #103 log calculated changes (#153) 2017-04-13 13:40:49 +02:00
Martin Linkhorst
644206c952 allow plans to be parameterized via policies (#127)
* feat(plan): allow plans to be parameterized via policies

* fix(controller): set a policy in the controller tests

* chore: allow go tip to fail

* chore: update changelog to include policies

* fix(plan): store a pointer to changes

* fix(controller): don't get address of a pointer
2017-04-12 12:49:11 +02:00
Yerken
9a44453d59 define registry interface (#120)
* define registry interface

* init in-memory registry

* remove ununsed variable, added comments

* add inmemory registry tests

* introduce DNSRecord struct

* use noop registry

* remove zone from registry fields

* replace provider with registry in controller

* move noop registry interface check to test

* remove ownerid from noop registry

* fix: remove dangling empty line

* return provider records directly with noop

* adjust according to pr review

* fix noop tests
2017-04-07 16:00:24 +02:00
Yerken
f9402d7ed1 use pointer to endpoint via NewEndpoint initializer (#125)
* use pointer to endpoint via NewEndpoint initializer

* return nil if record does not exist in plan

* add test for NewEndpoint
2017-04-04 16:41:49 +02:00
Martin Linkhorst
facdea51dd feat: make interval between synchronizations configurable (#123) 2017-04-04 16:14:56 +02:00
Martin Linkhorst
318c6e532c ref(*): rename DNSProvider to just Provider (#101) 2017-03-17 14:35:10 +01:00
Martin Linkhorst
cf9c5e39ed feat(source): promote MockSource to source package (#78) 2017-03-13 14:17:55 +01:00
Martin Linkhorst
fb853808b8 feat(controller): make mock implementations more flexible by taking slices (#51) 2017-03-02 13:19:13 +01:00
Martin Linkhorst
99371a1e83 implementation of basic control loop (#40)
* feat(google): add ability to apply changes generated from a plan

* feat(controller): first implementation of controller

* feat: allow to configure in-cluster and kubeconfig

* fix(controller): call RunOnce at the right time and in a loop

* feat(google): add dryRun attribute to Google DNS provider

* fix: use hosted zone id instead of DNS name

* fix(google): stupidly filter by A records for now

* feat: allow specifying the google project and zone

* feat: provide a dry-run flag which defaults to false

* chore: vendor new dependencies

* fix(config): fix failing tests for config object

* ref(controller): return plain value of ApplyChanges

* ref: simplify how to get a valid kubernetes client
2017-03-01 16:17:47 +01:00
ideahitme
0537b77f16 boilerplate header is newline sensitive -_- 2017-02-21 18:53:50 +01:00
ideahitme
c666bbcb7d add boilerplate header 2017-02-21 18:47:07 +01:00
ideahitme
74a2d8ace7 move config to separate package 2017-02-21 16:15:21 +01:00
ideahitme
c6af349a9b add main, config, termination, healthcheck 2017-02-21 14:10:09 +01:00