diff --git a/octodns/provider/azuredns.py b/octodns/provider/azuredns.py index b3bff6c..2554a01 100644 --- a/octodns/provider/azuredns.py +++ b/octodns/provider/azuredns.py @@ -18,6 +18,16 @@ from ..record import Record from .base import BaseProvider +def escape_semicolon(s): + assert s + return s.replace(';', '\\;') + + +def unescape_semicolon(s): + assert s + return s.replace('\\;', ';') + + class _AzureRecord(object): '''Wrapper for OctoDNS record for AzureProvider to make dns_client calls. @@ -123,9 +133,9 @@ class _AzureRecord(object): def _params_for_TXT(self, data, key_name, azure_class): try: # API for TxtRecord has list of str, even for singleton - values = data['values'] + values = [unescape_semicolon(v) for v in data['values']] except KeyError: - values = [data['value']] + values = [unescape_semicolon(data['value'])] return {key_name: [azure_class([v]) for v in values]} def _equals(self, b): @@ -394,7 +404,8 @@ class AzureProvider(BaseProvider): for ar in azrecord.srv_records]} def _data_for_TXT(self, azrecord): - return {'values': [reduce((lambda a, b: a + b), ar.value) + return {'values': [escape_semicolon(reduce((lambda a, b: a + b), + ar.value)) for ar in azrecord.txt_records]} def _apply_Create(self, change):