#1766 Design per record type interface for DNS records
Closed: Fixed None Opened 12 years ago by dpal.

No Description Provided


The new API has been discussed on freeipa-devel mailing list thread:

http://www.redhat.com/archives/freeipa-devel/2011-September/msg00154.html

This summary from the discussion was posted here:

http://www.redhat.com/archives/freeipa-devel/2011-September/msg00302.html

The API was mainly accepted by Rob and Endi, Adam had few design questions, but I think they were all resolved.

Summary of the steps for new DNS types:

1) New API shall be implemented only for non-DNSSEC resource record (RR)
types that are supported by bind-dyndb-ldap.
DNSSEC RR types to be left unimplemented: DS, KEY, NSEC, RRSIG, SIG
Unsupported RR types to be removed at all: APL, DHCID, DLV, DNSKEY, HIP,
IPSECKEY, NSEC3, NSEC3PARAM, RP, TA, TKEY, TSIG
In future, DNSSEC attributes should be generated automatically. But let
us leave this discussion to the future.


2) -add commands shall be implemented for structured RR types:

> ipa dnsrecord-afsdb-add --subtype=INT --hostname=STR
> ipa dnsrecord-cert-add --type=ENUM --tag=INT --algorithm=ENUM --certificate=STR
> ipa dnsrecord-kx-add --preference=INT --exchanger=STR
> ipa dnsrecord-loc-add --lat-deg=INT --lat-min=INT --lat-sec=FLOAT --lat-dir=ENUM --lon-deg=INT --lon-min=INT --lon-sec=FLOAT --lon-dir=ENUM --alt=FLOAT --h-precision=FLOAT --v-precision=FLOAT
> ipa dnsrecord-mx-add --priority=INT --mailserver=STR
> ipa dnsrecord-naptr-add --order=INT --preference=INT --flag=ENUM --service=STR --regexp=STR --replacement=STR
> ipa dnsrecord-srv-add --priority=INT --weight=INT --port=INT --target=STR
> ipa dnsrecord-sshfp-add --algorithm=ENUM --type=ENUM --fingerprint=STR

OPEN QUESTION: should we implement these new commands also for discrete
DNS records types to be consistent? I mean for example A, AAAA, CNAME,
PTR, ... They would look like

> ipa dnsrecord-aaaa-add --ip-address=IPAddress

BENEFITS of this approach (command per RR type):
- use can get all help for RR type by simply typing "ipa help
dnsrecord-mx-add"
- we would be able to implement helper methods consistently on one
place, for example:
dnsrecord-aaaa-add --from-mac=00:1D:BA:06:37:64


3) -show commands shall be implemented for structured RR types:
These commands will let UI populate the (text) fields, ENUMs, etc. They
would look this way

> ipa dnsrecord-mx-show ZONE NAME VALUE

For example:
> dnsrecord-mx-show "example.com" "@" "1 mx1.example.com."

OPEN QUESTION: should we implement also -find methods
(dnsrecord-mx-find) so that UI can for example populate text fields for
all (MX) records for one DNS name?


4) -mod commands shall be implemented for structured RR types:
API would be almost the same as with -add commands. User (WebUI) would
just have to identify which record should be modified:
a) by copy&passing the raw DNS value directly to the command:

> dnsrecord-mx-mod example.com @ "1 mx1.example.com." --preference=0

b) (CLI only) by using an interactive wizard that would let user choose
the modified record like this way:

> dnsrecord-mx-mod example.com @ --preference=0
Which record would you like to change?
[1] 1 mx1.example.com.
[2] 10 mx2.example.com.
DNS record: <user enters the number>

I have already implemented an interactive wizard like this for
dnsrecord-del and it works fine.

I saw no more objections for the API, closing the ticket.

Metadata Update from @dpal:
- Issue assigned to mkosek
- Issue set to the milestone: FreeIPA 3.0 Core Effort - 2011/09

7 years ago

Login to comment on this ticket.

Metadata