Implementation thoughts on discussion points

Matthew Graham mjg at cacr.caltech.edu
Mon Oct 5 12:16:16 PDT 2009


Hi,

Given that Dave and Doug are elsewhere this week, I a;m going to play  
devil's advocate and make implementation suggestions for each of the  
discussion points for you to shoot down:

1)   Pagination

The listNodes method is to be removed - listing will be possible with  
a straightforward HTTP GET to the node. The representation returned  
can be altered with the use of a 'detail' keyword:

http://nvo.caltech.edu/vospace-2.0/mjg/mytable1?detail= {min|max| 
properties}

When the node is a container, it will return a list of direct children  
nodes in the container. Now if the container contains a lot of nodes  
(>10000) then the client can specify a numerically limited subset  
using 'limit' and 'offset' keywords:

http://nvo.caltech.edu/vospace-2.0/mjg/mydir1?limit=500&offset=2500

The ordering is determined by the server.

The aim here is that listing no longer makes use of continuation  
tokens but that pagination of results is controlled by the client.

findNodes can employ a similar mechanism but is directed against the  
appropriate search resource and not the node since a search can be an  
asynchronous activity.

---

2) Simple HTTP GET for client-server transfers

The aim here is to maintain the protocol negotiation capability to  
support
advanced protocols, but adding simple retrieval access via HTTP as  
well for
cases where nonauthenticated access is permissible.

The HTTP URL should be persistent, i.e., it should be possible for  
multiple clients to retrieve the file given a single URL.  Even where  
authentication is required we might want to retain the same URL, but  
merely require HTTPS to access it.

A view needs to specified to return the appropriate resource - a basic  
HTTP GET call to a node just returns the resource representation  
(listing). So the minimum call is:

http://nvo.caltech.edu/vospace-2.0/mydata/table3?view=ivo://net.ivoa/core/views/votable-1.1

This may result in a redirection to another endpoint if appropriate.

---

3) Parameterized version as alternate to XML representation

Instead of HTTP POSTing a transfer representation to the space (http://nvo.caltech.edu/vospace2.0/transfers 
):

<transfer xmlns="http://www.ivoa.net/xml/VOSpaceTypes-v2.0">
     <target>vos://nvo.caltech.edu!vospace2.0/mydata/table3</target>
     <direction>pushToVoSpace</direction>
     <view uri="ivo://ivoa.net/vospace/core#votable"/>
     <protocol uri="ivo://ivoa.net/vospace/core#http put"/>
</transfer>

we can HTTP POST a parameterized representation:

http://nvo.caltech.edu/vospace2.0/transfers?target=vos://nvo.caltech.edu!vospace2.0/mydata/mydata/table3&direction=pushToVoSpace&view=ivo://ivoa.net/vospace/core#votable 
&protocol=ivo://ivoa.net/vospace/core#http-put

This would return the URI of the transfer resource giving operational  
details of the transfer such as the endpoint.

---

4) UWS for transfers

Under UWS, the elements in the transfer resource representation become  
parameters in the UWS Job resource representation. A transfer job  
could thus be created by a parameterized HTTP POST to the transfers  
endpoint:

http://nvo.caltech.edu/vospace2.0/transfers?target=vos://nvo.caltech.edu!vospace2.0/mydata/mydata/table3&direction=pushToVoSpace&view=ivo://ivoa.net/vospace/core#votable 
&protocol=ivo://ivoa.net/vospace/core#http-put

This would return the jobid and it could then be initiated with a POST  
of a single parameter PHASE=RUN to the endpoint:

http://nvo.caltech.edu/vospace2.0/transfers/{jobid}/phase

A transfer could be aborted at any time with a POST of a single  
parameter PHASE=ABORT to the same endpoint.

---

5) Extra information requested

As part of the information returned in the resource representation of  
a container, the amount of space available within that container  
should be returned.

---

	Cheers,

	Matthew



More information about the vospace mailing list