1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Accounting for CloudFlare TTL alias

This commit is contained in:
Brian E Clow
2021-06-23 13:38:58 -07:00
parent 07aad177b5
commit 0967858554
2 changed files with 20 additions and 9 deletions

View File

@@ -170,6 +170,9 @@ class CloudflareProvider(BaseProvider):
return self._zones
def _ttl_data(self, ttl):
return 300 if ttl == 1 else ttl
def _data_for_cdn(self, name, _type, records):
self.log.info('CDN rewrite for %s', records[0]['name'])
_type = "CNAME"
@@ -177,14 +180,14 @@ class CloudflareProvider(BaseProvider):
_type = "ALIAS"
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'value': '{}.cdn.cloudflare.net.'.format(records[0]['name']),
}
def _data_for_multiple(self, _type, records):
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': [r['content'] for r in records],
}
@@ -195,7 +198,7 @@ class CloudflareProvider(BaseProvider):
def _data_for_TXT(self, _type, records):
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': [r['content'].replace(';', '\\;') for r in records],
}
@@ -206,7 +209,7 @@ class CloudflareProvider(BaseProvider):
data = r['data']
values.append(data)
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': values,
}
@@ -214,7 +217,7 @@ class CloudflareProvider(BaseProvider):
def _data_for_CNAME(self, _type, records):
only = records[0]
return {
'ttl': only['ttl'],
'ttl': self._ttl_data(only['ttl']),
'type': _type,
'value': '{}.'.format(only['content'])
}
@@ -241,7 +244,7 @@ class CloudflareProvider(BaseProvider):
'precision_vert': float(r['precision_vert']),
})
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': values
}
@@ -254,14 +257,14 @@ class CloudflareProvider(BaseProvider):
'exchange': '{}.'.format(r['content']),
})
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': values,
}
def _data_for_NS(self, _type, records):
return {
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'type': _type,
'values': ['{}.'.format(r['content']) for r in records],
}
@@ -279,7 +282,7 @@ class CloudflareProvider(BaseProvider):
})
return {
'type': _type,
'ttl': records[0]['ttl'],
'ttl': self._ttl_data(records[0]['ttl']),
'values': values
}

View File

@@ -1410,3 +1410,11 @@ class TestCloudflareProvider(TestCase):
with self.assertRaises(CloudflareRateLimitError) as ctx:
provider.zone_records(zone)
self.assertEquals('last', text_type(ctx.exception))
def test_ttl_mapping(self):
provider = CloudflareProvider('test', 'email', 'token')
self.assertEquals(120, provider._ttl_data(120))
self.assertEquals(120, provider._ttl_data(120))
self.assertEquals(3600, provider._ttl_data(3600))
self.assertEquals(300, provider._ttl_data(1))