Skip to main content

OnedataRESTFS

OnedataRESTFS is a pure Python library that exposes the Onedata File access and management REST API through the PyFilesystem2 interface, requiring only a minimal set of dependencies.

As a PyFilesystem2 implementation, OnedataRESTFS allows you to work with the Onedata virtual filesystem in the same way as with any other supported filesystem.

Supported Onezone versions: >= 21.02.5.

Supported Oneprovider versions: >= 21.02.5.

High-performance data access alternative

Since OnedataRESTFS performs all filesystem operations using the Onedata REST API, all requests incur latency overhead inherent to HTTPS. For use cases requiring minimal latency (e.g., frequent random access read/write operations), an alternative Python client based on Onedata's native binary communication protocol is available: OnedataFS. However, this library is just a wrapper over low-level functionality implemented in C++ and requires several dependencies to be installed.

The main benefit is that it allows leveraging direct storage access, a.k.a. DirectIO, if the client machine has network access to the storage.

However, if performance is not critical, it's better to use OnedataRESTFS, which is much easier to install, use, and integrate into third-party applications.

Installation

You can install OnedataRESTFS from PyPI as follows:

pip install fs.onedatarestfs

Make sure to install a version not newer than the Onedata Onezone service in your deployment. New versions of this library are published only when some changes are made or a new major Onedata release is published, so there might not be an exact version matching current Onedata release.

NOTE: The PyFilesystem2 library depends on a version of setuptools older than 81.0.0. If you have a newer version installed, the OnedataRestFS installation will fail. In that case, first downgrade setuptools: pip install 'setuptools<81.0.0'.

Usage

Creating a OnedataRESTFS client instance

To use OnedataRESTFS, you must first create an instance of fs.onedatarestfs.OnedataRESTFS, providing at least two required parameters:

  • onedata_onezone_host – Hostname of the Onezone instance to connect to
  • onedata_access_token – Onedata access token with Oneprovider REST API privileges (see Access tokens)
from fs.onedatarestfs import OnedataRESTFS
onedata_onezone_host = "..."
onedata_access_token = "..."
odfs = OnedataRESTFS(onedata_onezone_host, onedata_access_token)

Other optional OnedataRESTFS constructor arguments include:

  • space – If specified, the client will be limited to a single space
  • preferred_oneproviders – By default, OnedataRESTFS will select a Oneprovider for each space automatically. However, a list of preferred Oneprovider hostnames can be provided to prioritize selection based on which Oneproviders support the given space.
  • verify_sslTrue by default; can be disabled in development environments
  • timeout – Request timeout in seconds (default is 30)

Example operations

The following examples assume that the odfs variable refers to an instance of the OnedataRESTFS class.

List spaces

>>> odfs.listdir('/')
['Space1', 'Space2']

Read and write files

>>> odfs.writetext('/Space1/file.txt', 'TEST')
>>> odfs.readtext('/Space1/file.txt')
'TEST'

Rename a file

>>> odfs.move('/Space1/file.txt', '/Space1/file2.txt')
>>> odfs.listdir('/Space1')
['file2.txt']

For more information on how to use an OnedataRESTFS instance, see the PyFilesystem2 Docs.

Development

Building and running tests

virtualenv -p /usr/bin/python3 venv
. venv/bin/activate

# Install tox
pip install coverage tox

# Run flake8 check
tox -c tox.ini -e flake8

# Run mypy typing check
tox -c tox.ini -e mypy

# Run PyFilesystem test suite
tox -c tox.ini -e fstest

References

Release files for fs.onedatarestfs 25.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fs.onedatarestfs 25.1.0
File Size Uploaded
fs_onedatarestfs-25.1.0.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fs.onedatarestfs 25.1.0
File Interpreter ABI Platform
fs_onedatarestfs-25.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.3 kB

Release files / fs_onedatarestfs-25.1.0.tar.gz

Download URL fs_onedatarestfs-25.1.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9e192824541f7d9ab948e70e61aa5c91560e788f732519a5e4122bbfeb3c62d4
BLAKE2b-256 checksum
How to use checksums
41f68d475f6b10172cf57c256d0e1698256166d336079c60f5fa121ad7399fdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / fs_onedatarestfs-25.1.0-py3-none-any.whl

Download URL fs_onedatarestfs-25.1.0-py3-none-any.whl
Size 14.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea7c51b64285076540dca2715511aaf12003c3c7c845b8838c78943c58a66316
BLAKE2b-256 checksum
How to use checksums
b4736063a3a8e166edbe15c91c9d50c56d7aaba3fb2cd077536f4e71729b24a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page