# Create a third-party plugin for Watcher

Watcher provides a plugin architecture which allows anyone to extend the existing functionalities by implementing third-party plugins. This process can be cumbersome so this documentation is there to help you get going as quickly as possible.

## Pre-requisites

We assume that you have set up a working Watcher development environment. So if this not already the case, you can check out our documentation which explains how to set up a development environment.

## Third party project scaffolding

First off, we need to create the project structure. To do so, we can use cookiecutter and the OpenStack cookiecutter project scaffolder to generate the skeleton of our project:

    $ virtualenv thirdparty
    $ . thirdparty/bin/activate
    $ pip install cookiecutter
    $ cookiecutter https://github.com/openstack-dev/cookiecutter

The last command will ask you for many information, and If you set `module_name` and `repo_name` as `thirdparty`, you should end up with a structure that looks like this:

    $ cd thirdparty
    $ tree .
    .
    ├── babel.cfg
    ├── CONTRIBUTING.rst
    ├── doc
    │   └── source
    │       ├── conf.py
    │       ├── contributing.rst
    │       ├── index.rst
    │       ├── installation.rst
    │       ├── readme.rst
    │       └── usage.rst
    ├── HACKING.rst
    ├── LICENSE
    ├── MANIFEST.in
    ├── README.rst
    ├── requirements.txt
    ├── setup.cfg
    ├── setup.py
    ├── test-requirements.txt
    ├── thirdparty
    │   ├── __init__.py
    │   └── tests
    │       ├── base.py
    │       ├── __init__.py
    │       └── test_thirdparty.py
    └── tox.ini

Note: You should add python-watcher as a dependency in the requirements.txt file:

    # Watcher-specific requirements
    python-watcher

## Implementing a plugin for Watcher

Now that the project skeleton has been created, you can start the implementation of your plugin. As of now, you can implement the following plugins for Watcher:

- A goal plugin

- A strategy plugin

- An action plugin

- A planner plugin

- A workflow engine plugin

- A cluster data model collector plugin

If you want to learn more on how to implement them, you can refer to their dedicated documentation.

this page last updated: 2026-05-26 14:30:00

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug