A configuration management service with support for secrets.
Go to file
Anthony Lin d30e93e453 Update DeckHand Chart
There has been recent changes to the Helm Toolkit which broke
the DeckHand Chart

The changes in Helm Toolkit were made to the 'images' definition
in values.yaml to facilitate adding the option to prefix image
name etc

This P.S. updates the DeckHand Chart to align with the recent
changes in Helm Toolkit

Change-Id: I0c9ddfd8b06be7dedcd030d94e381bf4e3f1d210
2017-10-24 00:47:55 +00:00
charts/deckhand Update DeckHand Chart 2017-10-24 00:47:55 +00:00
deckhand DECKHAND-80: Validations API Implementation 2017-10-21 23:09:16 -04:00
doc/source Revamp Deckhand documentation 2017-10-16 20:11:56 +01:00
etc/deckhand DECKHAND-80: Validations API Implementation 2017-10-21 23:09:16 -04:00
releasenotes DECKHAND-80: Validations API Implementation 2017-10-21 23:09:16 -04:00
tools Integrate Deckhand with keystone auth 2017-10-16 19:54:46 +01:00
.coveragerc Add Deckhand coverage job 2017-08-15 16:11:35 -04:00
.gitignore Add Deckhand coverage job 2017-08-15 16:11:35 -04:00
.gitreview Add gitreview file 2017-08-11 01:22:26 -05:00
.testr.conf [feat] DECKHAND-28: Document pre-validation logic and API integration 2017-08-08 18:52:44 +01:00
AUTHORS DECKHAND-66: Document substitution implementation 2017-10-13 15:16:27 -04:00
Dockerfile DeckHand Dockerfile 2017-09-14 16:50:06 +00:00
HACKING.rst Add sphinx job for auto-generating docs 2017-09-21 16:16:23 +01:00
LICENSE Initial commit 2017-06-16 08:29:03 -07:00
README.rst Revamp Deckhand documentation 2017-10-16 20:11:56 +01:00
entrypoint.sh DeckHand Dockerfile 2017-09-14 16:50:06 +00:00
requirements.txt Integrate Deckhand with keystone auth 2017-10-16 19:54:46 +01:00
setup.cfg Integrate Deckhand with keystone auth 2017-10-16 19:54:46 +01:00
setup.py Oslo config integration (#1) 2017-06-26 16:57:50 -07:00
test-requirements.txt Add releasenote management 2017-10-03 20:58:12 +01:00
tox.ini DECKHAND-61: oslo.policy integration 2017-10-07 18:43:28 +01:00

README.rst

Deckhand

Deckhand is a document-based configuration storage service built with auditability and validation in mind.

Core Responsibilities

  • layering - helps reduce duplication in configuration while maintaining auditability across many sites
  • substitution - provides separation between secret data and other configuration data, while allowing a simple interface for clients
  • revision history - improves auditability and enables services to provide functional validation of a well-defined collection of documents that are meant to operate together
  • validation - allows services to implement and register different kinds of validations and report errors

Getting Started

To generate a configuration file automatically:

$ tox -e genconfig

Resulting deckhand.conf.sample file is output to :path:etc/deckhand/deckhand.conf.sample

Copy the config file to a directory discoverably by oslo.conf:

$ cp etc/deckhand/deckhand.conf.sample ~/deckhand.conf

To setup an in-memory database for testing:

[database]

#
# From oslo.db
#

# The SQLAlchemy connection string to use to connect to the database.
# (string value)
connection = sqlite:///:memory:

To run locally in a development environment:

$ sudo pip install uwsgi
$ virtualenv -p python3 /var/tmp/deckhand
$ . /var/tmp/deckhand/bin/activate
$ sudo pip install .
$ sudo python setup.py install
$ uwsgi --http :9000 -w deckhand.cmd --callable deckhand_callable --enable-threads -L

Testing

Automated Testing

To run unit tests using sqlite, execute:

$ tox -epy27
$ tox -epy35

against a py27- or py35-backed environment, respectively. To run individual unit tests, run:

$ tox -e py27 -- deckhand.tests.unit.db.test_revisions

for example.

To run unit tests using postgresql, execute:

$ tox -epy27-postgresql
$ tox -epy35-postgresql

To run functional tests:

$ tox -e functional

You can also run a subset of tests via a regex:

$ tox -e functional -- gabbi.suitemaker.test_gabbi_document-crud-success-multi-bucket

Manual Testing

Document creation can be tested locally using (from root deckhand directory):

$ curl -i -X PUT localhost:9000/api/v1.0/bucket/{bucket_name}/documents \
     -H "Content-Type: application/x-yaml" \
     --data-binary "@deckhand/tests/unit/resources/sample_document.yaml"

# revision_id copy/pasted from previous response.
$ curl -i -X GET localhost:9000/api/v1.0/revisions/1