[Freeipa-devel] Structured DNS record API proposal
Jan Cholasta
jcholast at redhat.com
Thu Sep 22 06:25:01 UTC 2011
On 21.9.2011 23:55, Dmitri Pal wrote:
> On 09/21/2011 10:27 AM, Adam Young wrote:
>> On 09/20/2011 11:11 AM, Martin Kosek wrote:
>>> On Tue, 2011-09-20 at 10:02 -0400, Adam Young wrote:
>>>> This discussion got me thinking, always a dangerous proposal:
>>>>
>>>> We are currently exposing record add with the lie that when you add a
>>>> record, it has a type. THe reality is that a record is just this big
>>>> collection of multi value attributes, and each of those is the "type"
>>>> of the record.
>>> The way I see it is that we have different types of Resource Records
>>> with a (domain) name that can be shared.
>>>
>>>>
>>>> If all of the 'records' have the same idnsname, then they really fall
>>>> under the same Record object in LDAP.
>>> Yes.
>>>
>>>> What if we focuses on the attribtutes themselves, and add the type info
>>>> there.
>>> I thought we do this already.
>>>
>>>>
>>>> Pie in the sky proposal. Treat it as a starting point:
>>>>
>>>> From the webui perspective
>>>> dnsrecord-add allows the case where it just has the the idnsname with
>>>> no "records"
>>>>
>>>> dnsrecordattr-mod takes record type specific values.
>>>>
>>>> To add a location entry:
>>>>
>>>> ipa dnsrecordattr-mod --append location --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
>>>>
>>>>
>>>> And to remove it
>>>>
>>>> ipa dnsrecordattr-mod --remove location --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
>>> So if user would want to remove a LOC record, he would have to pass all
>>> these attributes to refer which attribute value to remove?
>> I think that is the case anyway. Since a DNS record is really just an
>> multivalue attribute, you would now have to do a dns-record-mod
>> with the list of all LOC records that you don't want to delete. I
>> used this as an example because it is the most complex case.
>>
>> Just thinking it through...I'm not certain I like the "one command per
>> record type" as it changes a lot of other assumptions. DNS is a
>> wierd beast already.
>>
>> I've spent a lot of time on the DNS ui, and it is pretty tricky to
>> get right. I'm trying to balance the PI against efficient usage.
>>
>> What we really need for the fields is a way to specify the format for
>> a given field, much like the format strings used for group names. For
>> example, the LOC record is really
>>
>> <owner> <TTL> <class> LOC d1 [m1 [s1]] {"N"|"S"} d2 [m2 [s2]]
>> {"E"|"W"}
>> alt["m"] [siz["m"] [hp["m"] [vp["m"]]]]
>>
>>
>> And all the WebUI needs is a way to specify that format to validate.
>>
>
> Can we use augeas for this?
> Augeas lenses use this kind of the validation and there is python
> binding so may be we should use augeas as an inspiration or ask for an
> augeas Javascript solution?
We can't. Augeas knows how to manipulate config files and only that,
there is no API for anything else.
>
>>
>>
>> We need a better approach than setattr/add attr, but it should not be
>> specific to the DNS use case. Let me frame the problem this way:
>>
>> Extend the IPA plugin API to allow for multivalue attributes, composed
>> of multiple fields, where the fields can have format strings.
>>
>> Solve this design issue, and the DNS design becomes an application of it.
>>
>>
>>
>> _______________________________________________
>> Freeipa-devel mailing list
>> Freeipa-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/freeipa-devel
>
>
--
Jan Cholasta
More information about the Freeipa-devel
mailing list