On Wed, Jan 26, 2011 at 11:25:03AM -0500, Rob Crittenden wrote:
> Jakub Hrozek wrote:
> >-----BEGIN PGP SIGNED MESSAGE-----
> >Hash: SHA1
> >
> >On 01/26/2011 03:38 PM, Jakub Hrozek wrote:
> >>https://fedorahosted.org/freeipa/ticket/846
> >
> >This version contains a better example (consistent zone name).
> 
> This requires a change to API.txt too, otherwise the patch looks good.
> 
> rob

Thanks for catching this. I still wonder why I was able to run make rpms
which in turn runs makeapi --validate.

A new patch is attached.
>From af17c43e77cab88ec001f4bd94c3002bd7a4494d Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhro...@redhat.com>
Date: Wed, 26 Jan 2011 09:31:50 -0500
Subject: [PATCH] Add example of DNS SRV record and a simple validator

https://fedorahosted.org/freeipa/ticket/846
---
 API.txt               |    8 ++++----
 ipalib/plugins/dns.py |   23 +++++++++++++++++++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/API.txt b/API.txt
index c9a56f6..8e30a7e 100644
--- a/API.txt
+++ b/API.txt
@@ -522,7 +522,7 @@ option: List('rrsigrecord?', attribute=True, 
cli_name='rrsig_rec',ist('rrsigreco
 option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', 
attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', 
label='RP record', multivalue=True)
 option: List('sigrecord?', attribute=True, 
cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', 
doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
 option: List('spfrecord?', attribute=True, 
cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', 
doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
-option: List('srvrecord?', attribute=True, 
cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', 
doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec',ist('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV 
record', multivalue=True)
 option: List('sshfprecord?', attribute=True, 
cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', 
doc='comma-separated list of SSHFP records', label='SSHFP record', 
multivalue=True)
 option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', 
attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', 
label='TA record', multivalue=True)
 option: List('tkeyrecord?', attribute=True, 
cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', 
doc='comma-separated list of TKEY records', label='TKEY record', 
multivalue=True)
@@ -570,7 +570,7 @@ option: List('rrsigrecord?', attribute=True, 
cli_name='rrsig_rec',ist('rrsigreco
 option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', 
attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', 
label='RP record', multivalue=True)
 option: List('sigrecord?', attribute=True, 
cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', 
doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
 option: List('spfrecord?', attribute=True, 
cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', 
doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
-option: List('srvrecord?', attribute=True, 
cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', 
doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec',ist('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV 
record', multivalue=True)
 option: List('sshfprecord?', attribute=True, 
cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', 
doc='comma-separated list of SSHFP records', label='SSHFP record', 
multivalue=True)
 option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', 
attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', 
label='TA record', multivalue=True)
 option: List('tkeyrecord?', attribute=True, 
cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', 
doc='comma-separated list of TKEY records', label='TKEY record', 
multivalue=True)
@@ -619,7 +619,7 @@ option: List('rrsigrecord?', attribute=True, 
cli_name='rrsig_rec',ist('rrsigreco
 option: List('rprecord?', attribute=True, cli_name='rp_rec',ist('rprecord?', 
attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', 
label='RP record', multivalue=True)
 option: List('sigrecord?', attribute=True, 
cli_name='sig_rec',ist('sigrecord?', attribute=True, cli_name='sig_rec', 
doc='comma-separated list of SIG records', label='SIG record', multivalue=True)
 option: List('spfrecord?', attribute=True, 
cli_name='spf_rec',ist('spfrecord?', attribute=True, cli_name='spf_rec', 
doc='comma-separated list of SPF records', label='SPF record', multivalue=True)
-option: List('srvrecord?', attribute=True, 
cli_name='srv_rec',ist('srvrecord?', attribute=True, cli_name='srv_rec', 
doc='comma-separated list of SRV records', label='SRV record', multivalue=True)
+option: List('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec',ist('srvrecord?', _validate_srv, attribute=True, 
cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV 
record', multivalue=True)
 option: List('sshfprecord?', attribute=True, 
cli_name='sshfp_rec',ist('sshfprecord?', attribute=True, cli_name='sshfp_rec', 
doc='comma-separated list of SSHFP records', label='SSHFP record', 
multivalue=True)
 option: List('tarecord?', attribute=True, cli_name='ta_rec',ist('tarecord?', 
attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', 
label='TA record', multivalue=True)
 option: List('tkeyrecord?', attribute=True, 
cli_name='tkey_rec',ist('tkeyrecord?', attribute=True, cli_name='tkey_rec', 
doc='comma-separated list of TKEY records', label='TKEY record', 
multivalue=True)
@@ -680,7 +680,7 @@ option: List('rrsigrecord', attribute=True, 
cli_name='rrsig_rec',ist('rrsigrecor
 option: List('rprecord', attribute=True, cli_name='rp_rec',ist('rprecord', 
attribute=True, cli_name='rp_rec', doc='comma-separated list of RP records', 
label='RP record', multivalue=True, query=True, required=False)
 option: List('sigrecord', attribute=True, cli_name='sig_rec',ist('sigrecord', 
attribute=True, cli_name='sig_rec', doc='comma-separated list of SIG records', 
label='SIG record', multivalue=True, query=True, required=False)
 option: List('spfrecord', attribute=True, cli_name='spf_rec',ist('spfrecord', 
attribute=True, cli_name='spf_rec', doc='comma-separated list of SPF records', 
label='SPF record', multivalue=True, query=True, required=False)
-option: List('srvrecord', attribute=True, cli_name='srv_rec',ist('srvrecord', 
attribute=True, cli_name='srv_rec', doc='comma-separated list of SRV records', 
label='SRV record', multivalue=True, query=True, required=False)
+option: List('srvrecord', _validate_srv, attribute=True, 
cli_name='srv_rec',ist('srvrecord', _validate_srv, attribute=True, 
cli_name='srv_rec', doc='comma-separated list of SRV records', label='SRV 
record', multivalue=True, query=True, required=False)
 option: List('sshfprecord', attribute=True, 
cli_name='sshfp_rec',ist('sshfprecord', attribute=True, cli_name='sshfp_rec', 
doc='comma-separated list of SSHFP records', label='SSHFP record', 
multivalue=True, query=True, required=False)
 option: List('tarecord', attribute=True, cli_name='ta_rec',ist('tarecord', 
attribute=True, cli_name='ta_rec', doc='comma-separated list of TA records', 
label='TA record', multivalue=True, query=True, required=False)
 option: List('tkeyrecord', attribute=True, 
cli_name='tkey_rec',ist('tkeyrecord', attribute=True, cli_name='tkey_rec', 
doc='comma-separated list of TKEY records', label='TKEY record', 
multivalue=True, query=True, required=False)
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index 5b5411f..69ae1aa 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -39,6 +39,13 @@ EXAMPLES:
  Add new PTR record for www.example.com
    ipa dnsrecord-add 15.142.80.in-addr.arpa 2 --ptr-rec www.example.com.
 
+ Add new SRV records for LDAP servers. Three quarters of the requests
+ should go to fast.example.com, one quarter to slow.example.com. If neither
+ is available, switch to backup.example.com.
+   ipa dnsrecord-add example.com _ldap._tcp --srv-rec="0 3 389 
fast.example.com"
+   ipa dnsrecord-add example.com _ldap._tcp --srv-rec="0 1 389 
slow.example.com"
+   ipa dnsrecord-add example.com _ldap._tcp --srv-rec="1 1 389 
backup.example.com"
+
  Show zone example.com:
    ipa dnszone-show example.com
 
@@ -114,10 +121,26 @@ def _validate_ipnet(ugettext, ipnet):
         return u'invalid format'
     return None
 
+def _validate_srv(ugettext, srv):
+    try:
+        prio, weight, port, host = srv.split()
+    except ValueError:
+        return u'format must be specified as "priority weight port target"'
+
+    try:
+        prio = int(prio)
+        weight = int(weight)
+        port = int(port)
+    except ValueError:
+        return u'the values of priority, weight and port must be integers'
+
+    return None
+
 _record_validators = {
     u'A': _validate_ipaddr,
     u'AAAA': _validate_ipaddr,
     u'APL': _validate_ipnet,
+    u'SRV': _validate_srv,
 }
 
 
-- 
1.7.3.4

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to