VOSpace 2.1 issues

Dave Morris dave.morris at metagrid.co.uk
Tue Sep 16 14:08:12 CEST 2014


On 2014-09-13 03:06, Mike Fitzpatrick wrote:
> On Fri, Sep 12, 2014 at 6:04 PM, Brian Major <majorb at nrc-cnrc.gc.ca> 
> wrote:
> 
> .... This means a service can offer a
> capability, but it would apply to all nodes or to none at all.  If 
> there
> were "special" pre-defined nodes with a capability then the user would
> still be at the mercy of whatever options the service allowed (e.g. 
> there'd
> be no way to specify a different out name/database/whatever).
> 

There is nothing that mandates all capabilities must be available on all 
the nodes.

A service is free to offer different sets of capabilities on different 
nodes.

Which capabilities are available on which nodes is under the control of 
the server, because only the server really knows where and how the data 
is actually stored, and as a result, which capabilities it is actually 
possible to provide on any given node.

> In the discussion that started all these we had three capabilities in 
> mind:

These use cases are exactly the kind of things we had in mind when we 
designed the VOSpace specification. In fact, the automatic SIA 
capability is explicitly mentioned as an example in the capabilities 
section of the VOSpace specification.

> 1) an SIA service for all images put into the container

Your service can offer a SIA service as a capability on any or all of 
the container nodes within your service.

If you want to be able to control or configure the SIA service from the 
client, you can add an 'EnableSIA' property to enable/disable your SIA 
service on a per node basis.

You can add this now with your own property URI

     'urn:EnableSIA' - true/false to enable the SIA service

You can also add a 'ConfigSIA' capability to enable the client to 
configure your SIA service on a per node bases.

You can add this now with your own capability

     'urn:ConfigSIA' - REST service to get/set the SIA service properties

This would enable a client to switch the SIA capability on and off using 
the 'urn:EnableSIA' property, and use the 'urn:ConfigSIA' capability to 
configure it.

If you want the client to be able to enable/configure the SIA capability 
when the node is created, then map some/all of the SIA configuration 
properties onto node properties, which can be set when the node is 
created.

All of this is possible now.

> 2) a service that takes any table and loads it into a database

Again, this can be supported by defining a set of properties and 
capabilities for enabling and configuring the import process.

A new property to enable your TableImport capability

     urn:EnableTableImport - true/false to enable the table import.

A new capability to configure your TableImport capability

     urn:ConfigTableImport - A REST service to get/set the table import 
properties

All of this is possible now.

> 3) a generic "JobRunner" capability ...

Again, this can be supported by defining a set of properties and 
capabilities for enabling and configuring the executable task.

A new property to enable your JobRunner capability

     urn:EnableJobRunner - true/false to enable the JobRunner capability

A new capability to configure your JobRunner capability

     urn:ConfigJobRunner - A REST service to get/set the job runner 
properties

All of this is possible now.

----

The original VOSpace specification was designed to allow individual 
service providers to extend the service by developing their own 
properties and capabilities.

Over time, new properties and capabilities that proved popular would be 
adopted as official IVOA properties and capabilities.

The adoption process can be as simple as publishing an IVOA note and 
registering the URIs in the registry.

The reason that we did not define any of these extended capabilities in 
the original VOSpace specification was to try to keep the core 
specification as simple as possible while still being able to provide 
support for these types of extensions.

The danger we wanted to avoid was like the Simple Object Access Protocol 
(SOAP), the VOSpace specification would gradually become more and more 
specialized until it was no longer Simple anything.

> .... As it stands there is no way
> for a VOSpace to offer these in a list of supported capabilities, but
> assign only one of those to a specific container, and no way for the 
> user
> to create multiple instances with slightly different parameters.

These are both supported by the current specification.
(see above)

> 
> For something like the SIA service example (one used by the spec as 
> well)
> an attachCapabilities method would need to return the service URL the
> client could then use.  Similarly one can imagine wanting to set 
> parameters
> such as one to force a scan of the current container holdings when 
> building
> the service (e.g. when you attach the capability to an existing 
> container)
> or to use only new images, to pass in DB login params, etc.  You could
> argue these parameters are properties of the node and that setNode 
> would
> suffice, but there should probably be a fixed syntax (e.g.
> "<capName>.<param>") defined for this.
> 
> The idea of a detachCapability is needed in workflows where you might 
> want
> to suspend the capability for some reason.
> 

All of this is supported by the current specification.

All of this can be done now by defining a small set of properties and 
capabilities for each new use case, AutoSIA, TableImport, JobRunner etc.

Adding generic 'attachCapability' and 'detachCapability' methods to the 
core VOSpace service could involve a lot of work to describe all the 
metadata needed to describe which capabilities are applicable which 
nodes.

However .. there is nothing preventing you from adding a new 
'ConfigureCapabilities' capability and making it available on any/all of 
the nodes in your service.

The new 'ConfigureCapabilities' capability could provide the 
'attachCapability' and 'detachCapability' methods.

If the 'ConfigureCapabilities' capability proves to be popular, then it 
can be adopted as an official IVOA capability.

All that would needed for it to become an official IVOA capability would 
be an IVOA note describing the capability, and a URI registered in the 
registry.

All of this is supported by the current specification.

--------

Hope this helps,
Dave

--------
Dave Morris
Software Developer
Wide Field Astronomy Unit
Institute for Astronomy
University of Edinburgh
--------




More information about the grid mailing list