consul-reborn 1.4.0
Fork of Python client for Consul (http://www.consul.io/) with some community and my patches.
License: MIT

**It's a fork of another fork** <https://github.com/nzlosh/python-consul>.

**The very first origin is** <https://github.com/cablehead/python-consul>.

# Python client for [HashiCorp Consul](http://www.consul.io/)

## Creators
Original code belongs to [Andy Gayton](https://github.com/cablehead).
And fork with community patches belongs to [Carlos](https://github.com/nzlosh).

## Documentation
[Original Library Documentation](https://python-consul.readthedocs.io)

## Status
I'm using some of its function in production, so it's not a complete junk.

## Example
``` {.sourceCode .python}
import consul

c = consul.Consul()

# poll a key for updates
index = None
while True:
    index, data = c.kv.get('foo', index=index)
    print data['Value']

# in another process
c.kv.put('foo', 'bar')
```

Alternatively you can create a client from the same [environment
variables](https://www.consul.io/docs/commands/index.html#environment-variables) that the consul command line client uses. e.g.
CONSUL\_HTTP\_ADDR, CONSUL\_HTTP\_TOKEN.

``` {.sourceCode .python}
import consul

c = consul.Consul.from_env()

c.agent.self()
```

## Installation
```
pip3 install consul-reborn
```


# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.4.0] - 2020-06-17
### Removed
- `consul.base` **Checks.compat** as it was marked as deprecated.

### Added
- `consul.base` *token* argument for **Agent.leave**, **Agent.force_leave** and **Event.list**.

### Fixed
- `consul.base` some lint work.

## [1.3.0] - 2019-06-27
### Changed
- Package name **consul** => **consul-reborn**. Because name **Consul** is occupied at PyPi.

## [1.2.5] - 2019-06-27
### Removed
- `tox.ini` flake8 and Python2.
- `.travis.yml` flake8 and Python2.

## [1.2.4] - 2019-06-27
### Fixed
- `setup.py`.

## [1.2.3] - 2019-06-27
### Fixed
- `setup.py`.

## [1.2.2] - 2019-06-27
### Fixed
- `README.md`.
- `setup.py`.

### Changed
- `.travis.yml` remove sonar and deploy stages.

### Removed
- `.bumpversion.cfg`.
- `sonar-project.properties`.
- Support of Python2.

## [1.2.1] - 2019-06-26
### Fixed
- `README.md`.

## [1.2.0] - 2019-06-26
### Fixed
- `consul.base` All methods of **Session** class use agent token if exists.
- `consul.base` Minor linting.

### Changed
- `README.md`, `CHANGELOG` Converted to markdown.
- `setup.py` Adjust.


## Old Versions

1.1.0
-----

-   add support for nodemeta to catalog and health end points
    (thanks @ibrahimmenem)
-   update Check.script to use args, as Consul 1.1 has dropped the
    script parameter

1.0.1
-----

-   Support for Python 3.4 dropped (sorry)
-   Add support for Consul 1.0.0 (thanks @matusvalo!)
-   Expose all 400 errors and add tests for common callback handler
    (thanks @bagerard)

0.7.2
-----

-   Add header parameter to http check (thanks @matusvalo)
-   Add basic Transaction HTTP API support (thanks @iandyh)
-   Fix invalid url error when specifying credentials via host (Issue
    \#167)

0.7.1
-----

-   Add a common base client for shared functionality between different
    HTTP clients (thanks @abn!)
-   Fix request quoting issue (thanks @abn)
-   Fix installation issue due to aiohttp only being available for
    Python&gt;=3.4.2 (thanks @abn)
-   Added support for current release of aiohttp (thanks @eaterek)
-   Improved Tornado example (thanks @chriswue)
-   Add and use ACL token in Event.fire (thanks @illenseer)
-   Add client side cert support (thanks @brocade-craig)
-   Add token params to catalog register (thanks @gregdurham)
-   Add support for DeregisterCriticalServiceAfter (thanks @daroot)
-   Improve reliability of test suite (thanks @daroot!)
-   Update CI: Add py35 and py36 to tests (thanks @Poogles)

0.7.0
-----

### Features

-   Add Operator endpoint (thanks @bantonj!)

0.6.2
-----

### Bug Fix

-   Tornado backend encoding bug related to None values
    (thanks @plredmond)
-   python-consul doesn't support python 2.6 (thanks @lowzj)

### Maintenance

-   update max ttl to 86400 to conform to consul (thanks @philloooo)
-   Correct error message in ACL create/update (thanks @Crypto89)

### Features

-   Catalog API should support tokens (thanks @racktear!)
-   Allow enable tag override (thanks @shalev67!)

0.6.1
-----

### Features

-   Add the coordinate endpoint and near support on Catalog and Health
    Checks (thanks @shalev67!)
-   Rework all endpoints to use a common callback handler to help ensure
    consistent handling of responses (thanks @shalev67)
-   Add Query api support (thanks @shalev67)
-   Add token support for the Health endpoints (thanks @morpheu!)
-   Force to use UTF-8 encoding for the response with the request's
    client (thanks @maxnasonov)

### Maintenance

-   Migrate readthedocs links from .org to .io (thanks @adamchainz)

0.6.0
-----

### Features

-   Add support for the new TCP and Docker health checks (thanks @abn)
-   Add support for join and force-leave (thanks @abn)
-   Use standard consul environment variables to override configuration
    (thanks @amayausky)

### Maintenance

-   Test binaries updated to Consul 0.6.4
-   Tweaks to fix small updates to Consul's API

0.4.7
-----

### Features

-   Add ACL token support to agent.service.register and
    agent.check.register

0.4.6
-----

### Features

-   Add health.checks endpoint, update health TODOs (thanks @cruatta!)
-   Improve error when a HTTP 503 status code is returned (thanks
    @raboof!)
-   Added index and wait parameter to event.list (thanks @max0d41!)

0.4.5
-----

### Features

-   Allow SSL certificate verification to be disabled (thanks
    @jgadling!)
-   Use requests.session for performance (thanks @msabramo!)
-   Support 'wait' param for all blocking queries (thanks @rmt!)
-   deduplicate query string when doing deletes with the std (requests)
    library (thanks @sduthil!)

0.4.4
-----

### Features

-   Support creation of ALCs with explicit ID. (thanks @KyleJamesWalker)

0.4.3
-----

### Features

-   Support 'dc' argument to health endpoints (thanks @etuttle!)

0.4.2
-----

### Features

-   Add status endpoints (thanks @cruatta!)

0.4.1
-----

### Features

-   Add health.node (thanks @davidbirdsong!)

0.4.0
-----

### API changes (backwards incompatible)

-   Deprecated old health.check.ttl\_pass call has been removed
-   Deprecate loose parameters *script*, *interval*, *ttl*, *http* and
    *timeout*, to configure checks via agent.service.register and
    agent.check.register. Both methods now take a single argument to
    specify checks. A convenience consul.Check has been added to create
    checks.

0.3.20
------

### Features

-   Add Node and Service Maintenance (thanks @cruatta!)

### Bug Fix

-   Unclosed connector Exception in consul.aio (thanks @jettify!)

0.3.19
------

### Bug Fix

-   Fix six dependency (thanks @pawlowskimichal!)

0.3.18
------

### Features

-   Adding ability to register checks with services (thanks @cruatta!)

### Bug Fix

-   Fix distribution for consul.aio for python3 (thanks @mbachry!)

0.3.17
------

### Features

-   Add address param to agent.service.register

0.3.16
------

### Features

-   Add cas param for kv.delete (thanks @qix)

0.3.15
------

### Features

-   Add tag parameter to health.service() (thanks @reversefold)

0.3.14
------

### Features

-   add the keys and separator params to kv.get (thanks @Heuriskein)
-   add support for the events api (thanks @Heuriskein!)

0.3.13
------

### Features

-   add HTTP check support (thanks @JoeHazzers)
-   raise ConsulException on kv.get 500 response code (thanks @jjpersch)
-   add the wait argument to kv.get

0.3.12
------

### Features

-   add behavior and ttl to session.create
-   add session.renew

0.3.11
------

### Features

-   add the health.state endpoint (thanks @pete0emerson!)
-   bump test binaries to 0.5.0

0.3.9
-----

### Bug Fix

-   Exclude consul.aio if asyncio isn't available, avoids an error
    message on install, trying to byte compile that module

0.3.8
-----

### API changes (backwards incompatible)

-   Reorder named arguments to be more consistent. index is always the
    first named argument, if available, and dc is now always the last
    named argument.

0.3.7
-----

### Features

-   Add dc support for kv calls; add ability to set the default dc for
    an entire client session (thanks @angad)
-   Add asyncio client (thanks @jettify)

0.3.6
-----

### Features

-   Add https support (thanks @pete0emerson)
-   Add wan param to agent.members (thanks @sgargan)

0.3.5
-----

### Bug Fix

-   Fix typo setting notes on a check (thanks @ShaheedHaque!)

0.3.4
-----

### Features

-   Add support for the Agent.Check (thanks @sgargan and @ShaheedHaque)

### Deprecated

-   health.check.ttl\_pass has been moved to agent.check.ttl\_pass

0.3.3
-----

### Features

-   Add support for the Session API (Consul.Session)

### Bug Fixes

-   Fix a bug retrieving folder nodes from the KV store
    <https://github.com/cablehead/python-consul/pull/6#issue-48589128>
    Thanks @zacman85

0.3.2
-----

### Features

-   Add support for Python 3.4

0.3.1
-----

### Features

-   Add support for the Catalog API (Consul.Catalog)
-   Add ability to set a default consistency mode for an entire client
    session
-   Add the ability to pass the consistency mode with kv.get

0.3.0
-----

### Features

-   Add support for ACLs (Consul.ACL)

### API changes (backwards incompatible)

-   For Consul.Agent.Service.register, rename *check* argument to
    *script*