Control plane of Crystal's SDS system. It is composed by the Crystal API and the distributed controllers.
Python Makefile
Switch branches/tags
Nothing to show
Clone or download
Latest commit c83f8fd Dec 21, 2017

Crystal Controller

Build Status Coverage Status Code Health

This repository contains the code of Crystal Controller, the Software-Defined-Storage (SDS) REST API in the IOStack architecture. It is a Django project that implements the REST API needed to handle filters, storlets and policies on top of Openstack Swift object-storage system. This API also includes a set of python processes who use the PyActor middleware, an Object Oriented implementation of the Actor model. This part allows to create simple policies using a DSL (integrated in the Crystal Controller API) and to deploy them as an actor process, who analyze the system data thanks to the monitoring system, and allows to set or remove filters to tenants depending on the established policy.

To build the APIs in an easy way we use Django REST Framework.



  1. Clone the Crystal controller repository
git clone /usr/share/crystal-controller
  1. Install Python package dependencies:
pip install -r /usr/share/crystal-controller/requirements.txt
  1. Edit Crystal controller settings file api/api/ configure Swift proxy IP and port, Keystone IP, OpenStack credentials, Redis location, RabbitMQ credentials.
  2. You can start the controller running the following command from the source folder (/usr/share/crystal-controller/api):
python runserver
  1. Alternatively, it is possible to start the controller by using an Apache Http Server. Copy the config file to the Apache sites folder, and enable it.
cp /usr/share/crystal-controller/etc/apache2/sites-available/crystal_controller.conf /etc/apache2/sites-available/
a2ensite crystal_controller
service apache2 reload


API usage is detailed in the API specification.

A convenient web dashboard is also available to simplify these API calls. Refer to the dashboard overview for detailed information.


Run unit tests from the source folder (./api) with the following command: python test


Please open an issue for support.


Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

For more information, please visit