Setting Up a Development Environment

This page describes how to setup a Sahara development environment by either installing it as a part of DevStack or pointing a local running instance at an external OpenStack. You should be able to debug and test your changes without having to deploy Sahara.

Setup a Local Environment with Sahara inside DevStack

See the main article.

Setup a Local Environment with an external OpenStack

  1. Install prerequisites

On OS X Systems:

# we actually need pip, which is part of python package
$ brew install python mysql postgresql rabbitmq
$ pip install virtualenv tox

On Ubuntu:

$ sudo apt-get update
$ sudo apt-get install git-core python-dev python-virtualenv gcc libpq-dev libmysqlclient-dev python-pip rabbitmq-server
$ sudo pip install tox

On Red Hat and related distributions (CentOS/Fedora/RHEL/Scientific Linux):

$ sudo yum install git-core python-devel python-virtualenv gcc python-pip mariadb-devel postgresql-devel erlang
$ sudo pip install tox
$ sudo wget
$ sudo rpm --import
$ sudo yum install rabbitmq-server-3.2.2-1.noarch.rpm

On openSUSE-based distributions (SLES 12, openSUSE, Factory or Tumbleweed):

$ sudo zypper in gcc git libmysqlclient-devel postgresql-devel python-devel python-pip python-tox python-virtualenv
  1. Grab the code
$ git clone git://
$ cd sahara
  1. Generate Sahara sample using tox
tox -e genconfig
  1. Create config file from the sample
$ cp ./etc/sahara/sahara.conf.sample ./etc/sahara/sahara.conf
  1. Look through the sahara.conf and modify parameter values as needed For details see Sahara Configuration Guide
  2. Create database schema
$ tox -e venv -- sahara-db-manage --config-file etc/sahara/sahara.conf upgrade head
  1. To start Sahara API and Engine processes call
$ tox -e venv -- sahara-api --config-file etc/sahara/sahara.conf --debug
$ tox -e venv -- sahara-engine --config-file etc/sahara/sahara.conf --debug

Setup local OpenStack dashboard with Sahara plugin

Tips and tricks for dev environment

  1. Pip speedup

Add the following lines to ~/.pip/pip.conf

download-cache = /home/<username>/.pip/cache
index-url = <mirror url>

Note that the ~/.pip/cache folder should be created manually.

  1. Git hook for fast checks

Just add the following lines to .git/hooks/pre-commit and do chmod +x for it.

# Run fast checks (PEP8 style check and PyFlakes fast static analysis)
tox -epep8

You can add also other checks for pre-push, for example pylint (see below) and tests (tox -epy27).

  1. Running static analysis (PyLint)

Just run the following command

tox -e pylint