Metadata-Version: 2.1
Name: supvisors
Version: 0.6
Summary: A Control System for Distributed Applications
Home-page: https://github.com/julien6387/supvisors
Author: Julien Le Cléach
Author-email: julien.6387.dev@gmail.com
License: UNKNOWN
Download-URL: https://github.com/julien6387/supvisors/archive/0.6.tar.gz
Platform: CentOS 8.3
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Natural Language :: English
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: System :: Boot
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: System :: Software Distribution
Description-Content-Type: text/markdown
Requires-Dist: supervisor (>=4.2.1)
Requires-Dist: pyzmq (>=20.0.0)
Provides-Extra: all
Requires-Dist: netifaces (>=0.10.9) ; extra == 'all'
Requires-Dist: psutil (>=5.7.3) ; extra == 'all'
Requires-Dist: matplotlib (>=3.3.3) ; extra == 'all'
Requires-Dist: lxml (>=4.6.2) ; extra == 'all'
Provides-Extra: ip_address
Requires-Dist: netifaces (>=0.10.9) ; extra == 'ip_address'
Provides-Extra: statistics
Requires-Dist: psutil (>=5.7.3) ; extra == 'statistics'
Requires-Dist: matplotlib (>=3.3.3) ; extra == 'statistics'
Provides-Extra: testing
Requires-Dist: pytest (>=2.5.2) ; extra == 'testing'
Requires-Dist: pytest-cov ; extra == 'testing'
Provides-Extra: xml_valid
Requires-Dist: lxml (>=4.6.2) ; extra == 'xml_valid'

# **Supvisors**
[![PyPI version][pypi-image]][pypi-url] [![Build Status][ci-image]][ci-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Documentation Status][docs-image]][docs-url]


**Supvisors** is a Control System for Distributed Applications, based on
multiple instances of Supervisor.

The main features are:
   * a new web-based dashboard that replaces the default dashboard of Supervisor,
   * an extended XML-RPC API to control applications and multiple Supervisor instances,
   * the definition of a rules file to handle:
      * the starting sequence of the applications,
      * the stopping sequence of the applications,
      * the starting strategy of the processes,
      * the strategy to apply when a process crashes.

![Image of Supvisors' Dashboard](https://github.com/julien6387/supvisors/blob/master/docs/images/supvisors_address_process_section.png)

## Supervisor Enhancements

**Supvisors** proposes a fix to the following Supervisor issues:
   * [#122 - supervisord Starts All Processes at the Same Time](https://github.com/Supervisor/supervisor/issues/122)
   * [#456 - Add the ability to set different "restart policies" on process workers](https://github.com/Supervisor/supervisor/issues/456)
   * [#520 - allow a program to wait for another to stop before being stopped?](https://github.com/Supervisor/supervisor/issues/520)
   * [#874 - Bring down one process when other process gets killed in a group](https://github.com/Supervisor/supervisor/issues/874)
   * [#1023 - Pass arguments to program when starting a job?](https://github.com/Supervisor/supervisor/issues/1023)
   * [#1150 - Why do event listeners not report the process exit status when stopped/crashed?](https://github.com/Supervisor/supervisor/issues/1150)

## Supported Platforms

**Supvisors** has been tested and is known to run on Linux (CentOS 8.3).
It will likely work fine on most UNIX systems.

**Supvisors** will not run at all under any version of Windows.

**Supvisors** >= 0.2 works with Python 3.6 or later.

**Supvisors** 0.1 (available on PyPi) works with Python 2.7 (and former versions of Supervisor, i.e. 3.3.0)
but is not maintained anymore.

## Dependencies

**Supvisors** has dependencies on:

Package                                             | Release    | Optional
----------------------------------------------------|------------|---------
[Supervisor](http://supervisord.org)                | 4.2.1      |
[PyZMQ](http://pyzmq.readthedocs.io)                | 20.0.0     |
[psutil](https://pypi.python.org/pypi/psutil)       | 5.7.3      |     X
[netifaces](https://pypi.python.org/pypi/netifaces) | 0.10.9     |     X
[matplotlib](http://matplotlib.org)                 | 3.3.3      |     X
[lxml](http://lxml.de)                              | 4.6.2      |     X

Please note that some of these dependencies may have their own dependencies.

Versions are given for information.
Although **Supvisors** has been developed and tested with these releases,
the minimal release of each dependency is unknown.
Other releases are likely working as well.


## Installation

Supvisors can be installed with `pip install`:

```bash
   # minimal install (including Supervisor and PyZMQ)
   [bash] > pip install supvisors

   # extra install for all optional dependencies
   [bash] > pip install supvisors[all]
```

## Documentation

You can view the current **Supvisors** documentation [here](http://supvisors.readthedocs.io).

You will find detailed installation and configuration documentation.

## Reporting Bugs and Viewing the Source Repository

Please report bugs in the [Github issue tracker](https://github.com/julien6387/supvisors/issues).

You can view the [source repository](https://github.com/julien6387/supvisors) for Supvisors.

## Contributing

Not opened yet.

[pypi-image]: https://badge.fury.io/py/supvisors.svg
[pypi-url]: https://badge.fury.io/py/supvisors

[ci-image]: https://travis-ci.org/julien6387/supvisors.svg?branch=master
[ci-url]: https://travis-ci.org/julien6387/supvisors?branch=master

[coveralls-image]: https://coveralls.io/repos/github/julien6387/supvisors/badge.svg?branch=master
[coveralls-url]: https://coveralls.io/github/julien6387/supvisors?branch=master

[docs-image]: https://readthedocs.org/projects/supvisors/badge/?version=master
[docs-url]: https://supvisors.readthedocs.io/en/master


Change Log
==========

0.6 (2021-08-01)
----------------

* Improve **Supvisors** stability when dealing with remote programs undefined locally.

* Add expand / shrink actions to applications to the ``ProcAddressView`` of the Web UI.

* Upon authorization of a new node in **Supvisors**, back to ``DEPLOYMENT`` state to repair applications.

* Add RPC ``change_log_level`` to dynamically change the **Supvisors** log level.

* Application state is evaluated only against the starting sequence of its processes.

* Fixed blocking when *Master* is stopped while in ``DEPLOYMENT`` state.

* Fixed issue with applications that would not fully stop when using the ``STOP_APPLICATION`` starting failure strategy.

* Fixed issue related to `Issue #85 <https://github.com/julien6387/supvisors/issues/85>`_.
  An exception was raised when the program ``procnum`` was greater than the list of applicable nodes.

* Fixed `Issue #91 <https://github.com/julien6387/supvisors/issues/91>`_.
  Fix CSS style on the process tables in HTML.

* Fixed `Issue #90 <https://github.com/julien6387/supvisors/issues/90>`_.
  The **Supvisors** *Master* node drives the transition to ``OPERATION``.

* In the Web UI, set the process state color to ``FATAL`` when the process has exited unexpectedly.

* Change the default expected loading to ``0`` in the program rules.

* Python ``Enum`` used for enumerations (not available in Python 2.7).

* Remove ``supvisors_shortcuts`` from source code to get rid of IDE warnings.

* All unit tests updated from ``unittest`` to ``pytest``.

* Include this Change Log to documentation.

* Documentation updated.


0.5 (2021-03-01)
----------------

* New option ``force_synchro_if`` to force the end of the synchronization phase when a subset of nodes are active.

* New starting strategy ``LOCAL`` added to command the starting of an application on the local node only.

* Fixed `Issue #87 <https://github.com/julien6387/supvisors/issues/87>`_.
  Under particular circumstances, **Supvisors** could have multiple *Master* nodes.

* Fixed `Issue #86 <https://github.com/julien6387/supvisors/issues/86>`_.
  The starting and stopping sequences may fail and block when a sub-sequence includes only failed programs.

* Fixed `Issue #85 <https://github.com/julien6387/supvisors/issues/85>`_.
  When using ``#`` in the ``address_list`` program rule of the **Supvisors** rules file, a subset of nodes can optionally be defined.

* Fixed `Issue #84 <https://github.com/julien6387/supvisors/issues/84>`_.
  In the **Supvisors** rules file, program rules can be defined using both model reference and attributes.

* The Web UI uses the default starting strategy of the configuration file.

* The layout of Web UI statistics sections has been rearranged.

* Fixed CSS style missing for ``CHECKING`` node state in tables.

* Star added to the node box of the *Master* instance on the main page.

* Type annotations are added progressively in source code.

* Start switching from ``unittest`` to ``pytest``.

* Logs (especially ``debug`` and ``trace``) updated to remove printed objects.

* Documentation updated.


0.4 (2021-02-14)
----------------

* Auto-refresh button added to all pages.

* Web UI Main page reworked by adding a subdivision of application in node boxes.

* Fixed exception when exiting using ``Ctrl+c`` from shell.

* Fixed exception when rules files is not provided.

* Documentation updated.


0.3 (2020-12-29)
----------------

* Fixed `Issue #81 <https://github.com/julien6387/supvisors/issues/81>`_.
  When **Supvisors** logfile is set to ``AUTO``, **Supvisors** uses the same logger as **Supervisor**.

* Fixed `Issue #79 <https://github.com/julien6387/supvisors/issues/79>`_.
  When ``FATAL`` or ``UNKNOWN`` Process state is forced by **Supvisors**, ``spawnerr`` was missing in the listener payload.

* Useless folder ``rsc_ref`` deleted.

* ``design`` folder moved to a dedicated *GitHub* repository.

* 100% coverage reached in unit tests.

* Documentation updated.


0.2 (2020-12-14)
----------------

* Migration to **Python 3.6**.
  Versions of dependencies are refreshed, more particularly **Supervisor 4.2.1**.

* CSS of Web UI updated / simplified.

* New action added to Host Process page of WebUI: ``tail -f stderr`` button.

* New information actions added to Application page of WebUI:

    * ``description`` field.
    * ``clear logs``, ``tail -f stdout``, ``tail -f stderr`` buttons.

* Fixed `Issue #75 <https://github.com/julien6387/supvisors/issues/75>`_.
  **Supvisors** takes into account the ``username`` and the ``password`` of ``inet_http_server`` in the ``supervisord`` section.

* Fixed `Issue #17 <https://github.com/julien6387/supvisors/issues/17>`_.
  The user selections on the web UI are passed to the URL.

* Fixed `Issue #72 <https://github.com/julien6387/supvisors/issues/72>`_.
  The extra arguments are shared between all **Supvisors** instances.

* ``README.rst`` replaced with ``README.md``.

* Coverage improved in tests.

* Docs target added to Travis-CI.

* Documentation formatting issues fixed.


0.1 (2017-08-11)
----------------

Initial release.


