Gabriel Hurley 9742842795 Re-architects the OpenStack Dashboard for modularity and extensibility.
Implements blueprint extensible-architecture.
Implements blueprint improve-dev-documentation.
Implements blueprint gettext-everywhere.
Implements blueprint sphinx-docs.

Complete re-architecture of the dashboard to transform it from a standalone django-openstack app to a Horizon framework for building dashboards. See the docs for more information.

Incidentally fixes the following bugs:

Fixes bug 845868 -- no PEP8 violations.
Fixes bug 766096 -- the dashboard can now be installed at any arbitrary URL.
Fixes bug 879111 -- tenant id is now controlled solely by the tenant switcher, not the url (which was disregarded anyway)
Fixes bug 794754 -- output of venv installation is considerably reduced.

Due to the scale and scope of this patch I recommend reviewing it on github: https://github.com/gabrielhurley/horizon/tree/extensible_architecture

Change-Id: I8e63f7ea235f904247df40c33cb66338d973df9e
2011-11-07 12:59:21 -08:00
..

========================================
Horizon: The OpenStack Dashboard Project
========================================

The Horizon project is a Django module that is used to provide web based
interactions with an OpenStack cloud.

There is a reference implementation that uses this module located at:

    http://launchpad.net/horizon

It is highly recommended that you make use of this reference implementation
so that changes you make can be visualized effectively and are consistent.
Using this reference implementation as a development environment will greatly
simplify development of the ``horizon`` module.

Of course, if you are developing your own Django site using Horizon, then
you can disregard this advice.


Getting Started
===============

Horizon uses Buildout (http://www.buildout.org/) to manage local development.
To configure your local Buildout environment first install the following
system-level dependencies:

  * python-dev
  * git
  * bzr

Then instantiate buildout with::

  $ python bootstrap.py
  $ bin/buildout

This will install all the dependencies of Horizon and provide some useful
scripts in the ``bin/`` directory:

  bin/python provides a python shell for the current buildout.
  bin/django provides django functions for the current buildout.


You should now be able to run unit tests as follows::

  $ bin/django test

or::

  $ bin/test

You can run unit tests with code coverage on Horizon by setting
``NOSE_WITH_COVERAGE``::

  $ NOSE_WITH_COVERAGE=true bin/test

Get even better coverage info by running coverage directly::

  $ coverage run --branch --source horizon bin/django test horizon && coverage html