Browse Source

Merge pull request #565 from lancehudson/patch-1

Cloudflare: Increase page size
pull/598/head
Ross McFarland 5 years ago
committed by GitHub
parent
commit
eca5c399f1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 8 deletions
  1. +14
    -3
      octodns/provider/cloudflare.py
  2. +8
    -5
      tests/test_octodns_provider_cloudflare.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']:


+ 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


Loading…
Cancel
Save