Browse Source

Merge remote-tracking branch 'origin/master' into configurable-geo-healthcheck

pull/67/head
Ross McFarland 8 years ago
parent
commit
afd592f5a3
No known key found for this signature in database GPG Key ID: 61C10C4FC8FE4A89
6 changed files with 44 additions and 9 deletions
  1. +15
    -0
      CHANGELOG.md
  2. +1
    -1
      octodns/__init__.py
  3. +20
    -2
      octodns/provider/dyn.py
  4. +2
    -1
      script/release
  5. +1
    -0
      setup.cfg
  6. +5
    -5
      tests/test_octodns_provider_dyn.py

+ 15
- 0
CHANGELOG.md View File

@ -1,3 +1,18 @@
## v0.9.0 - 2018-03-26 - Way too long since we last met
* Way way way too much to list out here, shouldn't have waited so long
* Initial NS1 geo support
* Major reworking of `CloudflareProvider`'s update process, was only partially
functional before, also ignore proxied records
* Fixes and improvements to better support non-ascii records and zones
* Plans indicate when Zones are going to be created
* Fix for `GoogleCloudProvider` handling of ; escapes
* Skip Alias recordsets for Route53 (unsupported concept/type)
* Make sure that Record geo values are sorted to prevent false diffs that can
never be fixed
* `DynProvider` fix to safely roll rulesets, things could end up on rules
without a pool and/or hitting the default rule previously.
## v0.8.8 - 2017-10-24 - Google Cloud DNS, Large TXT Record support
* Added support for "chunking" TXT records where individual values were larger


+ 1
- 1
octodns/__init__.py View File

@ -3,4 +3,4 @@
from __future__ import absolute_import, division, print_function, \
unicode_literals
__VERSION__ = '0.8.8'
__VERSION__ = '0.9.0'

+ 20
- 2
octodns/provider/dyn.py View File

@ -657,6 +657,12 @@ class DynProvider(BaseProvider):
for ruleset in existing_rulesets:
for pool in ruleset.response_pools:
pools[pool.response_pool_id] = pool
# Reverse sort the existing_rulesets by _ordering so that we'll remove
# them in that order later, this will ensure that we remove the old
# default before any of the old geo rules preventing it from catching
# everything.
existing_rulesets.sort(key=lambda r: r._ordering, reverse=True)
# Now we need to find any pools that aren't referenced by rules
for pool in td.all_response_pools:
rpid = pool.response_pool_id
@ -669,10 +675,22 @@ class DynProvider(BaseProvider):
# Rulesets
# We need to make sure and insert the new rules after any existing
# rules so they won't take effect before we've had a chance to add
# response pools to them. I've tried both publish=False (which is
# completely broken in the client) and creating the rulesets with
# response_pool_ids neither of which appear to work from the client
# library. If there are no existing rulesets fallback to 0
insert_at = max([
int(r._ordering)
for r in existing_rulesets
] + [-1]) + 1
self.log.debug('_mod_rulesets: insert_at=%d', insert_at)
# add the default
label = 'default:{}'.format(uuid4().hex)
ruleset = DSFRuleset(label, 'always', [])
ruleset.create(td, index=0)
ruleset.create(td, index=insert_at)
pool = self._find_or_create_pool(td, pools, 'default', new._type,
new.values)
# There's no way in the client lib to create a ruleset with an existing
@ -705,7 +723,7 @@ class DynProvider(BaseProvider):
'geoip': criteria
})
# Something you have to call create others the constructor does it
ruleset.create(td, index=0)
ruleset.create(td, index=insert_at)
first = geo.values[0]
pool = self._find_or_create_pool(td, pools, first, new._type,


+ 2
- 1
script/release View File

@ -10,5 +10,6 @@ VERSION=$(grep __VERSION__ $ROOT/octodns/__init__.py | sed -e "s/.* = '//" -e "s
git tag -s v$VERSION -m "Release $VERSION"
git push origin v$VERSION
echo "Tagged and pushed v$VERSION"
python setup.py sdist upload
python setup.py sdist
twine upload dist/*$VERSION.tar.gz
echo "Uploaded $VERSION"

+ 1
- 0
setup.cfg View File

@ -58,6 +58,7 @@ dev =
ovh>=0.4.7
s3transfer>=0.1.10
six>=1.10.0
twine>=1.11.0
test =
coverage
mock


+ 5
- 5
tests/test_octodns_provider_dyn.py View File

@ -1368,11 +1368,11 @@ class TestDynProviderGeo(TestCase):
change = Create(self.geo_record)
provider._mod_rulesets(td_mock, change)
ruleset_create_mock.assert_has_calls((
call(td_mock, index=0),
call(td_mock, index=0),
call(td_mock, index=0),
call(td_mock, index=0),
call(td_mock, index=0),
call(td_mock, index=2),
call(td_mock, index=2),
call(td_mock, index=2),
call(td_mock, index=2),
call(td_mock, index=2),
))
add_response_pool_mock.assert_has_calls((
# default


Loading…
Cancel
Save