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

RackSpace does not escape ;.

This commit is contained in:
Terrence Cole
2017-07-13 15:10:33 -07:00
parent b911fac90e
commit 057f50621e

View File

@@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function, \
from requests import HTTPError, Session, post from requests import HTTPError, Session, post
from collections import defaultdict from collections import defaultdict
import logging import logging
import string
from ..record import Create, Record from ..record import Create, Record
from .base import BaseProvider from .base import BaseProvider
@@ -39,6 +40,16 @@ def add_quotes(s):
return '"{}"'.format(s) return '"{}"'.format(s)
def escape_semicolon(s):
assert s
return string.replace(s, ';', '\;')
def unescape_semicolon(s):
assert s
return string.replace(s, '\;', ';')
class RackspaceProvider(BaseProvider): class RackspaceProvider(BaseProvider):
SUPPORTS_GEO = False SUPPORTS_GEO = False
TIMEOUT = 5 TIMEOUT = 5
@@ -162,15 +173,15 @@ class RackspaceProvider(BaseProvider):
_data_for_CNAME = _data_for_single _data_for_CNAME = _data_for_single
_data_for_PTR = _data_for_single _data_for_PTR = _data_for_single
# def _data_for_quoted(self, rrset): def _data_for_textual(self, rrset):
# return { return {
# 'type': rrset[0]['type'], 'type': rrset[0]['type'],
# 'values': [strip_quotes(r['data']) for r in rrset], 'values': [escape_semicolon(r['data']) for r in rrset],
# 'ttl': rrset[0]['ttl'] 'ttl': rrset[0]['ttl']
# } }
_data_for_SPF = _data_for_multiple _data_for_SPF = _data_for_textual
_data_for_TXT = _data_for_multiple _data_for_TXT = _data_for_textual
def _data_for_MX(self, rrset): def _data_for_MX(self, rrset):
values = [] values = []
@@ -304,17 +315,16 @@ class RackspaceProvider(BaseProvider):
_record_for_CNAME = _record_for_named _record_for_CNAME = _record_for_named
_record_for_PTR = _record_for_named _record_for_PTR = _record_for_named
# @staticmethod @staticmethod
# def _record_for_quoted(record, value): def _record_for_textual(record, value):
# return { return {
# 'name': record.fqdn, 'name': record.fqdn,
# 'type': record._type, 'type': record._type,
# 'data': add_quotes(value), 'data': unescape_semicolon(value),
# 'ttl': max(record.ttl, 300), 'ttl': max(record.ttl, 300),
# } }
_record_for_SPF = _record_for_textual
_record_for_SPF = _record_for_single _record_for_TXT = _record_for_textual
_record_for_TXT = _record_for_single
@staticmethod @staticmethod
def _record_for_MX(record, value): def _record_for_MX(record, value):