[Freeipa-users] Optionistic approach for new DNS API

Dmitri Pal dpal at redhat.com
Wed Dec 14 22:01:57 UTC 2011


On 12/14/2011 04:41 PM, Martin Kosek wrote:
> Hello all,
>
> we just had a good discussion with Rob and Endi about different approach
> to the new DNS API. Current DNS API proposal (patches 174-176)
> introduced new API based on different commands, e.g. for MX RR type:
>
> ipa dnsrecord-mx-add ZONE NAME --preference=0 --exchanger=server1.example.com.
> ipa dnsrecord-mx-mod ZONE NAME "0 server1.example.com." --preference=1
> ipa dnsrecord-mx-show ZONE NAME
>
> As a side effect, this would introduce many new commands
> (dnsrecord-mx-add/mod/show, dnsrecord-loc-add/mod/show, ...) which may
> of course be confusing.
>
> Endi proposed an different approach to use rather per-type options
> instead of commands, which I think is really interesting to think about.
> I will summarize how the API may look like.
>
> Changes to DNS module commands:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> - no new DNS command would be implemented, we would just enhance current
> dns record commands:
>   * dnsrecord-add, dnsrecord-mod, dnsrecord-del and dnsrecord-find
> - all changes must be compatible with 2.x clients, changes to output
> shall be triggered by 3.x option
>
> Command Structure:
> ~~~~~~~~~~~~~~~~~~
> - we would introduce --type option which would trigger the command to
> use the new structured DNS options, i.e.:
>
> ipa dnsrecord-add ZONE NAME --type=mx --preference=0 --exchanger=server1.example.com.
>
> or
>
> ipa dnsrecord-mod ZONE NAME VALUE? --type=mx --preference=0
>
> or
>
> ipa dnsrecord-del ZONE NAME --type=mx --preference=0 --exchanger=server1.example.com.
>
> - SHOW and FIND commands do not need this new --type parameter
>
>
> Command Output:
> ~~~~~~~~~~~~~~~
> - we would introduce a new --structured option which would switch
> command output to "structured way" and present rather parsed DNS records
> instead of raw DNS values (this is also needed for 2.x compatibility).
>
> For JSON output we may get:
>
> {
>      idnsname: 'foo',
>      records: [
>          {
>              type: 'a',
>              data: '10.10.10.10',
>              ip_address: '10.10.10.10'
>          },
>          {
>              type: 'cname',
>              data: 'bar.example.com.',
>              hostname: 'bar.example.com.'
>          },
>          {
>              type: 'cname',
>              data: 'bar2.example.com.',
>              hostname: 'bar2.example.com.'
>          },
>      ]
> }
>
> instead of
>
> {
>      idnsname: 'foo',
>      arecord: [
>          '10.10.10.10'
>      ],
>      cnamerecord: [
>          'bar.example.com.',
>          'bar2.example.com.'
>      ]
> }
>
> In CLI it may look like this:
> # ipa dnsrecordmx-show example.com @ --structured

dnsrecordmx? I assume it is a typo, right?


>   Record name: @
>     Record type: MX
>     Data: 0 server1.example.com
>     Preference: 0
>     Exchanger: server1.example.com
>
>     Record type: NS
>     Data: vm-068.idm.lab.bos.redhat.com.
>     Hostname: vm-068.idm.lab.bos.redhat.com.
>
> instead of:
>
> # ipa dnsrecord-show example.com @
>   Record name: @
>   MX record: 0 server1.example.com
>   NS record: vm-068.idm.lab.bos.redhat.com.
>
> Command help:
> ~~~~~~~~~~~~~
> - since dnsrecord-add would accept all options from all DNS RR types,
> its list would be overwhelming and not very helpful
> - we can take advantage of OptionParser option groups. The help may look
> like this:
>
> $ ipa dnsrecord-add --help
> Usage: ipa [global-options] dnsrecord-add DNSZONE NAME [options]
>
> Options:
>   -h, --help  show this help message and exit
>
> SRV Options:
>  --priority   Priority
>  --weight     Weight
>  --port       Port
>  --target     Target
>
> MX Options:
>  --priority   Priority
>  --exchanger  A host willing to act as a mail exchanger
> ...
>
> Interactive mode in CLI:
> ~~~~~~~~~~~~~~~~~~~~~~~~
> - ADD command:
>   - when no option is passed to dnsrecord-add command, it may ask for
> --type and then for the options specific for the particular type
> - MOD command:
>   - when no option is passed to dnsrecord-mod command, it may provide a
> list of current DNS record values and ask for specific DNS record parts
> to be changed for chosen value
> - DEL command:
>   - when no option is passed to dnsrecord-del command, it may provide a
> list of current DNS record values remove the chosen value
>
> Any comments, suggestions? Do you think that introducing these new
> options in current dnsrecord-add/mod/show/del commands would be better
> and more usable that introducing these capabilities in separate
> commands?
>
> Thanks,
> Martin
>
> _______________________________________________
> Freeipa-users mailing list
> Freeipa-users at redhat.com
> https://www.redhat.com/mailman/listinfo/freeipa-users


-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager IPA project,
Red Hat Inc.


-------------------------------
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/






More information about the Freeipa-users mailing list