Middleware and Compute Engine for an OpenStack Swift compute framework that runs compute within a Swift cluster
Go to file
Andreas Jaeger 05941f13eb Switch to newer openstackdocstheme and reno versions
Switch to openstackdocstheme 2.2.1 and reno 3.1.0 versions. Using
these versions will allow especially:
* Linking from HTML to PDF document
* Allow parallel building of documents
* Fix some rendering problems

Update Sphinx version as well.

Disable openstackdocs_auto_version to not auto-version the documents.

Disable openstackdocs_auto_name to use 'project' variable as name.

Change pygments_style to 'native' since old theme version always used
'native' and the theme now respects the setting and using 'sphinx' can
lead to some strange rendering.

Remove docs requirements from lower-constraints, they are not needed
during install or test but only for docs building.

openstackdocstheme renames some variables, so follow the renames
before the next release removes them. A couple of variables are also
not needed anymore, remove them.

Use doc/requirements for doc requirements following PTI.

See also
http://lists.openstack.org/pipermail/openstack-discuss/2020-May/014971.html

Change-Id: I1c0aeb590b1ce0f5ee43f9bcea51eeef1c98f057
2020-06-02 15:09:20 +02:00
StorletSamples Use Python 3 by default to run storlet applications 2020-01-07 10:12:50 +09:00
bin Do not bind python2 specific directory into container 2019-12-17 21:22:16 +09:00
devstack Fix functional job failure in gate 2020-05-07 12:41:36 +00:00
doc Switch to newer openstackdocstheme and reno versions 2020-06-02 15:09:20 +02:00
etc Remove unused parameters from sample conf files 2019-05-03 19:23:36 +09:00
playbooks/storlets-functional Revert "[ussuri][goal] Drop python 2.7 support and testing" 2020-04-21 11:30:12 +09:00
releasenotes Switch to newer openstackdocstheme and reno versions 2020-06-02 15:09:20 +02:00
scripts Do not bind python2 specific directory into container 2019-12-17 21:22:16 +09:00
src Use SBusClient for execute command 2020-04-13 16:54:01 +09:00
storlets Merge "Use SBusClient for execute command" 2020-04-15 01:38:44 +00:00
tests Use SBusClient for execute command 2020-04-13 16:54:01 +09:00
.coveragerc Change ignore-errors to ignore_errors 2015-09-21 14:55:43 +00:00
.functests Use python-swiftclient 3.8.1 to run func tests in Python2.7 2020-04-21 11:30:12 +09:00
.gitignore Switch to use stestr for unit test 2018-07-20 13:59:22 +07:00
.gitreview OpenDev Migration Patch 2019-04-19 19:47:54 +00:00
.mailmap Initial Cookiecutter Commit. 2015-08-09 18:08:41 +03:00
.stestr.conf Switch to use stestr for unit test 2018-07-20 13:59:22 +07:00
.unittests Prep works for Py3 gate 2016-09-08 11:54:48 +09:00
.zuul.yaml Make py2 functional tests job non-voting 2020-05-30 00:15:32 +09:00
AUTHORS Update AUTHORS and add release note 2019-03-26 19:05:23 +09:00
CHANGELOG CHANGELOG and AUTHORS updates for storlets 1.0.0 2018-02-07 11:00:42 +09:00
CONTRIBUTING.rst Replace git.openstack.org URLs with opendev.org URLs 2019-04-24 14:08:30 +08:00
HACKING.rst Update the documention link for doc migration 2017-10-16 15:03:04 +08:00
LICENSE Initial Cookiecutter Commit. 2015-08-09 18:08:41 +03:00
README.rst typo: storlet, not storelt 2020-05-15 19:45:20 -07:00
babel.cfg Initial Cookiecutter Commit. 2015-08-09 18:08:41 +03:00
bindep.txt correct the urls 2018-02-06 16:31:25 +08:00
build.xml Create storlets package 2016-12-01 10:28:43 +09:00
cluster_config.json-sample Introducing initial cluster config 2016-01-16 03:33:47 +02:00
install_libs.sh Use the same python version to run storlet agents 2019-12-23 12:44:54 +09:00
openstack-common.conf Initial Cookiecutter Commit. 2015-08-09 18:08:41 +03:00
py2-constraints.txt Use local py2 upper-constraints 2020-05-10 23:23:26 +00:00
requirements.txt Drop oslosphinx package 2019-07-23 17:56:13 +09:00
s2aio.sh Use stable/train keystone to run Python 2.7 job 2020-04-17 16:51:41 +09:00
setup.cfg Add py38 package metadata 2020-05-10 23:23:40 +00:00
setup.py Revert "Cleanup py27 support" 2020-04-16 11:48:13 +09:00
test-requirements.txt Switch to newer openstackdocstheme and reno versions 2020-06-02 15:09:20 +02:00
tox.ini Switch to newer openstackdocstheme and reno versions 2020-06-02 15:09:20 +02:00

README.rst

Storlets

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".