Daniel Moore

Applications Engineer

iRODS Consortium

June 8-11, 2021

iRODS User Group Meeting 2021

Virtual Event

Python iRODS Client 1.0

Python iRODS Client 1.0

Python iRODS Client Library 1.0 - An 8-Year Journey

The original implementation was by Chris LaRose and Michael Gatto at CyVerse (then known as the iPlant Collaborative) in 2013.

 

The library was contributed in mid-2014 to the newly established iRODS Consortium and was taken over by Antoine de Torcy.  Antoine brought the library up to PyPI standards with modern packaging and maintained it through v0.7.0.

 

Daniel Moore then took the reins in 2018 and has shepherded the code from v0.8.0 to today.

 

Thank you to the 41 contributors and many users over the years.

Python iRODS Client Library 1.0 - Major Updates

Atomic Metadata

  • allows a batch of add/remove operations within one transaction 
  • increased efficiency over individual operations
    • demonstrated up to 750x speedup for large batches

 

Parallel Transfer

  • new client-controlled multi-connect with iRODS release 4.2.9+
  • data object put() and get() spawn threads for transfer
  • increased efficiency over single-threaded put/get operations
    • demonstrated 3-4x speedup

Python iRODS Client Library 1.0 - Other Improvements

 

XML Protocol Hardening

  • BinBytesBuf for JSON API payloads in iRODS 4.2.9
    • corrects cases like AVU searches containing '<', '>', '&'
  • Remaining work includes handling control characters in object names

 

New Checksum Functionality

>>> from irods.test.helpers import make_session
>>> session = make_session()
>>> d = session.data_objects.create("/some/object")
>>> d.chksum()
'sha2:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='

Python iRODS Client Library 1.0 - Other Improvements

We can now:

  • list current ACLs, same as ils -A
  • login via PAM/SSL using client environment configuration
  • configure connection timeouts
  • issue temporary passwords
  • manage session cleanup
  • query rules/tasks in the delay queue
  • automate Python client testing in a Jenkins CI workflow

Python iRODS Client Library - Future Work

  • fix known bugs
  • prepare to drop support for Python2
  • continue working towards full coverage of the iRODS API

Questions?

UGM 2021 - Python iRODS Client 1.0

By iRODS Consortium

UGM 2021 - Python iRODS Client 1.0

  • 958