Skip to main content

OpenDAL driver

jumpstarter-driver-opendal provides functionality for interacting with storages attached to the exporter.

Installation

:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-opendal

Configuration

Example configuration:

:language: yaml

Configuration Parameters

  • scheme (required): The storage service type (e.g., "fs", "s3", "gcs"). See OpenDAL services for supported options.
  • kwargs (required): Service-specific configuration parameters passed to the OpenDAL operator.
  • remove_created_on_close (optional, default: false): When enabled, automatically removes all files and directories created during the session when the driver is closed.

File/Directory Tracking and Cleanup

The OpenDAL driver tracks all files and directories created during a session:

  • File Creation: Files opened in write modes ("wb", "w", "ab", "a")
  • Directory Creation: Directories created via create_dir()
  • Copy Operations: Target files/directories from copy() operations
  • Rename Operations: Target files/directories from rename() operations (source is removed from tracking)

Automatic Cleanup: The tracking is automatically updated when resources are removed:

  • Delete Operations: delete() removes the path from tracking
  • Remove Operations: remove_all() removes the path from tracking

Cleanup Behavior: When remove_created_on_close: true, all tracked files and directories are automatically removed when the driver closes (filesystem only)

Tracking API

# Get all created resources (files and directories)
created_resources = await driver.get_created_resources()  # Returns set[str]

# Example usage
for path in created_resources:
    print(f"Created: {path}")

Use Cases

Temporary File Management:

# Enable cleanup for temporary storage
remove_created_on_close: true

Persistent Storage:

# Disable cleanup to preserve files (default)
remove_created_on_close: false

Note: Pre-existing files that are written to are treated as "created" since they may be remnants from failed cleanup operations.

API Reference

Examples

>>> from tempfile import NamedTemporaryFile
>>> opendal.create_dir("test/directory/")
>>> opendal.write_bytes("test/directory/file", b"hello")
>>> assert opendal.hash("test/directory/file", "md5") == "5d41402abc4b2a76b9719d911017c592"
>>> opendal.remove_all("test/")
from jumpstarter.config.exporter import ExporterConfigV1Alpha1DriverInstance
from jumpstarter.common.utils import serve

instance = serve(
    ExporterConfigV1Alpha1DriverInstance.from_path("source/reference/package-apis/drivers/opendal.yaml"
).instantiate())

opendal = instance.__enter__()
instance.__exit__(None, None, None)

Client API

.. autoclass:: jumpstarter_driver_opendal.client.OpendalClient()
    :members:

.. autoclass:: jumpstarter_driver_opendal.client.OpendalFile()
    :members:

.. autoclass:: jumpstarter_driver_opendal.common.Metadata()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.EntryMode()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.PresignedRequest()
    :members:
    :undoc-members:
    :exclude-members: model_config

.. autoclass:: jumpstarter_driver_opendal.common.Capability()
    :members:
    :undoc-members:
    :exclude-members: model_config

Download files

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

Source Distribution

jumpstarter_driver_opendal-0.8.1.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

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

jumpstarter_driver_opendal-0.8.1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file jumpstarter_driver_opendal-0.8.1.tar.gz.

File metadata

File hashes

Hashes for jumpstarter_driver_opendal-0.8.1.tar.gz
Algorithm Hash digest
SHA256 d5b2984169e2453048cb4f63ae28b2d6c9edbc9fb991c2a5a1a689d888ebad35
MD5 443491bd92ca19cebb2d6b70e955158e
BLAKE2b-256 184c7d6764d138b167dc26007ad355cfbc465cee138f7cc3cc0a7170588ce052

See more details on using hashes here.

File details

Details for the file jumpstarter_driver_opendal-0.8.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jumpstarter_driver_opendal-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0358b5cff544b06bfa85428396f35f3eee35a91b3011074b9868a16de286f30e
MD5 8cde89f31332c8ab903b22470985966b
BLAKE2b-256 4c975751f9394e5c24bc0edad3c2e4c4e3c74941a7ad4add196c224d8fcfe8d1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

Supported by

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