On 05/25/10 04:05 PM, Dave Miner wrote:
> 
>>>>>> 3.4.1.1  Is there a reason not to require that names within a class be
>>>>>> unique?  Not being able to depend on this seems to make some of the
>>>>>> other interfaces where retrieval/deletion can use names less useful.
>>>>>>
>>>>> One reason that we didn't restrict this is in the case of Targets, where 
>>>>> you
>>>>> may have something like:
>>>>>
>>>>>        Targets
>>>>>            TargetDisk  [c0d0]
>>>>>                Partition [p0]
>>>>>                Partition [p1]
>>>>>                    Slice [s0]
>>>>>                    Slice [s1]
>>>>>                    ...
>>>>>                    Slice [s7]
>>>>>            TargetDisk  [c2d0]
>>>>>                Partition [p0]
>>>>>                    Slice [s0]
>>>>>                    Slice [s1]
>>>>>                    ...
>>>>>                    Slice [s7]
>>>>>
>>>>> As you can see the names in this case (partitions/slices) wouldn't be 
>>>>> unique
>>>>> in themselves, but would only be considered unique if you include the 
>>>>> context
>>>>> of the parents, i.e. c2d0/p0/s1.
>>>>>
>>>>>
>>>> I'm somewhat doubtful of that suggested taxonomy.  A slice (or
>>>> partition) seems dependent on its parent device/partition, so I would
>>>> expect the names to be fully-qualified.
>>>>
>>> I don't believe that would be the case at the moment in the schema design:
>>>
>>>       ...
>>>           <target_device>
>>>               <type>
>>>                  <ctd>
>>>                    <name>c1t0d0</name>
>>>                    <slice>
>>>                      <name>0</name>
>>>                       <action>
>>>                       <create>
>>>                         <size>1000</size>
>>>                       </create>
>>>                       </action>
>>>                    </slice>
>>>                  </ctd>
>>>               </type>
>>>            </target_device>
>>>       ...
>>>
>>> I think that the fully qualified name is certainly fetch-able (e.g. calling
>>> slice.get_device_name() ) but I don't think it should be necessary for a 
>>> child
>>> node to qualify it's name in itself, as in:
>>>
>>>        Targets
>>>            TargetDisk  [c0d0]
>>>                Partition [c0d0p0]
>>>                Partition [c0d0p1]
>>>                    Slice [c0d0s0]
>>>                    Slice [c0d0s1]
>>>                    ...
>>>                    Slice [c0d0s7]
>>>            TargetDisk  [c2d0]
>>>                Partition [c2d0p0]
>>>                    Slice [c2d0s0]
>>>                    Slice [c2d0s1]
>>>                    ...
>>>                    Slice [c2d0s7]
>>>
>>> this seems like redundant information being repeated unnecessarily, when 
>>> it's
>>> possible to get it using full_name = name + parent.name ...
>>>
>>
>> The current schemas do not not have children that have fully qualified
>> names. The plan moving forward was to keep this the same, and associate
>> a child with the parent, and get the full name that way. I agree with
>> Darren that storing the info in the child seems redundant.
>>
> 
> As I said in my response to Darren that crossed with yours, one 
> significant, and somewhat valid, criticism of many XML schema is 
> perceived excessive verbosity.  I would like to explore limiting that 
> where possible, and using direct, fully-qualified slice references seems 
> a particular point where that might be possible.  It's also demonstrably 
> easier for sys admins to read, cut & paste, in that you don't have to 
> construct the device name (which is what you'd be using anywhere else) 
> from fragments in the schema.  I feel like we need to be more human 
> here, and less engineers :-)

I think that the version I had is more cut-n-paste-able (is that a word?) if
repeating the same thing in the manifest for another disk - so I think it all
depends on what you're doing with it ;)

> 
>> I do have a question though.. the delete_child() method indicates that
>> this will remove a specific parent class. Is this method on the parent
>> class so that you know which parent to use?
>>>
>>>>
>>>>> I suppose we could ask that the name would be unique in the any given 
>>>>> child
>>>>> list - but I don't think we could ask for it to be the case in the 
>>>>> complete
>>>>> tree of objects. This could also open up the ability to refer to children
>>>>> using a dictionary, which might be useful...
>>>>>
>>>>>
>>>> That seems like a theoretical use, but it seems to compromise an
>>>> immediate, practical use of the Name to allow it, soI guess I'm
>>>> skeptical still.
>>>>
>>> And entitled to be ;)
>>>
>>>
>>>>>> 3.4.1.3 to_xml().  I like the potential choice to have a parent generate
>>>>>> a tree for its children, but I'm not sure how a general child class
>>>>>> would know to return None if it were implemented to normally provide its
>>>>>> own representation; especially if the parent would like to use the
>>>>>> child's to_xml() to assist in its aggregation.  Should it perhaps be the
>>>>>> case that to_xml() also returns a boolean that indicates whether descent
>>>>>> within this object's subtree should continue?  Should this also apply to
>>>>>> can_handle()/from_xml() so that the behavior can be fully symmetric?
>>>>>>
>>>>> This is certainly possible to do. I'm honestly still delving into this 
>>>>> area in
>>>>> more depth to see what the best solution would be.
>>>>>
>>>>> But my thinking on it is that if it's likely that the parent object would 
>>>>> do
>>>>> the XML generation to include it's children, then most probably the case 
>>>>> that
>>>>> the child wouldn't ever generate XML in itself.
>>>>>
>>
>> I would think that if a parent is generating the xml for itself and its
>> children it would still rely on the child to provide its xml
>> representation. To aggregate the data into a tree. Is this not possible
>> or desirable for some reason? Why would we want the parent to generate
>> the xml for itself and its children without traversing the children?
>>
> 
> I'm trying to explore here whether it's possible for an object to 
> aggregate other objects in such a way that it we can potentially provide 
> a flatter, more "usable" notation in the manifest(s), even though the 
> object implementation in the code might be deeper, thus making the 
> implementation somewhat less visible.  So it's closely related, at least 
> right now, to the point above about device specification in the schema, 
> but might also translate to other things we'd like to encapsulate.

I don't see why this shouldn't be possible if desired - I guess it'll finally
depend here on the schema used - but if nothing else, to allow for it, would
allow the schema to change in this way in the future with less impact on code.

Darren.
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to