Note that you can't specify a Host header for these which I believe will
complicate the ability to use this. Figuring that out will have to wait
until I or someone else has a use case for these...
This will ensure that deletes come before creates which are before upserts and
that records that uses aliases always come after their target (though implicitly
based on sorting types and not explicitly by looking at them.)
Route53 allows to monitor latency information on the dashboard
and using CloudWatch. While that is a nice to have function,
it is not necessary for a DNS failover scenario and increases
Route 53 costs.
To maintain backward compatibility, the default for this option
when ommited is true.
This will ensure unique refs for different zones. Without them the ref isn't
enough to make sure we're looking at the right thing (notably when we're
gc'ing old health checks.) This also adds a bit more debugging around health
checks.
Before, 1-2k record took ~10s and more than that was just painful, 5k took
forever. This records things to keep a dict of nodes with a set of records so
that we can quickly "jump" to the point we're looking for without having to
search. 10k records now takes ~5s.
- adds lenient flag to Record.new, problems during validation are just
warnings if it's true
- target populate calls during the plan phase pass lenient=True
- make all of the provider.populate call logging consistent including both
target and lenient
- add source=self to Record.new in a few places that were missing it
Fixes an issue where we'd be looking for custom healthcheck config on the
existing record object (from the provider) which would never have a custom
setup. Instead looking at desired lets us find what's actually configured to be
the case
- This reworks the CallerReference structure for Route53 health checks in a
non-backwards compatible way. This means records will create new healthchecks
for themselves which should be fine.
- Since we're pre 1.0, support has NOT been added to cleanup the old
healthchecks. That could be done reasonably easy, BUT we'd have to keep that
around forever. The hope is that the new ref format/usage will prevent this
problem going forward since enough info exists in the ref to identify things
fully. :fingers_crossed:
- healthcheck GC is much cleaner and more robust thanks to ^
- overall the healthcheck management code is a bit easier to follow and more
robust now.
They were working around the lack of class hierarchy, this addresses that by
adding 2 child classes. It gets rid of a bunch of ugly default params and
if-this junk in the main class that was trying to deal with plain & geo records.
Also as a positive side effect it gets rid of some hacks that lived in
Route53Provider dealing with the fact that the old setup couldn't detect going
to/from a GeoDNS record correctly.