Currently if there are two zones configured;
- example.com.
- delegated.subdomain.example.com.
When an NS record is created in example.com.yaml as such:
delegated.subdomain:
type: NS
values:
- ns1.example.org.
The NS record for delegated.subdomain.example.com cannot be created as it
throws an exception:
octodns.zone.SubzoneRecordException: Record delegated.subdomain.example.com is under a managed subzone
Additionally, all records other than NS are rejected for
subdomain.example.com..
This is caused by zone_tree being the result of all zones split on '.'
and being added to the tree, even if a zone does not exist at that
point.
To support records where a subzone is dotted, the the map is built such
that each node represents the subdomain of the closest subzone.
Before:
{"com", {"example": {"subdomain": {"delegated": {}}}}}
After:
{"example.com": {"delegated.subdomain": {}}}
Fixes: #378
* Zone object no longer treats them special, some tests needed adjusting
b/c of this, some provider's tests may also need adjusting, though
they should not plan changes since they won't (yet) have
SUPPORTS_ROOT_NS
* _process_desired_zone filters and warns when not supported
* YamlProvider supports them
* TinyDnsBaseSource supports them
`Included` and `Excluded` can be used to filter records for one or more specific provider(s). This can be extremely useful when certain record types are not supported by a provider and you want only that provider to receive an alternative record.
See also: https://github.com/github/octodns/issues/26
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.