deb-sahara/doc/source/horizon/dev.environment.guide.rst
Chad Roberts 3df4d60a8a Updating the dev environment guide for the Sahara UI
Updates related to the move to /contrib which happened
during the L cycle.

Change-Id: I564241ea20b5ef966a4e7458a7c62f6457abb081
Partial-Bug: #1490687
2015-08-31 15:12:06 -04:00

192 lines
5.8 KiB
ReStructuredText

Sahara UI Dev Environment Setup
===============================
This page describes how to setup Horizon for developing Sahara by either
installing it as part of DevStack with Sahara or installing it in an isolated environment
and running from the command line.
Install as a part of DevStack
-----------------------------
See the `DevStack guide <../devref/devstack.html>`_ for more information
on installing and configuring DevStack with Sahara.
After Horizon installation, it will contain a Data Processing tab under Projects tab.
Sahara UI source code will be located at
``$DEST/horizon/openstack_dashboard/contrib/sahara/content/data_processing``
where ``$DEST/`` is usually ``/opt/stack/``.
Isolated Dashboard for Sahara
-----------------------------
These installation steps serve two purposes:
1. Setup a dev environment
2. Setup an isolated Dashboard for Sahara
**Note** The host where you are going to perform installation has to be able
to connect to all OpenStack endpoints. You can list all available endpoints
using the following command:
.. sourcecode:: console
$ keystone endpoint-list
You can list the registered services with this command:
.. sourcecode:: console
$ keystone service-list
1. Install prerequisites
.. sourcecode:: console
$ sudo apt-get update
$ sudo apt-get install git-core python-dev gcc python-setuptools python-virtualenv node-less libssl-dev libffi-dev libxslt-dev
..
On Ubuntu 12.10 and higher you have to install the following lib as well:
.. sourcecode:: console
$ sudo apt-get install nodejs-legacy
..
2. Checkout Horizon from git and switch to your version of OpenStack
Here is an example:
.. sourcecode:: console
$ git clone https://github.com/openstack/horizon
..
Then install the virtual environment:
.. sourcecode:: console
$ python tools/install_venv.py
..
3. Create a ``local_settings.py`` file
.. sourcecode:: console
$ cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
..
4. Modify ``openstack_dashboard/local/local_settings.py``
Set the proper values for host and url variables:
.. sourcecode:: python
OPENSTACK_HOST = "ip of your controller"
..
If you are using Nova-Network with ``auto_assign_floating_ip=True`` add the following parameter:
.. sourcecode:: python
SAHARA_AUTO_IP_ALLOCATION_ENABLED = True
..
5. If Sahara is not registered with the keystone service catalog, it may be added
with the following commands. To use Sahara from Horizon without keystone
registration, see `Using the Data Processing Dashboard without Keystone Registration`_.
.. sourcecode:: console
$ keystone service-create --name sahara --type data-processing
$ keystone endpoint-create --region RegionOne --service sahara --publicurl 'http://localhost:8386/v1.1/%(tenant_id)s'
**Note** you should replace the ip and port in with the appropriate values.
6. Start Horizon
.. sourcecode:: console
$ tools/with_venv.sh python manage.py runserver 0.0.0.0:8080
..
This will start Horizon in debug mode. That means the logs will be written to console
and if any exceptions happen, you will see the stack-trace rendered as a web-page.
Debug mode can be disabled by changing ``DEBUG=True`` to ``False`` in
``local_settings.py``. In that case Horizon should be started slightly
differently, otherwise it will not serve static files:
.. sourcecode:: console
$ tools/with_venv.sh python manage.py runserver --insecure 0.0.0.0:8080
..
**Note** It is not recommended to use Horizon in this mode for production.
7. Applying changes
If you have changed any ``*.py`` files in
``horizon/openstack_dashboard/contrib/sahara/content/data_processing`` directory,
Horizon will notice that and reload automatically. However changes made to
non-python files may not be noticed, so you have to restart Horizon again
manually, as described in step 6.
Using the Data Processing Dashboard without Keystone Registration
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**Note** These modifications are strictly for a development environment
If Sahara is not registered as a service with keystone, Horizon must be
modified so that the Sahara URL can be known and so service-based
permissions do not prevent the Data Processing dashboard from displaying.
1. Modify ``openstack_dashboard/contrib/sahara/api/sahara.py``:
Add the following lines before ``def client(request)``:
**Note** you should replace the ip and port in ``SAHARA_URL`` with the
appropriate values.
.. sourcecode:: python
SAHARA_URL = "http://localhost:8386/v1.1"
def get_sahara_url(request):
if SAHARA_URL:
url = SAHARA_URL.rstrip('/')
if url.split('/')[-1] in ['v1.0', 'v1.1']:
url = SAHARA_URL + '/' + request.user.tenant_id
return url
return base.url_for(request, SAHARA_SERVICE)
..
After that modify ``sahara_url`` provided in ``def client(request):``
.. sourcecode:: python
sahara_url=get_sahara_url(request)
..
2. Modify ``openstack_dashboard/dashboards/project/dashboard.py``:
Overload the ``register`` method in ``class Project`` to programmatically
remove ``data-processing`` permissions from all panels.
.. sourcecode:: python
@classmethod
def register(cls, panel):
if hasattr(panel, 'permissions'):
panel.permissions = tuple(
[perm for perm in panel.permissions if not perm.startswith(
'openstack.services.data-processing')])
super(Project, cls).register(panel)
..
Alternatively the ``data-processing`` permissions can be removed
manually from each panel under ``openstack_dashboard/contrib/sahara/content/data_processing``