On 11/28/2011 10:35 AM, Martin Kosek wrote:
I have prepared a working prototype of the new structured DNS API. It
may still have rough edges (and unit tests are not ready), but it will
provide a base for discussion and for WebUI folks - so that they can
start development of the new DNS WebUI API.

The patch takes advantage of the DNS refactor I did in 172. For all
supported non-DNSSEC RR types, the following commands are available:

For the rest of the record types will there be new commands like below eventually or should we use the dnsrecord command?

dnsrecord<RRTYPE>-show ZONE NAME
dnsrecord<RRTYPE>-add ZONE NAME
dnsrecord<RRTYPE>-mod ZONE NAME VALUE

Here's how the commands can be used in the DNS records list page:

http://edewata.fedorapeople.org/freeipa/install/ui/#dns=dnszone&identity=dns&navigation=identity&dnszone-facet=default&dnszone-pkey=example.com

As discussed in ticket #2094 we will add paging support for this page. This is done by calling dnsrecord-find --pkey-only to get all primary keys, then call a batch of dnsrecord-show to get full data of the records being displayed in the current page. I don't think we want to use the new dnsrecord<RRTYPE>-show here because we want to get all record types and since the space is limited we will just show the raw data.

Click the Add link on the top of the page. The dialog box could be modified such that when you select a Record Type instead of showing the same Data field it will show the proper fields for the selected type. Then when you submit it will call the new dnsrecord<RRTYPE>-add command.

Also discussed in #2094, we'll only have one checkbox for each record name instead of one for each value. So in this page we can only delete the entire record entry. This will be done using the existing dnsrecord-del command.

And then the details page:

http://edewata.fedorapeople.org/freeipa/install/ui/#dns=dnsrecord&identity=dns&navigation=identity&dnsrecord-facet=default&dnsrecord-pkey=testrec&dnszone-pkey=example.com

Right now we use a single text field for each raw data. The first option is we could modify this page to use a table for each type, similar to HBAC/sudo rule. For example:

 SRV Records

  x | Priority | Weight | Port | Target  [Delete] [Add]
 -------------------------------------------------------
  x | 0        | 100    | 88   | test

The content of the table will be obtained using the new dnsrecord<RRTYPE>-show. The add dialog will show the fields for the type and it will call the new dnsrecord<RRTYPE>-add command. Deletion will be done using the existing dnsrecord-del command.

The other option is to keep the existing style (without tables) but instead of a single text field for each record value we will show the values in separate fields. For example:

 SRV Records

 Target:   [test     ]  Port:   [88     ]   [Delete]
 Priority: [0    ]      Weight: [100    ]

 [Add]

When you click Update, the UI will have to translate the changes into add, modify, and delete operations. The add and modify will be done using the new dnsrecord<RRTYPE>-add/mod command. The delete will be done using the existing dnsrecord-del command.

Note, regardless of these options when you open the details page the UI could execute up to 20 dnsrecord<RRTYPE>-show operations since there are 20 possible record types currently listed in the UI.

1) The commands return a list of structured records (just like *-find
commands) instead of returning just one record. I thought that it may be
more usable this way and consistent with dnsrecord-add/mod/show commands
behavior which returns all records too. Otherwise, we would have to
change the show command API and add VALUE argument, which would specify
a value to be displayed:
dnsrecord<RRTYPE>-show ZONE NAME VALUE

I think for consistency it would be better to call this command dnsrecord<RRTYPE>-find since it returns multiple entries. We might also be able to add filters in the future.

2) Raw DNS record value is in the output too. I though it would be
useful to see the raw DNS record value + its parts at one place.

Yes, the raw value will be needed for calling dnsrecord<RRTYPE>-mod or dnsrecord-del command.

3) The commands are in format dnsrecord<RRTYPE>-cmd, for example
dnsrecordmx-add. I think dnsrecord-mx-add may be more readable. If we
want to go this way, I would have to bend the server framework a little
which parses an LDAP object from the command name (LDAP object name is
dnsrecordmx in this case). This is doable, although I am not sure if
this does not have some implications in WebUI side.

I agree, the extra dash would be better. When calling a command the UI concatenates entity name and method name with an '_'. In this case the entity name will remain dnsrecord and the RRTYPE will be prepended to the method name.

Btw, patch #175 causes a build break:

ipalib/parameters.py:718: [E1101, Param.normalize] Generator '__unicode_csv_reader' has no 'next' member

--
Endi S. Dewata

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

Reply via email to