Setting Up a Development Environment

This page describes how to point a local running Savanna instance to a Devstack deployed in a VM. You should be able to debug and test your changes without having to deploy.

Setup VM with DevStack

Setup Local Environment

Now we are going to setup development environment for Savanna on your OS.

  1. Install prerequisites

On OS X Systems:

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

On Ubuntu:

$ sudo apt-get install git-core python-dev python-virtualenv
$ sudo pip install tox

On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux):

$ sudo yum install git-core python-devel python-virtualenv
$ sudo pip install tox
  1. Grab the code from GitHub:
$ git clone git://github.com/openstack/savanna.git
$ cd savanna
  1. Prepare virtual environment:
$ tools/install_venv
  1. Create config file from default template:
$ cp ./etc/savanna/savanna.conf.sample ./etc/savanna/savanna.conf

5. Look through the savanna.conf and change parameters which default values do not suite you. Set os_auth_host to the address of your VM with DevStack.

If you are using Neutron instead of Nova Network add use_neutron = True to config.

Note

Config file can be specified for savanna-api command using --config-file flag.

  1. To start Savanna call:
$ tox -evenv -- savanna-api --config-file etc/savanna/savanna.conf -d

Setup local OpenStack dashboard with Savanna plugin

Tips and tricks for dev environment

  1. Pip speedup

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

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

Note! The ~/.pip/cache folder should be created.

  1. Git hook for fast checks

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

#!/bin/sh
# Run fast checks (PEP8 style check and PyFlakes fast static analysis)
tools/run_fast_checks

You can added the same check for pre-push, for example, run_tests and run_pylint.

  1. Running static analysis (PyLint)

Just run the following command

tools/run_pylint