mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Fix handling of NULL SRV records in Cloudflare provider
This commit is contained in:
@@ -239,11 +239,13 @@ class CloudflareProvider(BaseProvider):
|
|||||||
def _data_for_SRV(self, _type, records):
|
def _data_for_SRV(self, _type, records):
|
||||||
values = []
|
values = []
|
||||||
for r in records:
|
for r in records:
|
||||||
|
target = ('{}.'.format(r['data']['target'])
|
||||||
|
if r['data']['target'] != "." else ".")
|
||||||
values.append({
|
values.append({
|
||||||
'priority': r['data']['priority'],
|
'priority': r['data']['priority'],
|
||||||
'weight': r['data']['weight'],
|
'weight': r['data']['weight'],
|
||||||
'port': r['data']['port'],
|
'port': r['data']['port'],
|
||||||
'target': '{}.'.format(r['data']['target']),
|
'target': target,
|
||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
'type': _type,
|
'type': _type,
|
||||||
@@ -405,6 +407,8 @@ class CloudflareProvider(BaseProvider):
|
|||||||
name = subdomain
|
name = subdomain
|
||||||
|
|
||||||
for value in record.values:
|
for value in record.values:
|
||||||
|
target = value.target[:-1] if value.target != "." else "."
|
||||||
|
|
||||||
yield {
|
yield {
|
||||||
'data': {
|
'data': {
|
||||||
'service': service,
|
'service': service,
|
||||||
@@ -413,7 +417,7 @@ class CloudflareProvider(BaseProvider):
|
|||||||
'priority': value.priority,
|
'priority': value.priority,
|
||||||
'weight': value.weight,
|
'weight': value.weight,
|
||||||
'port': value.port,
|
'port': value.port,
|
||||||
'target': value.target[:-1],
|
'target': target,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -174,6 +174,56 @@
|
|||||||
"auto_added": false
|
"auto_added": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "fc12ab34cd5611334422ab3322997656",
|
||||||
|
"type": "SRV",
|
||||||
|
"name": "_imap._tcp.unit.tests",
|
||||||
|
"data": {
|
||||||
|
"service": "_imap",
|
||||||
|
"proto": "_tcp",
|
||||||
|
"name": "unit.tests",
|
||||||
|
"priority": 0,
|
||||||
|
"weight": 0,
|
||||||
|
"port": 0,
|
||||||
|
"target": "."
|
||||||
|
},
|
||||||
|
"proxiable": true,
|
||||||
|
"proxied": false,
|
||||||
|
"ttl": 600,
|
||||||
|
"locked": false,
|
||||||
|
"zone_id": "ff12ab34cd5611334422ab3322997650",
|
||||||
|
"zone_name": "unit.tests",
|
||||||
|
"modified_on": "2017-03-11T18:01:43.940682Z",
|
||||||
|
"created_on": "2017-03-11T18:01:43.940682Z",
|
||||||
|
"meta": {
|
||||||
|
"auto_added": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fc12ab34cd5611334422ab3322997656",
|
||||||
|
"type": "SRV",
|
||||||
|
"name": "_pop3._tcp.unit.tests",
|
||||||
|
"data": {
|
||||||
|
"service": "_imap",
|
||||||
|
"proto": "_pop3",
|
||||||
|
"name": "unit.tests",
|
||||||
|
"priority": 0,
|
||||||
|
"weight": 0,
|
||||||
|
"port": 0,
|
||||||
|
"target": "."
|
||||||
|
},
|
||||||
|
"proxiable": true,
|
||||||
|
"proxied": false,
|
||||||
|
"ttl": 600,
|
||||||
|
"locked": false,
|
||||||
|
"zone_id": "ff12ab34cd5611334422ab3322997650",
|
||||||
|
"zone_name": "unit.tests",
|
||||||
|
"modified_on": "2017-03-11T18:01:43.940682Z",
|
||||||
|
"created_on": "2017-03-11T18:01:43.940682Z",
|
||||||
|
"meta": {
|
||||||
|
"auto_added": false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "fc12ab34cd5611334422ab3322997656",
|
"id": "fc12ab34cd5611334422ab3322997656",
|
||||||
"type": "SRV",
|
"type": "SRV",
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ class TestCloudflareProvider(TestCase):
|
|||||||
|
|
||||||
zone = Zone('unit.tests.', [])
|
zone = Zone('unit.tests.', [])
|
||||||
provider.populate(zone)
|
provider.populate(zone)
|
||||||
self.assertEquals(13, len(zone.records))
|
self.assertEquals(15, len(zone.records))
|
||||||
|
|
||||||
changes = self.expected.changes(zone, provider)
|
changes = self.expected.changes(zone, provider)
|
||||||
|
|
||||||
@@ -189,7 +189,7 @@ class TestCloudflareProvider(TestCase):
|
|||||||
# re-populating the same zone/records comes out of cache, no calls
|
# re-populating the same zone/records comes out of cache, no calls
|
||||||
again = Zone('unit.tests.', [])
|
again = Zone('unit.tests.', [])
|
||||||
provider.populate(again)
|
provider.populate(again)
|
||||||
self.assertEquals(13, len(again.records))
|
self.assertEquals(15, len(again.records))
|
||||||
|
|
||||||
def test_apply(self):
|
def test_apply(self):
|
||||||
provider = CloudflareProvider('test', 'email', 'token', retry_period=0)
|
provider = CloudflareProvider('test', 'email', 'token', retry_period=0)
|
||||||
@@ -203,12 +203,12 @@ class TestCloudflareProvider(TestCase):
|
|||||||
'id': 42,
|
'id': 42,
|
||||||
}
|
}
|
||||||
}, # zone create
|
}, # zone create
|
||||||
] + [None] * 22 # individual record creates
|
] + [None] * 24 # individual record creates
|
||||||
|
|
||||||
# non-existent zone, create everything
|
# non-existent zone, create everything
|
||||||
plan = provider.plan(self.expected)
|
plan = provider.plan(self.expected)
|
||||||
self.assertEquals(13, len(plan.changes))
|
self.assertEquals(15, len(plan.changes))
|
||||||
self.assertEquals(13, provider.apply(plan))
|
self.assertEquals(15, provider.apply(plan))
|
||||||
self.assertFalse(plan.exists)
|
self.assertFalse(plan.exists)
|
||||||
|
|
||||||
provider._request.assert_has_calls([
|
provider._request.assert_has_calls([
|
||||||
@@ -234,7 +234,7 @@ class TestCloudflareProvider(TestCase):
|
|||||||
}),
|
}),
|
||||||
], True)
|
], True)
|
||||||
# expected number of total calls
|
# expected number of total calls
|
||||||
self.assertEquals(23, provider._request.call_count)
|
self.assertEquals(25, provider._request.call_count)
|
||||||
|
|
||||||
provider._request.reset_mock()
|
provider._request.reset_mock()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user