[gfs-wg] Re: Proposed Final Draft for RNS v1.0
mpereira at almaden.ibm.com
Fri Jun 24 20:11:33 CDT 2005
Hi Osamu and all,
Please refer to the latest revision of the RNS Specification draft, now on
> * Update operation
> 'Type' needs to be described *not to be updated*.
Is this a necessary constraint? Can you please explain why this is a
requirement. What if a user wanted to change an ?Alias? to a ?Referral?,
provided that the other corresponding properties were change concurrently?
> * Symlink behavior for VFDS
> We need to consider how to implement (or represent) a symbolic link
> (aka PathAlias in VFDS) in RNS. Possible solution is
> 1) to represent as 'Alias' but its targetPath is not updated when
> moving the target entry, or
> 2) to represent as 'Referral' but it has 'TargetPath' instead of
> Unfortunately, either solution affects the RNS specification...
This can easily be accomplished with the use of an extended property
assigned to the Entry properties document. This extended property would
be defined in the GFS profile and would describe the syntax, conditions,
and behavior of such a property.
An example might look something like:
-Property name: PathAliasTarget
-Data type: String
This property would extend the specified Entry properties document, and so
an example entry record might look like this:
AliasCount = 0
ChildCount = 0
Description = ?This is a path-based symlink?
ModificationTime = 2005-06-22 14:23:00
Name = ?latest-build?
Type = Junction
PathAliasTarget = ?/ggf.org/data/gfs-wg/bin/build-1234?
> * IteratorContext
> When IteratorContext is created as ResourceProperties in WS-Resource,
> an EPR can specify the IteratorContext (as a WS-Resource). This
> means iteratorContextID is not necessary, does not it?
The specification requires that a service implementation be capable of
constructing point-in-time unique iteratorContextID, see section 126.96.36.199.
The EPR does specify the IteratorContext, however, to construct the
context that the EPR corresponds to, some unique value must be used to
distinguish the resource. The createIteratorContext operation simply
allows the implementer/user to specify the identity of this temporal
> * Junction message
> In the current document, a referral message is only used for a
> referral junction. On the other hand, this mechanism is quite useful
> for other junctions; Endpoint Reference Junction and Virtualized
> Reference Junction. To do this, just add 'Type' and
> 'LogicelReferences' to QueryResponse and ChangeResponse. 'Type' needs
> to be added to distinguish a type of junctions (or type of junction
> messages). In this case, 'baseDirectory' does not always refer to a
> 'directory'. Maybe it is better to be renamed to 'basePath'. Also,
> 'referralEPR' should be just 'EPRs' since it can refer to 'EPRs' in
> Endpoint Reference Junction.
I am afraid I don?t understand your suggestion, or I have not explained
the referral message well enough. The QueryResponse is designed to
provide a valid answer to any query operation, provided that the operation
was successful. This means that the message ?mechanism? is used for all
types, see section 188.8.131.52. The ?array of unrestricted message elements?
is the allocated message element for Endpoint Reference Junctions,
Virtualized Reference Junctions, etc.
We do not want to add ?Type? to the QueryResponse, since this is a
property that is selectable by the caller to be included in the response.
Remember that the referral message is a special case message that
signifies an ?interruption? to the operation. Its sole purpose is to
redirect the caller to another RNS service that will resolve the request
(this information is stored only in Referral entries). You can view the
referralEPR message element as part of the message header for the
QueryResponse message. The content of the QueryResponse is not contained
in the header.
> Moreover, 'remainingPath' (I am not sure this name is good or not) is
> useful that represent a path to be traversed. Of course, this can be
> obtained by 'Path' and 'basePath', while it is useful.
Again, I am not quite sure what you are suggesting here. If this is still
applicable in light of the above comment, please let me know.
> * XML Structure of EPRs and LogicalReferences
> EPRs and LogicalReferences are basically a list of EPR and
> LogicalReference, while the structure is not known in the document.
> This needs to be clarified.
I have expanded on this a bit in section 184.108.40.206.1. Additionally, I have
just updated section 220.127.116.11 to illustrate an example QueryResonse that
now contains the XML structure of EPRs.
> * <Entry> and <Target> in example of QueryResponse
> Neither <Entry> nor <Target> is introduced in the document.
Target is introduced in section 18.104.22.168.1. Although Entry is discussed at
some length, the QName was not introduced; I have added a brief note about
it in section 1.1.
> * rename operation
> Now 'update' does not have 'Name'. Need to update the description.
Done, thanks for catching that!
> * QueryInput in list operation
> 'EPR' and 'LogicalReference' seem to be missing QueryInput of list
Only the plural form seem appropriate as input parameters. In other words
?EPR? carries a singular connotation, whereas ?EPRs? indicates all/any
EPRs that are registered. The list operation input parameters are used to
identify which properties should be included in the response message, so
it doesn?t appear to be appropriate to request only a single EPR in the
> * Error message
> Error message (string) is better to be added in QueryResponse and
> ChangeResponse. Moreover, several typical error messages need to be
> defined such as 'no such junction or virtual directory', 'not a
> virtual directory', 'junction exists', 'is a virtual directory',
> 'virtual directory not empty', 'invalid argument', ....
I agree that error messages need to be defined, however I believe that
adding an ?error message? element in the response message structure is not
the optimal approach. Although error messages still need to be defined,
the current doc does specify that a (SOAP) ?fault? will be thrown (in
other words, a ?fault message? will be returned to the caller based on
WS-BaseFaults) in case of an ?error?.
> * EPRs and LogicalReferences
> How to update and delete entries in EPRs and LogicalReferences is not
> well-defined. For example, how to create a junction entry that has
> two EPRs? How to insert an EPR3 to a junction entry that already has
> EPR1 and EPR2? How to delete just EPR2 from a junction entry that has
> EPR1 and EPR2? Would you describe a procedure with an example of
I do believe that the create case is covered in section 22.214.171.124. It does
contain a brief note below the parameter table that indicates multiple
<EPR> elements may be used. I have added a quick example however.
As for the update case, you are correct in saying that it was not
well-defined. I have tried to enhance that section (126.96.36.199); it now
includes an example and much more description. Additionally, it
identifies what change type messages are allowable for what properties.
Thanks again for bringing this to my attention.
> * In the case that the specified 'Path' is a junction
> When the specified 'Path' is a junction, 'lookup', 'delete', and
> 'update' operations are for the specified junction itself, while
> 'list' and 'create' are not since these operations basically apply to
> a sub entry (or entries) in the specified 'Path'. This needs to be
> clarified in the document. In the list and create cases, a referral
> message (or a above-mentioned junction message) could be returned as a
> QueryResponse and ChangeResponse, respectively.
The list operation only accepts a virtual directory as an input, if not a
fault should be thrown. As for the create operation, it behaves just as
the other operations (lookup, delete, and update). You can specify an
absolute path that denotes the junction to create. The document does make
an explicit statement regarding the list operation only taking a virtual
directory, see the last paragraph of the summary section of 188.8.131.52.
> * In the case that the specified 'Path' in create operation is an
> alias to a virtual directory
> When the specified 'Path' in create operation is an alias to a virtual
> directory, how does the create operate? Since 'Alias' can be resolved
> within the service, it is reasonable to create a new entry under a
> virtual directory pointed to the alias specified by 'Path'. This
> seems to be a special case enough to be described.
This is a very good point. In fact this augments the previous statement
somewhat in that an Alias that points to a VirtualDirectory is also
legitimate as input to the list operation. I will add a brief description
of this consideration of Aliases.
Thank you for your detailed review.
See you at GGF14!
IBM Almaden Research Center
1-408-927-1935 [T/L 457]
mpereira at us.ibm.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the gfs-wg