Browse Source

Escape unescaped semicolons coming out of Route53

pull/59/head
Ross McFarland 9 years ago
parent
commit
dd0042c6ff
2 changed files with 24 additions and 1 deletions
  1. +4
    -1
      octodns/provider/route53.py
  2. +20
    -0
      tests/test_octodns_provider_route53.py

+ 4
- 1
octodns/provider/route53.py View File

@ -253,10 +253,13 @@ class Route53Provider(BaseProvider):
_data_for_PTR = _data_for_single
_data_for_CNAME = _data_for_single
_fix_semicolons = re.compile(r'(?<!\\);')
def _data_for_quoted(self, rrset):
return {
'type': rrset['Type'],
'values': [rr['Value'][1:-1] for rr in rrset['ResourceRecords']],
'values': [self._fix_semicolons.sub('\;', rr['Value'][1:-1])
for rr in rrset['ResourceRecords']],
'ttl': int(rrset['TTL'])
}


+ 20
- 0
tests/test_octodns_provider_route53.py View File

@ -1217,3 +1217,23 @@ class TestRoute53Provider(TestCase):
with self.assertRaises(Exception) as ctx:
provider.apply(plan)
self.assertTrue('modifications' in ctx.exception.message)
def test_semicolon_fixup(self):
provider = Route53Provider('test', 'abc', '123')
self.assertEquals({
'type': 'TXT',
'ttl': 30,
'values': [
'abcd\\; ef\\;g',
'hij\\; klm\\;n',
],
}, provider._data_for_quoted({
'ResourceRecords': [{
'Value': '"abcd; ef;g"',
}, {
'Value': '"hij\\; klm\\;n"',
}],
'TTL': 30,
'Type': 'TXT',
}))

Loading…
Cancel
Save