scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
Useful links
- URI definition
- Related tracker items
1. Introduction
1.1. Present implementation:
A Data Entry is a collection of IDSs (potentially all IDSs) and their multiple occurrences (see 4.1). A Data Entry is uniquely defined by:
- IMAS major version (corresponds to the number of the Data Dictionary major revision)
- User name
- Database name
- Pulse number
- Run number
1.2. Proposed extension:
There is a need to have more flexibility in the pulse file location, but at the same time it’s important to keep notions of User, Database name and the new pulse_type category ("pulse", "simulation", "machine_description", "continuous_experiment", ...)). So we can’t leave it completely to an arbitrary file name and should keep some file location rules enabling keeping apart pulse files of different nature, without mixing pulse and run numbers.
Therefore the following extension/generalization is proposed : A Data Entry is uniquely defined by:
- HostName (on which server the data resides)
- IMAS major version
- User name (generalized to an absolute location path on the host (i.e. $USER_HOME or absolute path, see IMAS-2680)
- Database name (extended with pulsetype category, concatenated or put below the database name)
- Pulse number (generalized in case of continuous data / data not related to a pulse)
- Run number
2. Use cases
2.1. MDSPlus
2.2. UDA (by JH)
- Access private IDS on ITM gateway
ids = imas.ids(52702, 0)
ids.open_uri("uda://g2jhollo@imas.marconi.cineca.it:56565/west/3/0")
- mapped to file: /afs/eufus.eu/user/g/g2jhollo/public/imasdb/west/3/0
- Access public IDS on ITER cluster
ids = imas.ids(52702, 0)
ids.open_uri("uda://public@imas.iter.org:56565/west/3/0")
- or
ids.open_uri("uda://imas.iter.org:56565/west/3/0")
- Access mapped data from JET – we may need to extend this URI to add more information
ids = imas.ids(84600, 0)
ids.open_uri("uda://jholloc@imas.jet.uk:56565/jet/3")
The `imas.marconi.cineca.it` was just the domain I made up for where an IMAS UDA server might be running – this could be anything.
The port could be left out if default (default for UDA = 56565) but could be specified if the UDA server is running on a non-default port.
The URI scheme (uda://) would specify the backend, so `uda://…` would use the UDA backend, `mdsplus://…` would use the MDSplus backend, etc.
Currently the UDA IMAS plugin is hard-coded to using the MDSplus backend. You are right, this could be specified on the URI, perhaps as a query arg, :
ids.open_uri("uda://public@imas.iter.org:56565/west/3/0?backend=HDF5")