Skip to main content

UNKNOWN

Project description

Service announcer for Consul.

Functionality:

  • Register/deregister services with checks
  • Spawn a subprocess
  • Periodically mark all TTL checks as passed (if any)

Install

For regular usage:

pip install consul-announcer  # or add it as a requirement

Usage

consul-announcer --config="JSON or @path" [-h] [--agent=hostname[:port]] [--token=acl-token] [--interval=seconds] [--verbose] -- command [arguments]

Arguments:

    -h, --help                Show this help message and exit.
    --agent hostname[:port]   Consul agent address: hostname[:port].
                              Default: localhost (default port is 8500).
                              You can also use CONSUL_ANNOUNCER_AGENT env variable.
    --config "JSON or @path"  Consul configuration JSON (required).
                              If starts with @ - considered as file path.
                              You can also use CONSUL_ANNOUNCER_CONFIG env variable.
    --token acl-token         Consul ACL token.
                              You can also use CONSUL_ANNOUNCER_TOKEN env variable.
    --interval seconds        Interval for periodic marking all TTL checks as passed, in seconds.
                              Should be less than min TTL.
                              You can also use CONSUL_ANNOUNCER_INTERVAL env variable.
    --verbose, -v             Verbose output. You can specify -v or -vv.

Minimal usage:

consul-announcer --config=@path/to/config.json -- some-process --with --arguments

--config

It should be valid JSON that contains {"service": {...}} or {"services": [...]}:

consul-announcer --config='{"service": {"name": "test service", "check": {"ttl": "10s"}}}' -- ...

If starts with @ - considered as file path:

consul-announcer --config=@path/to/config.json -- ...

Read Consul docs about services definition.

All the services & checks will be registered on process start and deregistered on process termination.

You can also use CONSUL_ANNOUNCER_CONFIG env variable.

--interval

In the example above, the interval is not specified so it’ll be calculated as min TTL / 10 (if there are TTL checks specified in the config). But you can provide your own value (in seconds):

consul-announcer --interval=3 ...

If there are no TTL checks and no --interval - an error will raise.

You can also use CONSUL_ANNOUNCER_INTERVAL env variable.

--address

Default agent address is localhost (with default port 8500). You can provide your own:

consul-announcer --agent=1.2.3.4:5678 ...

You can also use CONSUL_ANNOUNCER_AGENT env variable.

--token

Consul ACL token. Required only in you’ve enabled ACL in your Consul agent.

consul-announcer --token=01234567-89ab-cdef-0123-456789abcdef ...

You can also use CONSUL_ANNOUNCER_TOKEN env variable.

--verbose

Output levels:

  • by default only errors and warnings are printed
  • -v will show info messages
  • -vv will show info and debug messages

Usage in Python code

from announcer.service import Service

service = Service('localhost:1234', '@/path/to/config.json', ['sleep', '5'], '01234567-89ab-cdef-0123-456789abcdef', 0.5)
service.run()

Development

Install

git clone <this-repo>
cd consul-announcer
pip install -r requirements/test.txt -e .

Test

Test configuration is defined in the tox.ini file and includes py.test tests and flake8 source code checker. You can run all of the tests:

python setup.py test

To run just the py.test tests, not flake8, and to re-use the current virtualenv:

py.test

Release

  • Tests must be passing
  • Don’t forget to test all added functionality
  • Update CHANGELOG with the release info
  • Update README (if necessary)
  • Commit all the changes
  • Create new version tag (e.g.): v1.2.3
  • Push commits and tags
  • Release new version on PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
consul-announcer-1.0.1.tar.gz (8.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page