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 http://storlets.readthedocs.io/en/latest/
Getting Started
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.
Unit tests
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 developped in Java only. To get started, follow: “S2AIO - Swift Storlets All In One”.
The write and deploy a storlet, follow: “Writing and deploying storelts”.
For Deployers
Instructions for how to deploy Storlets over an existing Swift cluster (not SAIO): “Deploying storlets over an existing Swift cluster”.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.