..
      Except where otherwise noted, this document is licensed under Creative
      Commons Attribution 3.0 License.  You can view the license at:

          https://creativecommons.org/licenses/by/3.0/

==================
Installing Watcher
==================

This document describes how to install Watcher in order to use it. If you are
intending to develop on or with Watcher, please read :doc:`../dev/environment`.

Prerequisites
-------------

The source install instructions specifically avoid using platform specific
packages, instead using the source for the code and the Python Package Index
(PyPi_).

.. _PyPi: http://pypi.python.org/pypi

It's expected that your system already has python2.7_, latest version of pip_,
and git_ available.

.. _python2.7: http://www.python.org
.. _pip: http://www.pip-installer.org/en/latest/installing.html
.. _git: http://git-scm.com/

Your system shall also have some additional system libraries:

  On Ubuntu (tested on 14.04LTS):

  .. code-block:: bash

    $ sudo apt-get install python-dev libssl-dev libmysqlclient-dev libffi-dev

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

  .. code-block:: bash

    $ sudo yum install gcc python-devel openssl-devel libffi-devel mysql-devel


Installing from Source
----------------------

Clone the Watcher repository:

.. code-block:: bash

    $ git clone https://git.openstack.org/openstack/watcher.git
    $ cd watcher

Install the Watcher modules:

.. code-block:: bash

    # python setup.py install

The following commands should be available on the command-line path:

* ``watcher-api`` the Watcher Web service used to handle RESTful requests
* ``watcher-decision-engine`` the Watcher Decision Engine used to build action
  plans, according to optimization goals to achieve.
* ``watcher-applier`` the Watcher Applier module, used to apply action plan
* ``watcher-db-manage`` used to bootstrap Watcher data

You will find sample configuration files in ``etc/watcher``:

* ``watcher.conf.sample``

Install the Watcher modules dependencies:

.. code-block:: bash

    # pip install -r requirements.txt

From here, refer to :doc:`configuration` to declare Watcher as a new service
into Keystone and to configure its different modules. Once configured, you
should be able to run the Watcher services by issuing these commands:

.. code-block:: bash

    $ watcher-api
    $ watcher-decision-engine
    $ watcher-applier

By default, this will show logging on the console from which it was started.
Once started, you can use the `Watcher Client`_ to play with Watcher service.

.. _`Watcher Client`: https://git.openstack.org/cgit/openstack/python-watcherclient

Installing from packages: PyPI
--------------------------------

Watcher package is available on PyPI repository. To install Watcher on your
system:

.. code-block:: bash

    $ sudo pip install python-watcher

The Watcher services along with its dependencies should then be automatically
installed on your system.

Once installed, you still need to declare Watcher as a new service into
Keystone and to configure its different modules, which you can find described
in :doc:`configuration`.
