diff --git a/octodns/record/__init__.py b/octodns/record/__init__.py index e4efcc8..6245812 100644 --- a/octodns/record/__init__.py +++ b/octodns/record/__init__.py @@ -1735,7 +1735,8 @@ class NaptrRecord(ValuesMixin, Record): Record.register_type(NaptrRecord) -class _NsValue(str): +# much like _TargetValue, but geared towards multiple values +class _TargetsValue(str): @classmethod def parse_rdata_text(cls, value): return value @@ -1751,10 +1752,10 @@ class _NsValue(str): value = idna_encode(value) if not FQDN(value, allow_underscores=True).is_valid: reasons.append( - f'Invalid NS value "{value}" is not a valid FQDN.' + f'Invalid {_type} value "{value}" is not a valid FQDN.' ) elif not value.endswith('.'): - reasons.append(f'NS value "{value}" missing trailing .') + reasons.append(f'{_type} value "{value}" missing trailing .') return reasons @classmethod @@ -1770,6 +1771,10 @@ class _NsValue(str): return self +class _NsValue(_TargetsValue): + pass + + class NsRecord(ValuesMixin, Record): _type = 'NS' _value_type = _NsValue @@ -1778,39 +1783,8 @@ class NsRecord(ValuesMixin, Record): Record.register_type(NsRecord) -class PtrValue(str): - @classmethod - def parse_rdata_text(self, value): - return value - - @classmethod - def validate(cls, data, _type): - if not data: - return ['missing value(s)'] - elif not isinstance(data, (list, tuple)): - data = (data,) - reasons = [] - for value in data: - value = idna_encode(value) - if not FQDN(value, allow_underscores=True).is_valid: - reasons.append( - f'Invalid PTR value "{value}" is not a valid FQDN.' - ) - elif not value.endswith('.'): - reasons.append(f'PTR value "{value}" missing trailing .') - return reasons - - @classmethod - def process(cls, values): - return [cls(v) for v in values] - - def __new__(cls, v): - v = idna_encode(v) - return super().__new__(cls, v) - - @property - def rdata_text(self): - return self +class PtrValue(_TargetsValue): + pass class PtrRecord(ValuesMixin, Record):