mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Move _process_value to cls.process on Value types
This commit is contained in:
+47
-43
@@ -272,7 +272,7 @@ class _ValuesMixin(object):
|
||||
values = data['values']
|
||||
except KeyError:
|
||||
values = [data['value']]
|
||||
self.values = sorted(self._process_values(values))
|
||||
self.values = sorted(self._value_type.process(values))
|
||||
|
||||
def changes(self, other, target):
|
||||
if self.values != other.values:
|
||||
@@ -371,7 +371,7 @@ class _ValueMixin(object):
|
||||
|
||||
def __init__(self, zone, name, data, source=None):
|
||||
super(_ValueMixin, self).__init__(zone, name, data, source=source)
|
||||
self.value = self._process_value(data['value'])
|
||||
self.value = self._value_type.process(data['value'])
|
||||
|
||||
def changes(self, other, target):
|
||||
if self.value != other.value:
|
||||
@@ -434,6 +434,10 @@ class Ipv4List(object):
|
||||
reasons.append('invalid IPv4 address "{}"'.format(value))
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return values
|
||||
|
||||
|
||||
class Ipv6List(object):
|
||||
|
||||
@@ -456,6 +460,10 @@ class Ipv6List(object):
|
||||
reasons.append('invalid IPv6 address "{}"'.format(value))
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return values
|
||||
|
||||
|
||||
class _TargetValue(object):
|
||||
|
||||
@@ -471,6 +479,10 @@ class _TargetValue(object):
|
||||
.format(record_cls._type, data))
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(self, value):
|
||||
return value
|
||||
|
||||
|
||||
class CnameValue(_TargetValue):
|
||||
pass
|
||||
@@ -480,17 +492,11 @@ class ARecord(_DynamicMixin, _GeoMixin, Record):
|
||||
_type = 'A'
|
||||
_value_type = Ipv4List
|
||||
|
||||
def _process_values(self, values):
|
||||
return values
|
||||
|
||||
|
||||
class AaaaRecord(_GeoMixin, Record):
|
||||
_type = 'AAAA'
|
||||
_value_type = Ipv6List
|
||||
|
||||
def _process_values(self, values):
|
||||
return values
|
||||
|
||||
|
||||
class AliasValue(_TargetValue):
|
||||
pass
|
||||
@@ -500,9 +506,6 @@ class AliasRecord(_ValueMixin, Record):
|
||||
_type = 'ALIAS'
|
||||
_value_type = AliasValue
|
||||
|
||||
def _process_value(self, value):
|
||||
return value
|
||||
|
||||
|
||||
class CaaValue(object):
|
||||
# https://tools.ietf.org/html/rfc6844#page-5
|
||||
@@ -526,6 +529,10 @@ class CaaValue(object):
|
||||
reasons.append('missing value')
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return [CaaValue(v) for v in values]
|
||||
|
||||
def __init__(self, value):
|
||||
self.flags = int(value.get('flags', 0))
|
||||
self.tag = value['tag']
|
||||
@@ -554,9 +561,6 @@ class CaaRecord(_ValuesMixin, Record):
|
||||
_type = 'CAA'
|
||||
_value_type = CaaValue
|
||||
|
||||
def _process_values(self, values):
|
||||
return [CaaValue(v) for v in values]
|
||||
|
||||
|
||||
class CnameRecord(_ValueMixin, Record):
|
||||
_type = 'CNAME'
|
||||
@@ -570,9 +574,6 @@ class CnameRecord(_ValueMixin, Record):
|
||||
reasons.extend(super(CnameRecord, cls).validate(name, data))
|
||||
return reasons
|
||||
|
||||
def _process_value(self, value):
|
||||
return value
|
||||
|
||||
|
||||
class MxValue(object):
|
||||
|
||||
@@ -602,6 +603,10 @@ class MxValue(object):
|
||||
reasons.append('missing exchange')
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return [MxValue(v) for v in values]
|
||||
|
||||
def __init__(self, value):
|
||||
# RFC1035 says preference, half the providers use priority
|
||||
try:
|
||||
@@ -636,9 +641,6 @@ class MxRecord(_ValuesMixin, Record):
|
||||
_type = 'MX'
|
||||
_value_type = MxValue
|
||||
|
||||
def _process_values(self, values):
|
||||
return [MxValue(v) for v in values]
|
||||
|
||||
|
||||
class NaptrValue(object):
|
||||
VALID_FLAGS = ('S', 'A', 'U', 'P')
|
||||
@@ -676,6 +678,10 @@ class NaptrValue(object):
|
||||
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return [NaptrValue(v) for v in values]
|
||||
|
||||
def __init__(self, value):
|
||||
self.order = int(value['order'])
|
||||
self.preference = int(value['preference'])
|
||||
@@ -721,9 +727,6 @@ class NaptrRecord(_ValuesMixin, Record):
|
||||
_type = 'NAPTR'
|
||||
_value_type = NaptrValue
|
||||
|
||||
def _process_values(self, values):
|
||||
return [NaptrValue(v) for v in values]
|
||||
|
||||
|
||||
class _NsValue(object):
|
||||
|
||||
@@ -740,14 +743,15 @@ class _NsValue(object):
|
||||
.format(value))
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return values
|
||||
|
||||
|
||||
class NsRecord(_ValuesMixin, Record):
|
||||
_type = 'NS'
|
||||
_value_type = _NsValue
|
||||
|
||||
def _process_values(self, values):
|
||||
return values
|
||||
|
||||
|
||||
class PtrValue(_TargetValue):
|
||||
pass
|
||||
@@ -757,9 +761,6 @@ class PtrRecord(_ValueMixin, Record):
|
||||
_type = 'PTR'
|
||||
_value_type = PtrValue
|
||||
|
||||
def _process_value(self, value):
|
||||
return value
|
||||
|
||||
|
||||
class SshfpValue(object):
|
||||
VALID_ALGORITHMS = (1, 2, 3, 4)
|
||||
@@ -795,6 +796,10 @@ class SshfpValue(object):
|
||||
reasons.append('missing fingerprint')
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return [SshfpValue(v) for v in values]
|
||||
|
||||
def __init__(self, value):
|
||||
self.algorithm = int(value['algorithm'])
|
||||
self.fingerprint_type = int(value['fingerprint_type'])
|
||||
@@ -824,22 +829,11 @@ class SshfpRecord(_ValuesMixin, Record):
|
||||
_type = 'SSHFP'
|
||||
_value_type = SshfpValue
|
||||
|
||||
def _process_values(self, values):
|
||||
return [SshfpValue(v) for v in values]
|
||||
|
||||
|
||||
class _ChunkedValuesMixin(_ValuesMixin):
|
||||
CHUNK_SIZE = 255
|
||||
_unescaped_semicolon_re = re.compile(r'\w;')
|
||||
|
||||
def _process_values(self, values):
|
||||
ret = []
|
||||
for v in values:
|
||||
if v and v[0] == '"':
|
||||
v = v[1:-1]
|
||||
ret.append(v.replace('" "', ''))
|
||||
return ret
|
||||
|
||||
@property
|
||||
def chunked_values(self):
|
||||
values = []
|
||||
@@ -867,6 +861,15 @@ class _ChunkedValue(object):
|
||||
reasons.append('unescaped ; in "{}"'.format(value))
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
ret = []
|
||||
for v in values:
|
||||
if v and v[0] == '"':
|
||||
v = v[1:-1]
|
||||
ret.append(v.replace('" "', ''))
|
||||
return ret
|
||||
|
||||
|
||||
class SpfRecord(_ChunkedValuesMixin, Record):
|
||||
_type = 'SPF'
|
||||
@@ -909,6 +912,10 @@ class SrvValue(object):
|
||||
reasons.append('missing target')
|
||||
return reasons
|
||||
|
||||
@classmethod
|
||||
def process(cls, values):
|
||||
return [SrvValue(v) for v in values]
|
||||
|
||||
def __init__(self, value):
|
||||
self.priority = int(value['priority'])
|
||||
self.weight = int(value['weight'])
|
||||
@@ -951,9 +958,6 @@ class SrvRecord(_ValuesMixin, Record):
|
||||
reasons.extend(super(SrvRecord, cls).validate(name, data))
|
||||
return reasons
|
||||
|
||||
def _process_values(self, values):
|
||||
return [SrvValue(v) for v in values]
|
||||
|
||||
|
||||
class _TxtValue(_ChunkedValue):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user