/gordon-janitor-gcp

GCP Plugin for Gordon Janitor: DNS reconciliation for Gordon

Primary LanguagePythonApache License 2.0Apache-2.0

gordon-janitor-gcp: GCP Plugin for the Reconciliation Service for Gordon

Google Cloud Platform (GCP) plugin for gordon-janitor, an open-source service that checks Cloud DNS records against a source of truth (e.g. Compute Engine) and submits corrections to gordon via Google Pubsub.

NOTICE: This is still in the planning phase and under active development. Gordon-Janitor should not be used in production, yet.

Requirements

  • Python 3.6. Support for other Python versions may be added in the future.
  • Service account JSON key that has relevant access (i.e. read and/or write) to the plugin service you're wanting to use (e.g. Google Cloud DNS, Pub/Sub, or Compute Engine). See Google's documentation on how to create a key.

Development

For development and running tests, your system must have all supported versions of Python installed. We suggest using pyenv.

Setup

$ git clone git@github.com:spotify/gordon-janitor-gcp.git && cd gordon-janitor-gcp
# make a virtualenv
(env) $ pip install -r dev-requirements.txt

Running tests

To run the entire test suite:

# outside of the virtualenv
# if tox is not yet installed
$ pip install tox
$ tox

If you want to run the test suite for a specific version of Python:

# outside of the virtualenv
$ tox -e py36

To run an individual test, call pytest directly:

# inside virtualenv
(env) $ pytest tests/test_foo.py

Build docs

To generate documentation:

(env) $ pip install -r docs-requirements.txt
(env) $ cd docs && make html  # builds HTML files into _build/html/
(env) $ cd _build/html
(env) $ python -m http.server $PORT

Then navigate to localhost:$PORT!

To watch for changes and automatically reload in the browser:

(env) $ cd docs
(env) $ make livehtml  # default port 8888
# to change port
(env) $ make livehtml PORT=8080

Code of Conduct

This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.