Skip to main content

Onedata REST-based filesystem for PyFilesystem

Project description

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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fs_onedatarestfs-25.0.0.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fs_onedatarestfs-25.0.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file fs_onedatarestfs-25.0.0.tar.gz.

File metadata

  • Download URL: fs_onedatarestfs-25.0.0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for fs_onedatarestfs-25.0.0.tar.gz
Algorithm Hash digest
SHA256 71aad19feeb71ce7a38eabb667b171e7131addf09e28e5df2d6205ca7a8139a5
MD5 6f68b80eac66b866e5c4fd02c1e86048
BLAKE2b-256 8ef4e8acd515bc93948ad56fe011615ea68e17bdd5f8b073f95bfd8616958ee7

See more details on using hashes here.

File details

Details for the file fs_onedatarestfs-25.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fs_onedatarestfs-25.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df1b4756dc37d82947a05195cdbfb6d88e05e1b25f2beb1a17120513829f5766
MD5 8b179b963db04f84305c70dca5d05085
BLAKE2b-256 076499e1a313125e0318fec36fe87ea8fc586d8078f9c0721d460140370707bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page