diff options
author | Martin Basti <mbasti@redhat.com> | 2014-04-11 14:14:37 +0200 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2014-06-03 15:55:32 +0200 |
commit | a4d3d01f3f89c40c5ff18dafdecf88422effc447 (patch) | |
tree | 2691f4ab54bb8c8a9a02e4e61aa058c2958d9286 /ipalib | |
parent | b964d2130a15d7b1561c66c721e3257ce0d24305 (diff) | |
download | freeipa-a4d3d01f3f89c40c5ff18dafdecf88422effc447.tar.gz freeipa-a4d3d01f3f89c40c5ff18dafdecf88422effc447.tar.xz freeipa-a4d3d01f3f89c40c5ff18dafdecf88422effc447.zip |
Modified records and zone parameters to use DNSNameParam
* Zone is stored as an absolute name (ipa never support relative
* zonenames)
* compatible with relative zone names as was before
* PTR target can be relative domain name
Part of ticket:
IPA should allow internationalized domain names
https://fedorahosted.org/freeipa/ticket/3169
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/plugins/dns.py | 47 |
1 files changed, 19 insertions, 28 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index 13f10ed65..5fcc309da 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -31,7 +31,7 @@ from ipalib.request import context from ipalib import api, errors, output from ipalib import Command from ipalib.parameters import (Flag, Bool, Int, Decimal, Str, StrEnum, Any, - DeprecatedParam) + DeprecatedParam, DNSNameParam) from ipalib.plugins.baseldap import * from ipalib import _, ngettext from ipalib.util import (validate_zonemgr, normalize_zonemgr, @@ -907,8 +907,7 @@ class AFSDBRecord(DNSRecord): minvalue=0, maxvalue=65535, ), - Str('hostname', - _bind_hostname_validator, + DNSNameParam('hostname', label=_('Hostname'), ), ) @@ -946,8 +945,7 @@ class CNAMERecord(DNSRecord): rrtype = 'CNAME' rfc = 1035 parts = ( - Str('hostname', - _bind_cname_hostname_validator, + DNSNameParam('hostname', label=_('Hostname'), doc=_('A hostname which this alias hostname points to'), ), @@ -967,8 +965,7 @@ class DNAMERecord(DNSRecord): rrtype = 'DNAME' rfc = 2672 parts = ( - Str('target', - _bind_cname_hostname_validator, + DNSNameParam('target', label=_('Target'), ), ) @@ -1046,8 +1043,7 @@ class KXRecord(DNSRecord): minvalue=0, maxvalue=65535, ), - Str('exchanger', - _bind_hostname_validator, + DNSNameParam('exchanger', label=_('Exchanger'), doc=_('A host willing to act as a key exchanger'), ), @@ -1192,8 +1188,7 @@ class MXRecord(DNSRecord): minvalue=0, maxvalue=65535, ), - Str('exchanger', - _bind_hostname_validator, + DNSNameParam('exchanger', label=_('Exchanger'), doc=_('A host willing to act as a mail exchanger'), ), @@ -1204,8 +1199,7 @@ class NSRecord(DNSRecord): rfc = 1035 parts = ( - Str('hostname', - _bind_hostname_validator, + DNSNameParam('hostname', label=_('Hostname'), ), ) @@ -1218,8 +1212,7 @@ class NSECRecord(DNSRecord): _allowed_types = (u'SOA',) + _record_types parts = ( - Str('next', - _bind_hostname_validator, + DNSNameParam('next', label=_('Next Domain Name'), ), StrEnum('types+', @@ -1300,9 +1293,9 @@ class PTRRecord(DNSRecord): rrtype = 'PTR' rfc = 1035 parts = ( - Str('hostname', + DNSNameParam('hostname', _hostname_validator, - normalizer=_normalize_hostname, + only_absolute=True, label=_('Hostname'), doc=_('The hostname this reverse record points to'), ), @@ -1332,8 +1325,7 @@ class SRVRecord(DNSRecord): minvalue=0, maxvalue=65535, ), - Str('target', - _srv_target_validator, + DNSNameParam('target', label=_('Target'), doc=_('The domain name of the target host or \'.\' if the service is decidedly not available at this domain'), ), @@ -1564,13 +1556,12 @@ class dnszone(LDAPObject): label_singular = _('DNS Zone') takes_params = ( - Str('idnsname', - _domain_name_validator, + DNSNameParam('idnsname', + only_absolute=True, cli_name='name', label=_('Zone name'), doc=_('Zone name (FQDN)'), default_from=lambda name_from_ip: _reverse_zone_name(name_from_ip), - normalizer=lambda value: value.lower(), primary_key=True, ), Str('name_from_ip?', _validate_ipnet, @@ -1578,18 +1569,19 @@ class dnszone(LDAPObject): doc=_('IP network to create reverse zone name from'), flags=('virtual_attribute',), ), - Str('idnssoamname', + DNSNameParam('idnssoamname', cli_name='name_server', label=_('Authoritative nameserver'), doc=_('Authoritative nameserver domain name'), - normalizer=lambda value: value.lower(), ), - Str('idnssoarname', + DNSNameParam('idnssoarname', _rname_validator, + only_absolute=True, cli_name='admin_email', label=_('Administrator e-mail address'), doc=_('Administrator e-mail address'), - default_from=lambda idnsname: 'hostmaster.%s' % idnsname, + default_from=lambda idnsname: + DNSName(('hostmaster')).derelativize(idnsname), normalizer=normalize_zonemgr, ), Int('idnssoaserial', @@ -2123,8 +2115,7 @@ class dnsrecord(LDAPObject): label_singular = _('DNS Resource Record') takes_params = ( - Str('idnsname', - _dns_record_name_validator, + DNSNameParam('idnsname', cli_name='name', label=_('Record name'), doc=_('Record name'), |