==========================
 Developing with Devstack
==========================

Now that you have your nifty DevStack up and running, what can you do
with it?

Inspecting Services
===================

By default most services in DevStack are running as `systemd` units
named `devstack@$servicename.service`. You can see running services
with.

.. code-block:: bash

   sudo systemctl status "devstack@*"

To learn more about the basics of systemd, see :doc:`/systemd`

Patching a Service
==================

If you want to make a quick change to a running service the easiest
way to do that is to change the code directly in /opt/stack/$service
and then restart the affected daemons.

.. code-block:: bash

   sudo systemctl restart devstack@n-cpu.service

If your change impacts more than one daemon you can restart by
wildcard as well.

.. code-block:: bash

   sudo systemctl restart "devstack@n-*"

.. warning::

   All changes you are making are in checked out git trees that
   DevStack thinks it has full control over. Uncommitted work, or
   work committed to the master branch, may be overwritten during
   subsequent DevStack runs.

Testing a Patch Series
======================

When testing a larger set of patches, or patches that will impact more
than one service within a project, it is often less confusing to use
custom git locations, and make all your changes in a dedicated git
tree.

In your ``local.conf`` you can add ``**_REPO``, ``**_BRANCH`` for most projects
to use a custom git tree instead of the default upstream ones.

For instance:

.. code-block:: bash

   [[local|localrc]]
   NOVA_REPO=/home/sdague/nova
   NOVA_BRANCH=fold_disk_config

Will use a custom git tree and branch when doing any devstack
operations, such as ``stack.sh``.

When testing complicated changes committing to these trees, then doing
``./unstack.sh && ./stack.sh`` is often a valuable way to
iterate. This does take longer per iteration than direct patching, as
the whole devstack needs to rebuild.

You can use this same approach to test patches that are up for review
in gerrit by using the ref name that gerrit assigns to each change.

.. code-block:: bash

   [[local|localrc]]
   NOVA_BRANCH=refs/changes/10/353710/1


Testing Changes to Libraries
============================

When testing changes to libraries consumed by OpenStack services (such
as oslo or any of the python-fooclient libraries) things are a little
more complicated. By default we only test with released versions of
these libraries that are on pypi.

You must first override this with the setting ``LIBS_FROM_GIT``. This
will enable your DevStack with the git version of that library instead
of the released version.

After that point you can also specify ``**_REPO``, ``**_BRANCH`` to use
your changes instead of just upstream master.

.. code-block:: bash

   [[local|localrc]]
   LIBS_FROM_GIT=oslo.policy
   OSLOPOLICY_REPO=/home/sdague/oslo.policy
   OSLOPOLICY_BRANCH=better_exception

As libraries are not installed `editable` by pip, after you make any
local changes you will need to:

* cd to top of library path
* sudo pip install -U .
* restart all services you want to use the new library

You can do that with wildcards such as

.. code-block:: bash

   sudo systemctl restart "devstack@n-*"

which will restart all nova services.
