Sebastien Roy wrote:
> Dan Groves wrote:
>> 1 - Change the name of the property group to be something derived from 
>> the link ID.
>>
>> Pros:
>>
> ...
>>
>> Cons:
>>
>> - We're exposing something private, the link ID.  However, one can 
>> counter that by stating the link ID was exposed anyway as an 
>> administrator can see it by using svcprop to view all the properties 
>> and property groups for a service.  Also, the administrator should not 
>> use the smf command line tools to modify or view the link information, 
>> but should only use dladm.  However, in the real world of system 
>> administration, that would be wishful thinking (i.e. someone might 
>> need to use the smf tools for troubleshooting or recovery).
> 
> all of the properties of the linkmgmntd service are meant to be private, 
> since the public interface to access the configuration information is 
> dladm.  i think that if it can be made clear that the service and its 
> properties (including the name of the property groups) are private 
> interfaces, then i have no issues with this approach.
> 

I think we could do this, maybe we could mention it in linkmgmtd's man page?

> you still need to solve your data-type problem if you go with #1.
>

right.


>>
>> 2 - Move the link information up a step in the SMF hierarchy, i.e. 
>> represent links in SMF as service instances instead of property 
>> groups.  (The name of the instance would either be the link name or 
>> something derived from the link ID based on the response to 1)
>>
>> This change was motivated by implementing code for getting and setting 
>> link attributes in SMF.  Cathy made a comment on the API design that 
>> the dladm_[get|set]_conf_field functions should not require the API 
>> user to convert data to or from strings.
> 
> i'm not sure i understand why that should be the case.  the format of 
> the data being stored could be such that it can't possibly be 
> represented by one of smf's basic types, so the caller has to be 
> expected to do conversion to and from strings in that case.  why is this 
> bad?
>

There were two reasons why I decided to have the library do the 
conversion into strings:

a) Why should the library user care how the data is eventually stored?
b) it makes the library easier to use.

I remember in the design document discussions we back on forth on how to 
get and set data via the dladm_[get|set]_conf_field functions.  I agree 
that this method is not as extensible; however, does the increased 
usability of the API offset the lack of extensibility?  Remember that 
the user can always convert the data to a string and use the string type 
if there isn't an existing type.

>> The library handles the conversion.  I discovered there wasn't a one 
>> to one mapping between SMF types and the types I proposed using to 
>> store data.
> 
> that's not a surprise.  we store all kinds of data in smf that can't be 
> represented in a binary form using their native types; ip addresses and 
> mac addresses being two good example.  it is a given that smf cannot 
> possibly have a type for everything that one might want to store as a 
> property.
> 

Right, I wouldn't expect that SMF would provide all possible types.

>> The set operation is easy, but the get is not.  Consider the case of a 
>> VLAN id stored as a 16 bit integer, easy enough to convert to SMF?s 64 
>> bit integer type on a write, but how do I know how to convert back on 
>> the read?  So I would need to store extra type information in SMF.  As 
>> far as I can tell, the best way to do this is to move everything up 
>> one level in the hierarchy:
>>
>> links are instances
>> link attributes are property groups
>> each property group has two values, one is the link attribute's type 
>> and the other is the link attribute's value
>>
>> If someone has a better idea, I'd be glad to hear it.
> 
> an alternative approach is to store everything as a string and have the 
> consumers of the api do the conversion.  i think this is also more 
> extensible for future data that consumers of the api may want to store 
> for which smf has no type.
> 

I don't see how this proposal prevents someone from doing that.

>> Pros:
>>
>> - A much better solution than the alternative:  store the type 
>> information as another SMF property with a different name.  We might 
>> have conflicts in the future between the name used to identify a link 
>> attribute's type and an actual link attribute.
>>
>> Cons:
>>
>> - I can't think of any.
> 
> here's one: on a system with hundreds of links (such as a VPN access 
> point with tons of tunnels), this would clutter svcs output.
> 

Right.

> also, how does #2 address the possible data corruption during renaming 
> problem you originally described?
>

It does not.


Reply via email to