All Versions
Latest Version
Avg Release Cycle
80 days
Latest Release
809 days ago

Changelog History
Page 1

  • v0.9.17 Changes

    April 02, 2022
    Noteworthy changes
    • The changes in plans are now ordered based on change type prior to considering the record name and type as was previously done. The chosen order is: deletes, creates, updates. The reason for that many providers make changes one at a time. When changing the type of a record, e.g. from A to CNAME of vice versa this is done by deleting the old and creating the new. If the CNAME create happens before the A delete it will often violate rules against having typed records live at the same node as a CNAME. Several providers have always handled this by sorting the changes themselves. This just standardizes what they are doing as many other providers appear to need to do so, but weren't. There was an ordering before, but it was essentially arbitrarily picked.
    • Record.register_type added so that providers can register custom record types, see [docs/](docs/ for more information
    • ๐Ÿ†• New octodns-versions command which will log out the version of octodns and any provider/processor/plan_output modules you are using.
    • ๐ŸŒฒ Manager includes the octoDNS version in its init log line
    • ๐Ÿš€ Non-official release installs will now include a bit of the sha to indicate specifically what revision is being used, e.g. 0.9.17+abcdef12, these roughly follow PEP440 guidelines
  • v0.9.16 Changes

    March 04, 2022
    Noteworthy changes
    • ๐Ÿ‘ Foundational support for root NS record management.
      • YamlProvider has it enabled and in general everyone should add root NS records that match what is in their provider(s) as of this release if they aren't already there.
      • Other providers will add root NS support over time following this release once they have had the chance to investigate the functionality and implement management if possible with whatever accomidations are required.
      • Watch your providers and for support and more information.
      • Root NS record changes will always require --force indicating that they are impactful changes that need a careful :eyes:
    • ๐Ÿ‘ _AggregateTarget has more complete handling of SUPPORTS* functionality, mostly applicable for the compare operation.
    • ๐Ÿ›  Fix null MX record validation error introduced in 0.9.15, . is again allowed as a valid exchange value.
  • v0.9.15 Changes

    February 07, 2022
    Noteworthy changes
    Prior to extraction
    • NS1 provider has received improvements to the dynamic record implementation. As a result, if octoDNS is downgraded from this version, any dynamic records created or updated using this version will show an update.
    • An edge-case bug related to geo rules involving continents in NS1 provider has been fixed in this version. However, it will not show/fix the records that match this edge-case. See for more information. If octoDNS is downgraded from this version, any dynamic records created or updated using this version and matching the said edge-case will not be read/parsed correctly by the older version and will show a diff.
    • โšก๏ธ Transip was updated to their new client api
    • โž• Additional FQDN validation to ALIAS/CNAME value, MX exchange, SRV target and tests of the functionality.
    • ๐Ÿ‘Œ Improvements around dynamic record value weights allowing finer grained control
  • v0.9.14 Changes

    October 10, 2021
    Noteworthy changes
    • 0๏ธโƒฃ Provider strict_supports param added, currently defaults to false, along with Provider._process_desired_zone this forms the foundations of a new "supports" system where providers will warn or error (depending on the value of strict_supports) during planning about their inability to do what they're being asked. When false they will warn and "adjust" the desired records. When true they will abort with an error indicating the problem. Over time it is expected that all "supports" checking/handling will move into this paradigm and strict_supports will likely be changed to default to true.
    • ๐Ÿ‘ Zone shallow copy support, reworking of Processors (alpha) semantics
    • NS1 NA target now includes SX and UM. If NA continent is in use in dynamic records care must be taken to upgrade/downgrade to v0.9.13.
    • ๐Ÿ‘ Ns1Provider now supports a new parameter, shared_notifylist, which results in all dynamic record monitors using a shared notify list named 'octoDNS NS1 Notify List'. Only newly created record values will use the shared notify list. It should be safe to enable this functionality, but existing records will not be converted. Note: Once this option is enabled downgrades to previous versions of octoDNS are discouraged and may result in undefined behavior and broken records. See for related discussion.
    • ๐Ÿšš TransipProvider removed as it currently relies on suds which is broken in new python versions and hasn't seen a release since 2010. May return with
    • ๐Ÿšš Fully remove python 2.7 support & sims
    • ๐Ÿ‘ Dynamic record pool status flag: up/down/obey added w/provider support as possible.
    • ๐Ÿ‘Œ Support for multi-value PTRs where providers allow them
    • Normalize IPv6 addresses to avoid false changes and simplify providers
    • ๐Ÿš€ Include pure-python wheel distirubtions in release builds
    • ๐Ÿ‘Œ Improvements and updates to AzureProvider, especially w/respect to dynamic records.
    • ๐ŸŽ NS1Provider support for IPv6 monitors and general caching/performance improvements
    • Route53Provider.get_zones_by_name option to avoid paging through huge lists and hitting rate limits
    • Misc Route53Provider
    • โœ… Ensure no network access during testing (helps with runtime)
    • โœ… Sped up the long pole unit tests
    • Misc. ConstellixProvider, DigitalOceanProvider, GCoreProvider, and Route53Provider fixes & improvements
  • v0.9.13 Changes

    July 18, 2021
    Noteworthy changes
    • ๐Ÿ‘ Alpha support for Processors has been added. Processors allow for hooking into the source, target, and planing process to make nearly arbitrary changes to data. See the octodns/processor/ directory for examples. The change has been designed to have no impact on the process unless the processors key is present in zone configs.
    • ๐Ÿ›  Fixes NS1 provider's geotarget limitation of using NA continent. Now, when NA is used in geos it considers all the countries of North America instead of just us-east, us-west and us-central regions
    • ๐Ÿ‘ SX' & 'UM country support added to NS1Provider, not yet in the North America list for backwards compatibility reasons. They will be added in the next releaser.
    • ๐Ÿ‘ Lots of progress on the partial/beta support for dynamic records in Azure, still not production ready.
    • NS1 fix for when a pool only exists as a fallback
    • Zone level lenient flag
    • Validate weight makes sense for pools with a single record
    • ๐Ÿ›  UltraDNS support for aliases and general fixes/improvements
    • ๐Ÿ›  Misc doc fixes and improvements
  • v0.9.12 Changes

    April 30, 2021
    Noteworthy changes
    • ๐Ÿšš Formal Python 2.7 support removed, deps and tooling were becoming unmaintainable
    • ๐Ÿšš octodns/octodns move, from github/octodns, more to come
    • ๐Ÿ‘ ZoneFileSource supports specifying an extension & no files end in . to better support Windows
    • ๐Ÿ‘ LOC record type support added
    • ๐Ÿ‘Œ Support for pre-release versions of PowerDNS
    • PowerDNS delete before create which allows A <-> CNAME etc.
    • ๐Ÿ‘Œ Improved validation of fqdn's in ALIAS, CNAME, etc.
    • ๐Ÿ‘ Transip support for NS records
    • ๐Ÿ‘Œ Support for sending plan output to a file
    • ๐Ÿ‘ DNSimple uses zone api rather than domain to support non-registered stuff, e.g. reverse zones.
    • ๐Ÿ‘Œ Support for fallback-only dynamic pools and related fixes to NS1 provider
    • ๐ŸŽ‰ Initial Hetzner provider
  • v0.9.11 Changes

    November 05, 2020
    Noteworthy changtes
    • ๐Ÿ‘€ ALIAS records only allowed at the root of zones - see leient in record docs for work-arounds if you really need them.
    ๐Ÿ†• New Providers
    • Gandi LiveDNS
    • UltraDNS
    • easyDNS
    • โž• Add support for zones aliases
    • octodns-compare: Prefix filtering and status code on on mismatch
    • ๐Ÿ”€ Implement octodns-sync --source
    • โž• Adding environment variable record injection
    • โž• Add support for wildcard SRV records, as shown in RFC 2782
    • โž• Add healthcheck option 'request_interval' for Route53 provider
    • NS1 georegion, country, and catchall need to be separate groups
    • โž• Add the ability to mark a zone as lenient
    • โž• Add support for geo-targeting of CA provinces
    • โšก๏ธ Update geo_data to pick up a couple renames
    • โšก๏ธ Cloudflare: Add PTR Support, update rate-limit handling and pagination
    • ๐Ÿ‘Œ Support PowerDNS 4.3.x
    • โž• Added support for TCP health checking of dynamic records
  • v0.9.10 Changes

    April 20, 2020
    • โž• Added support for dynamic records to Ns1Provider, updated client and rate limiting implementation
    • ๐Ÿ‘ท Moved CI to use GitHub Actions
    • โšก๏ธ Set up dependabot to automatically PR requirements updates
    • Pass at bumping all of the requirements and Dependabot them going forward
    • โœจ Enhanced dynamic pool validation rules
    • ๐Ÿ‘ Delegation set support for Route53 and fix for CNAME/A ordering issues
    • ๐Ÿ‘ DNSimple sandbox support
    • ๐Ÿ‘ OVHProvider support for CAA
    • Akamai rename FastDNS to EdgeDNS
    • Transip bumped to 2.1.2 which should get away from its SOAP api which is EOLd
  • v0.9.9 Changes

    November 04, 2019
    • ๐Ÿ‘ Extensive pass through the whole codebase to support Python 3
      • Tons of updates to replace def __cmp__ with __eq__ and friends to preserve custom equality and ordering behaviors that are essential to octoDNS's processes.
      • Quite a few objects required the addition of __eq__ and friends so that they're sortable in Python 3 now that those things are more strict. A few places this required jumping through hoops of sorts. Thankfully our tests are pretty thorough and caught a lot of issues and hopefully the whole plan, review, apply process will backstop that.
      • Explicit ordering of changes by (name, type) to address inconsistent ordering for a number of providers that just convert changes into API calls as they come. Python 2 sets ordered consistently, Python 3 they do not.
      • Route53 _mod_keyer ordering wasn't 100% complete and thus unreliable and random in Python 3. This has been addressed and may result in value reordering on next plan, no actual changes in behavior should occur.
      • incf.countryutils (in pypi) was last released in 2009 is not python 3 compatible (it's country data is also pretty stale.) pycountry_convert appears to have the functionality required to replace its usage so it has been removed as a dependency/requirement.
      • Bunch of additional unit tests and supporting config to exercise new code and verify things that were run into during the Python 3 work
      • lots of sixing of things
    • Validate Record name & fqdn length
  • v0.9.8 Changes

    September 30, 2019
    • No material changes