summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-02-03 14:52:34 +0100
committerMartin Kosek <mkosek@redhat.com>2012-02-03 16:26:28 +0100
commit13c3867c90d3454d4bb7c43393437deec909718e (patch)
treedcf2b6ede316d16f4fac2b684e94aef2ec459172
parent4ae3a605de405a6d1aa736da420e5ce28fc31157 (diff)
downloadfreeipa.git-13c3867c90d3454d4bb7c43393437deec909718e.tar.gz
freeipa.git-13c3867c90d3454d4bb7c43393437deec909718e.tar.xz
freeipa.git-13c3867c90d3454d4bb7c43393437deec909718e.zip
Add data field for A6 record
Since A6 is an obsolete RR type, no DNS part option was created. This is, however, not consistent with the rest of per-type API and may cause problems. This patch adds at least a DNS part for raw A6 record data so that the record type is treated consistently. This patch also fixes interactive mode for A6 records. Their data were not detected correctly as dnsrecord_add didn't expect a number in DNS part option name. https://fedorahosted.org/freeipa/ticket/2309
-rw-r--r--API.txt9
-rw-r--r--VERSION2
-rw-r--r--ipalib/plugins/dns.py12
3 files changed, 17 insertions, 6 deletions
diff --git a/API.txt b/API.txt
index 8faf7607..d031039a 100644
--- a/API.txt
+++ b/API.txt
@@ -610,7 +610,7 @@ output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), None)
output: Output('result', <type 'bool'>, None)
output: Output('value', <type 'unicode'>, None)
command: dnsrecord_add
-args: 2,113,3
+args: 2,114,3
arg: Str('dnszoneidnsname', cli_name='dnszone', query=True, required=True)
arg: Str('idnsname', attribute=True, cli_name='name', multivalue=False, primary_key=True, required=True)
option: Int('dnsttl', attribute=True, cli_name='ttl', multivalue=False, required=False)
@@ -620,6 +620,7 @@ option: Str('a_part_ip_address', attribute=False, cli_name='a_ip_address', multi
option: AAAARecord('aaaarecord', attribute=True, cli_name='aaaa_rec', csv=True, multivalue=True, option_group=u'AAAA Record', required=False)
option: Str('aaaa_part_ip_address', attribute=False, cli_name='aaaa_ip_address', multivalue=False, option_group=u'AAAA Record', required=False)
option: A6Record('a6record', attribute=True, cli_name='a6_rec', csv=True, multivalue=True, option_group=u'A6 Record', required=False)
+option: Str('a6_part_data', attribute=False, cli_name='a6_data', multivalue=False, option_group=u'A6 Record', required=False)
option: AFSDBRecord('afsdbrecord', attribute=True, cli_name='afsdb_rec', csv=True, multivalue=True, option_group=u'AFSDB Record', required=False)
option: Int('afsdb_part_subtype', attribute=False, cli_name='afsdb_subtype', maxvalue=65535, minvalue=0, multivalue=False, option_group=u'AFSDB Record', required=False)
option: Str('afsdb_part_hostname', attribute=False, cli_name='afsdb_hostname', multivalue=False, option_group=u'AFSDB Record', required=False)
@@ -786,7 +787,7 @@ output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), None)
output: Output('result', <type 'dict'>, None)
output: Output('value', <type 'unicode'>, None)
command: dnsrecord_find
-args: 2,114,4
+args: 2,115,4
arg: Str('dnszoneidnsname', cli_name='dnszone', query=True, required=True)
arg: Str('criteria?', noextrawhitespace=False)
option: Str('idnsname', attribute=True, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False)
@@ -797,6 +798,7 @@ option: Str('a_part_ip_address', attribute=False, autofill=False, cli_name='a_ip
option: AAAARecord('aaaarecord', attribute=True, autofill=False, cli_name='aaaa_rec', csv=True, multivalue=True, option_group=u'AAAA Record', query=True, required=False)
option: Str('aaaa_part_ip_address', attribute=False, autofill=False, cli_name='aaaa_ip_address', multivalue=False, option_group=u'AAAA Record', query=True, required=False)
option: A6Record('a6record', attribute=True, autofill=False, cli_name='a6_rec', csv=True, multivalue=True, option_group=u'A6 Record', query=True, required=False)
+option: Str('a6_part_data', attribute=False, autofill=False, cli_name='a6_data', multivalue=False, option_group=u'A6 Record', query=True, required=False)
option: AFSDBRecord('afsdbrecord', attribute=True, autofill=False, cli_name='afsdb_rec', csv=True, multivalue=True, option_group=u'AFSDB Record', query=True, required=False)
option: Int('afsdb_part_subtype', attribute=False, autofill=False, cli_name='afsdb_subtype', maxvalue=65535, minvalue=0, multivalue=False, option_group=u'AFSDB Record', query=True, required=False)
option: Str('afsdb_part_hostname', attribute=False, autofill=False, cli_name='afsdb_hostname', multivalue=False, option_group=u'AFSDB Record', query=True, required=False)
@@ -908,7 +910,7 @@ output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list
output: Output('count', <type 'int'>, None)
output: Output('truncated', <type 'bool'>, None)
command: dnsrecord_mod
-args: 2,114,3
+args: 2,115,3
arg: Str('dnszoneidnsname', cli_name='dnszone', query=True, required=True)
arg: Str('idnsname', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True)
option: Int('dnsttl', attribute=True, autofill=False, cli_name='ttl', multivalue=False, required=False)
@@ -918,6 +920,7 @@ option: Str('a_part_ip_address', attribute=False, autofill=False, cli_name='a_ip
option: AAAARecord('aaaarecord', attribute=True, autofill=False, cli_name='aaaa_rec', csv=True, multivalue=True, option_group=u'AAAA Record', required=False)
option: Str('aaaa_part_ip_address', attribute=False, autofill=False, cli_name='aaaa_ip_address', multivalue=False, option_group=u'AAAA Record', required=False)
option: A6Record('a6record', attribute=True, autofill=False, cli_name='a6_rec', csv=True, multivalue=True, option_group=u'A6 Record', required=False)
+option: Str('a6_part_data', attribute=False, autofill=False, cli_name='a6_data', multivalue=False, option_group=u'A6 Record', required=False)
option: AFSDBRecord('afsdbrecord', attribute=True, autofill=False, cli_name='afsdb_rec', csv=True, multivalue=True, option_group=u'AFSDB Record', required=False)
option: Int('afsdb_part_subtype', attribute=False, autofill=False, cli_name='afsdb_subtype', maxvalue=65535, minvalue=0, multivalue=False, option_group=u'AFSDB Record', required=False)
option: Str('afsdb_part_hostname', attribute=False, autofill=False, cli_name='afsdb_hostname', multivalue=False, option_group=u'AFSDB Record', required=False)
diff --git a/VERSION b/VERSION
index 3f6a25f5..ff7e52c9 100644
--- a/VERSION
+++ b/VERSION
@@ -79,4 +79,4 @@ IPA_DATA_VERSION=20100614120000
# #
########################################################
IPA_API_VERSION_MAJOR=2
-IPA_API_VERSION_MINOR=23
+IPA_API_VERSION_MINOR=24
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index a975d4db..8a3bc5ed 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -466,7 +466,15 @@ class ARecord(DNSRecord):
class A6Record(DNSRecord):
rrtype = 'A6'
rfc = 3226
- parts = None # experimental rr type
+ parts = (
+ Str('data',
+ label=_('Record data'),
+ ),
+ )
+
+ def _get_part_values(self, value):
+ # A6 RR type is obsolete and only a raw interface is provided
+ return (value,)
class AAAARecord(DNSRecord):
rrtype = 'AAAA'
@@ -1639,7 +1647,7 @@ class dnsrecord_add(LDAPCreate):
# check if any record part was added
for option in options:
- option_part_re = re.match(r'([a-z]+)_part_', option)
+ option_part_re = re.match(r'([a-z0-9]+)_part_', option)
if option_part_re is not None:
record_option = self.obj.get_record_option(option_part_re.group(1))