Skip to main content

Middleware and Compute Engine for an OpenStack Swift compute framework that runs compute within a Swift cluster

Project description

Storlets extend Swift with the ability to run user defined computations - called storlets - near the data in a secure and isolated manner. A storlet is a compiled and packaged code (e.g. a .jar file) that can be uploaded to Swift as any other object. Once uploaded the storlet can be invoked over data objects in Swift. The Storlets API is documented at “Storlets API v1”.

The project started off as an IBM research project, and was open sourced by IBM in 2014.

  • The research leading to the development of this code received funding from the European Community’s Seventh Framework Programme (FP7/2007-2013) under the grant agreements for the CASPAR, ENSURE and VISION Cloud projects.

  • Various stages and different aspects of the development of this code received funding from the following European Community’s Framework Programme:

    • Seventh Framework Programme (FP7/2007-2013) under the grant agreements for the ForgetIT project, where the code is used for offloading digital preservation functionalities to the storage.

    • Seventh Framework Programme (FP7/2007-2013) under the grant agreements for COSMOS project, where the code is used for analysis of IoT data.

    • Seventh Framework Programme (FP7/2007-2013) under the grant agreements for FI-CORE project where the code is integrated with a holistic cloud deployment solution, and from

    • Horizon 2020 (H2020/2014-2020) under the grant agreement for the IOStack project where the code is used as a backend implementing Storage policies and is used for analytics

Docs

The storlerts documentation is auto-generated after every commit and available online at https://storlets.readthedocs.io/en/latest/

Getting Started for Users

The fastest way to get started is “S2AIO - Swift Storlets All In One”.

For Engine Developers

Getting Started

The best way to get started is following this guide: “Installing a Development Environment”.

Tests

There are two types of tests included in the Storlets repo.

  1. Unit tests

  2. Functional tests

Unit tests, are, well, unit tests… The functional tests are black box tests validating end-to-end scenarios using various storlets, including faulty ones. For more information please refer to the: “Development and Testing Guide”.

Code Organization

  • Engine/: The code comprising the middleware and the compute engine

    • SBus/: A protocol layer between the middleware and the sandbox used to execute storlets

      • SBusJavaFacade/: A Java implementation of the protocol

      • SBusPythonFacade/: A Python implementation of the protocol

      • SBusTransportLayer/: A thin layer in “C” used for passing fds between the middleware and container

    • SCommon/: A Java library required for storlets development

    • SDaemon/: A generic Java daemon for loading storlets at runtime

    • SMSCripts/: Run time scripts for doing Docker management commands

    • agent/: Python code for Docker side storlets process management

    • swift/: Python swift side code

      • etc/: Sample config files

      • storlet_gateway/: Run time loadable code for managing storlets execution

      • storlet_middleware/: Swift middleware dealing with storlet invocation requests

  • StorletSamples/: Storlets examples, used for functional testing

  • doc/source/: Documentation

  • install/: Installation scripts

    • swift/: Scripts for invoking an extenral Swift ansible installation scrpts

    • storlets/: Scripts for installing storlets over a Swift cluster

  • tests/: Unit and functional tests

  • tools/: Various cluster config dependent tools for automatic and manual testing

For Storlets Developers

Currently, storlets can be developed in Java only. To get started, follow: “S2AIO - Swift Storlets All In One”.

The write and deploy a storlet, follow: “Writing and deploying storlets”.

For Deployers

Instructions for how to deploy Storlets over an existing Swift cluster (not SAIO): “Deploying storlets over an existing Swift cluster”.

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

storlets-9.0.0.0rc1.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

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

storlets-9.0.0.0rc1-py3-none-any.whl (79.1 kB view details)

Uploaded Python 3

File details

Details for the file storlets-9.0.0.0rc1.tar.gz.

File metadata

  • Download URL: storlets-9.0.0.0rc1.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.11

File hashes

Hashes for storlets-9.0.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 4f30960f8d73e42bcda203d4b7882ed839988572009bea9f12900dbe854162bc
MD5 002fb7ad474fbe0d9883d848a19f34a0
BLAKE2b-256 36eb08bdcf6d4e2fb8da7d7a02c82b8ece27086bae21eecbb426f77d9c74e9c4

See more details on using hashes here.

File details

Details for the file storlets-9.0.0.0rc1-py3-none-any.whl.

File metadata

  • Download URL: storlets-9.0.0.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 79.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.11

File hashes

Hashes for storlets-9.0.0.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 ec5c16f1a3c8881e6f80c1a4c2e962d1752b6ef091918e5d32b8eef50d18ce5b
MD5 bbefed6a5b49ad0132f85c8842d2f91b
BLAKE2b-256 fcb33b94bdfcc2c5c5c9d1f7d82a053d819d3e79187b047bb61709c8ae4af562

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