Browse Source

Merge branch 'easydns_provider' of https://github.com/actazen/octodns into easydns_provider

pull/581/head
John Dale 5 years ago
parent
commit
9e372fee19
6 changed files with 38 additions and 12 deletions
  1. +14
    -3
      octodns/provider/cloudflare.py
  2. +1
    -1
      octodns/record/__init__.py
  3. +2
    -2
      requirements.txt
  4. +1
    -1
      setup.py
  5. +8
    -5
      tests/test_octodns_provider_cloudflare.py
  6. +12
    -0
      tests/test_octodns_record.py

+ 14
- 3
octodns/provider/cloudflare.py View File

@ -58,6 +58,10 @@ class CloudflareProvider(BaseProvider):
retry_count: 4
# Optional. Default: 300. Number of seconds to wait before retrying.
retry_period: 300
# Optional. Default: 50. Number of zones per page.
zones_per_page: 50
# Optional. Default: 100. Number of dns records per page.
records_per_page: 100
Note: The "proxied" flag of "A", "AAAA" and "CNAME" records can be managed
via the YAML provider like so:
@ -78,7 +82,8 @@ class CloudflareProvider(BaseProvider):
TIMEOUT = 15
def __init__(self, id, email=None, token=None, cdn=False, retry_count=4,
retry_period=300, *args, **kwargs):
retry_period=300, zones_per_page=50, records_per_page=100,
*args, **kwargs):
self.log = getLogger('CloudflareProvider[{}]'.format(id))
self.log.debug('__init__: id=%s, email=%s, token=***, cdn=%s', id,
email, cdn)
@ -99,6 +104,8 @@ class CloudflareProvider(BaseProvider):
self.cdn = cdn
self.retry_count = retry_count
self.retry_period = retry_period
self.zones_per_page = zones_per_page
self.records_per_page = records_per_page
self._sess = sess
self._zones = None
@ -142,7 +149,10 @@ class CloudflareProvider(BaseProvider):
zones = []
while page:
resp = self._try_request('GET', '/zones',
params={'page': page})
params={
'page': page,
'per_page': self.zones_per_page
})
zones += resp['result']
info = resp['result_info']
if info['count'] > 0 and info['count'] == info['per_page']:
@ -251,7 +261,8 @@ class CloudflareProvider(BaseProvider):
path = '/zones/{}/dns_records'.format(zone_id)
page = 1
while page:
resp = self._try_request('GET', path, params={'page': page})
resp = self._try_request('GET', path, params={'page': page,
'per_page': self.records_per_page})
records += resp['result']
info = resp['result_info']
if info['count'] > 0 and info['count'] == info['per_page']:


+ 1
- 1
octodns/record/__init__.py View File

@ -1209,7 +1209,7 @@ class SrvValue(EqualityTupleMixin):
class SrvRecord(_ValuesMixin, Record):
_type = 'SRV'
_value_type = SrvValue
_name_re = re.compile(r'^_[^\.]+\.[^\.]+')
_name_re = re.compile(r'^(\*|_[^\.]+)\.[^\.]+')
@classmethod
def validate(cls, name, fqdn, data):


+ 2
- 2
requirements.txt View File

@ -7,10 +7,10 @@ dnspython==1.16.0
docutils==0.16
dyn==1.8.1
edgegrid-python==1.1.1
futures==3.2.0; python_version < '3.0'
futures==3.2.0; python_version < '3.2'
google-cloud-core==1.3.0
google-cloud-dns==0.32.0
ipaddress==1.0.23
ipaddress==1.0.23; python_version < '3.3'
jmespath==0.10.0
msrestazure==0.6.4
natsort==6.2.1


+ 1
- 1
setup.py View File

@ -69,7 +69,7 @@ setup(
'PyYaml>=4.2b1',
'dnspython>=1.15.0',
'futures>=3.2.0; python_version<"3.2"',
'ipaddress>=1.0.22',
'ipaddress>=1.0.22; python_version<"3.3"',
'natsort>=5.5.0',
'pycountry>=19.8.18',
'pycountry-convert>=0.7.2',


+ 8
- 5
tests/test_octodns_provider_cloudflare.py View File

@ -426,7 +426,7 @@ class TestCloudflareProvider(TestCase):
# get the list of zones, create a zone, add some records, update
# something, and delete something
provider._request.assert_has_calls([
call('GET', '/zones', params={'page': 1}),
call('GET', '/zones', params={'page': 1, 'per_page': 50}),
call('POST', '/zones', data={
'jump_start': False,
'name': 'unit.tests'
@ -531,7 +531,7 @@ class TestCloudflareProvider(TestCase):
# Get zones, create zone, create a record, delete a record
provider._request.assert_has_calls([
call('GET', '/zones', params={'page': 1}),
call('GET', '/zones', params={'page': 1, 'per_page': 50}),
call('POST', '/zones', data={
'jump_start': False,
'name': 'unit.tests'
@ -1302,7 +1302,8 @@ class TestCloudflareProvider(TestCase):
provider._request.side_effect = [result]
self.assertEquals([], provider.zone_records(zone))
provider._request.assert_has_calls([call('GET', '/zones',
params={'page': 1})])
params={'page': 1,
'per_page': 50})])
# One retry required
provider._zones = None
@ -1313,7 +1314,8 @@ class TestCloudflareProvider(TestCase):
]
self.assertEquals([], provider.zone_records(zone))
provider._request.assert_has_calls([call('GET', '/zones',
params={'page': 1})])
params={'page': 1,
'per_page': 50})])
# Two retries required
provider._zones = None
@ -1325,7 +1327,8 @@ class TestCloudflareProvider(TestCase):
]
self.assertEquals([], provider.zone_records(zone))
provider._request.assert_has_calls([call('GET', '/zones',
params={'page': 1})])
params={'page': 1,
'per_page': 50})])
# # Exhaust our retries
provider._zones = None


+ 12
- 0
tests/test_octodns_record.py View File

@ -2155,6 +2155,18 @@ class TestRecordValidation(TestCase):
}
})
# permit wildcard entries
Record.new(self.zone, '*._tcp', {
'type': 'SRV',
'ttl': 600,
'value': {
'priority': 1,
'weight': 2,
'port': 3,
'target': 'food.bar.baz.'
}
})
# invalid name
with self.assertRaises(ValidationError) as ctx:
Record.new(self.zone, 'neup', {


Loading…
Cancel
Save