iRODS Globus Connector
June 8-11, 2021
Virtual iRODS User Group Meeting 2021
Justin James
iRODS Consortium
iRODS Globus Connector
iRODS Globus Connector - Overview
The iRODS Globus Connector provides access to iRODS storage resources from a Globus Connect Server.
iRODS appears as a filesystem to Globus
The connector is a plugin for the Globus Connect Server and a client to the iRODS servers.
All Globus requests use the iRODS C++ client API's to get information and transfer data to iRODS
iRODS Globus Connector - Overview
This is built on the work from EUDAT. https://github.com/EUDAT-B2STAGE/B2STAGE-GridFTP
Worked with Globus to implement a few enhancements and bug fixes.
iRODS Globus Connector - Scope of Talk
The majority of this talk is from the iRODS perspective.
Implementation details
Plugin limitations
Improvements
iRODS API's used by the plugin
The iRODS Globus Connector implements the globus_gfs_storage_iface_t interface.
The connector implements the following interface functions.
INIT - Called when a new session is initiated. Reads the user environment and calls clientLogin().
DESTROY - Called at the end of the session. Cleans up and calls rcDisconnect().
SEND - Called when client requests to receive a file. Calls rcDataObjRead().
RECEIVE - Called when client requests to transfer a file to the server.
COMMAND - Called when a client sends a command to the server. (See next slide).
STAT - Called when the server needs information about the file. Calls rcObjStat().
REALPATH
iRODS Globus Connector - Globus Plugin Interface
iRODS Globus Connector - Globus Client Commands
The following client commands are implemented.
iRODS Globus Connector - Checksum/Hashing
Globus clients can request specific hashing algorithms. Originally the hashing algorithm that was calculated in iRODS was returned to the client. This did not necessarily match the algorithm the client had requested.
To support client requested hashing, the hash files are now calculated by the iRODS Globus Connector and stored in metadata as follows:
iRODS Globus Connector - Checksum/Hashing
The following pseudo-code describes roughly how a checksum request is served by the iRODS Globus Connector:
Receive request for hash for <alg1> Query metadata for key(attr) = "Globus::alg1" If exists: Compare AVU unit with object update time. If AVU unit > object update time: Return checksum Else: Remove existing AVU for <alg1> Download file and calculate checksum. Write checksum to AVU. Return checksum.
iRODS Globus Connector - Recent Enhancements / Fixes
iRODS Globus Connector - Future Enhancements
iRODS Globus Connector - Configuring Globus
Refer to the following page for more information on configuring Globus to be used with the iRODS Globus Connector.
https://docs.globus.org/premium-storage-connectors/v5/irods/