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

AaaaRecord and CnameRecord should implement _DynamicMixin, fix validate params

This commit is contained in:
Ross McFarland
2018-12-03 14:54:22 -08:00
parent 303d0532c8
commit 0e0e995436
2 changed files with 20 additions and 26 deletions

View File

@@ -262,7 +262,7 @@ class _ValuesMixin(object):
except KeyError:
values = []
reasons.extend(cls._value_type.validate(values))
reasons.extend(cls._value_type.validate(values, cls))
return reasons
@@ -317,7 +317,7 @@ class _GeoMixin(_ValuesMixin):
# TODO: validate legal codes
for code, values in geo.items():
reasons.extend(GeoValue._validate_geo(code))
reasons.extend(cls._value_type.validate(values))
reasons.extend(cls._value_type.validate(values, cls))
except KeyError:
pass
return reasons
@@ -408,7 +408,7 @@ class _DynamicMixin(object):
reasons.append('missing pools')
else:
for pool in sorted(pools.values()):
reasons.extend(cls._value_type.validate(pool))
reasons.extend(cls._value_type.validate(pool, cls))
try:
rules = data['dynamic']['rules']
@@ -459,7 +459,7 @@ class _DynamicMixin(object):
class Ipv4List(object):
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
if len(data) == 0:
@@ -485,7 +485,7 @@ class Ipv4List(object):
class Ipv6List(object):
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
if len(data) == 0:
@@ -536,7 +536,7 @@ class ARecord(_DynamicMixin, _GeoMixin, Record):
_value_type = Ipv4List
class AaaaRecord(_GeoMixin, Record):
class AaaaRecord(_DynamicMixin, _GeoMixin, Record):
_type = 'AAAA'
_value_type = Ipv6List
@@ -554,7 +554,7 @@ class CaaValue(object):
# https://tools.ietf.org/html/rfc6844#page-5
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
reasons = []
@@ -605,7 +605,7 @@ class CaaRecord(_ValuesMixin, Record):
_value_type = CaaValue
class CnameRecord(_ValueMixin, Record):
class CnameRecord(_DynamicMixin, _ValueMixin, Record):
_type = 'CNAME'
_value_type = CnameValue
@@ -621,7 +621,7 @@ class CnameRecord(_ValueMixin, Record):
class MxValue(object):
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
reasons = []
@@ -689,7 +689,7 @@ class NaptrValue(object):
VALID_FLAGS = ('S', 'A', 'U', 'P')
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
reasons = []
@@ -774,7 +774,7 @@ class NaptrRecord(_ValuesMixin, Record):
class _NsValue(object):
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not data:
return ['missing value(s)']
elif not isinstance(data, (list, tuple)):
@@ -810,7 +810,7 @@ class SshfpValue(object):
VALID_FINGERPRINT_TYPES = (1, 2)
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
reasons = []
@@ -893,7 +893,7 @@ class _ChunkedValue(object):
_unescaped_semicolon_re = re.compile(r'\w;')
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not data:
return ['missing value(s)']
elif not isinstance(data, (list, tuple)):
@@ -922,7 +922,7 @@ class SpfRecord(_ChunkedValuesMixin, Record):
class SrvValue(object):
@classmethod
def validate(cls, data):
def validate(cls, data, record_cls):
if not isinstance(data, (list, tuple)):
data = (data,)
reasons = []

View File

@@ -32,14 +32,10 @@ a:
cname:
dynamic:
pools:
ams:
value: target-ams.unit.tests.
iad:
value: target-iad.unit.tests.
lax:
value: target-lax.unit.tests.
sea:
value: target-sea.unit.tests.
ams: target-ams.unit.tests.
iad: target-iad.unit.tests.
lax: target-lax.unit.tests.
sea: target-sea.unit.tests.
rules:
- geo: EU-UK
pools:
@@ -63,10 +59,8 @@ cname:
simple-weighted:
dynamic:
pools:
one:
value: one.unit.tests.
two:
value: two.unit.tests.
one: one.unit.tests.
two: two.unit.tests.
rules:
- pools:
100: one