VOSpace 2.1 and view=data
Dave Morris
dave.morris at metagrid.co.uk
Wed Jun 8 15:16:54 CEST 2016
Hi Brian,
In answer to your specific questions :
On 2016-06-03 20:21, Brian Major wrote:
>
> - Should VOSpace users require a smart client that understands transfer
> negotiations, or should simple HTTP clients such as curl and wget work?
> (For downloads only--uploads and server to server transfers are
> certainly
> too complex.)
Most of the IVOA specifications define technical protocols that enable
applications and services to interoperate, and end users normally don't
interact directly with the IVOA protocols.
Technically, it is possible to do service endpoint discovery, table
metadata discovery, ADQL query building and async TAP requests using
shell script to glue together curl requests. However, we normally
recommend applications like TopCat and Aladin to our end users because
they hide a lot of the technical details and enable the scientists to
concentrate on the science.
Same with services like Amazon S3, GoogleDrive and DropBox, it is
possible to drive them using shell script and curl requests, but normal
users are encouraged to download the app and click on the nice friendly
buttons.
Why would we want to treat VOSpace differently?
The raw protocol itself was not intended for end users, it was designed
to handle transport negotiation between applications and services.
Follow up question :
Should we be providing command line tools for our users and Python and
Java libraries for app developers to use - totally 100% yes.
> - Should VOSpace support view=data on the /nodes resource?
I don't think this needs to be part of the core VOSpace specification -
see below.
> - Is there an alternate way of offering a shareable download URL? (By
> shareable I mean a URL that you can give collaborators and will work
> for as
> long as the node exists.)
I think we should be able to meet all of the requirements for a
shareable URL without changing anything in the core specification by
defining a transport protocol which would do everything we need.
The VOSpace client would request a PullFrom transfer using the public
share protocol and the VOSpace server would reply with an endpoint URL
that end users can use to access the node content with a simple HTTP GET
request. Users can email the URL to others or publish it in a paper,
anyone who has the URL can download the node content.
Underneath, the VOSpace server is doing something like retrieving the
node content from storage, formatting it according to the selected view
and placing it somewhere where it can be published by a webserver, but
the details of exactly how that is done is implementation specific. From
outside, what happens is the client asks for a 'publicshare' transfer,
and the server responds with a URL. No changes needed to the VOSpace
specification.
Actually, that isn't quite true. Perhaps we do need to add something to
the VOSpace specification.
The original intention was that it should be easy for people to create
and register new transport protocols for VOSpace, which is why the
identifier for transport protocols is defined as anyURI. In theory, this
enables anyone to define and use a new transport protocol simply by
creating a new URI.
In the VOSpace specification we defined a list of standard transport
protocols and their official URIs. In retrospect this was probably a
mistake. The next section in the document goes on to describe custom
protocols, but the examples given are very theoretical and the damage is
already done, most readers get as far as the list of standard transport
protocols and don't realise they are allowed to add new ones.
So - to start the process going, I hereby define a new VOSpace transfer
protocol.
http://wiki.ivoa.net/twiki/bin/view/IVOA/VOSpacePublicShare
If this does what we need, then I propose we replace the theoretical
examples in the 'Custom protocols' section (3.5.4) with a real world
example of using a wiki page to define a transport protocol. Note that
the URL of the wiki page *is* the URI for referring to the protocol in
the VOSpace message.
curl "https://server.example.com/vospace/synctrans
?TARGET=vos://example.com~vospace/mydata1
&DIRECTION=pullFromVoSpace
&PROTOCOL=http://wiki.ivoa.net/twiki/bin/view/IVOA/VOSpacePublicShare
The response should contain a simple HTTP GET endpoint URL that you can
mail to your friends or publish in a paper.
<vos:endpoint>http://public.example.com/001237995/mydata1</vos:endpoint>
Defining a new transfer protocol really is that easy. Just that (AFAIK)
no one has actually done it before.
Cheers,
Dave
--------
Dave Morris
Software Developer
Wide Field Astronomy Unit
Institute for Astronomy
University of Edinburgh
--------
More information about the grid
mailing list