A configuration management service with support for secrets.
Go to file
Felipe Monteiro ba1fe1c9ec Fix pifpaf not returning error code upon test failure
For whatever reason, the following command:

   pifpaf run postgresql -- <test command>

is not returning a non-zero error code on test failure.

(An example print out is included below.)

This PS updates pretty_tox.sh to forcibly raise a non-zero error
code in the event of test failure. It also renames the script
to run_pifpaf.sh to be more intuitive.

Example:

======
Totals
======
Ran: 7 tests in 5.7673 sec.
 - Passed: 6
 - Skipped: 0
 - Expected Fail: 0
 - Unexpected Success: 0
 - Failed: 1
Sum of execute time for each test: 2.6962 sec.

==============
Worker Balance
==============
 - Worker 0 (7 tests) => 0:00:02.698323
+ exit 0

  py35: commands succeeded
  congratulations :)

Change-Id: I7b1fa9d42295d06752997f251a0ec14082b44d03
2018-01-15 17:01:34 -05:00
charts/deckhand Update Deckhand image: logging configuration values. 2018-01-12 19:51:10 -05:00
deckhand Validate correct documents used for rendering. 2018-01-15 14:36:10 -05:00
doc Sorting/filtering for rendered-documents. 2018-01-15 15:25:08 -04:00
etc/deckhand Rename Deckhand bucket endpoint to buckets for consistency 2017-10-27 19:21:03 +01:00
releasenotes Only allow one LayeringPolicy to exist in the system. 2017-10-26 17:38:24 -04:00
tools Fix pifpaf not returning error code upon test failure 2018-01-15 17:01:34 -05:00
.coveragerc Add Deckhand coverage job 2017-08-15 16:11:35 -04:00
.gitignore Deckhand Negative RBAC test scenarios 2017-10-31 17:37:39 +00: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 [docs] Document schemas used for document validation 2017-11-30 16:36: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
Makefile Fix initial 'make charts' failure 2017-11-09 16:23:32 -07:00
README.rst Docs: Include a high-level overview of Deckhand functionality 2018-01-14 22:40:41 -05:00
entrypoint.sh Update entrypoint.sh 2018-01-05 18:19:08 +00:00
requirements.txt DECKHAND-87: Deckhand API client library 2017-12-13 20:56:23 +00: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 Revert fix pifpaf run postgresql failing 2018-01-12 11:57:44 -04:00
tox.ini Fix pifpaf not returning error code upon test failure 2018-01-15 17:01:34 -05:00
uwsgi.ini Add health resource for ucp-integration API convention 2017-10-23 17:34:03 +01:00

README.rst

Deckhand

Deckhand is a storage service for YAML-based configuration documents, which are managed through version control and automatically validated. Deckhand provides users with a variety of different document types that describe complex configurations using the features listed below.

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 --ini uwsgi.ini

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, postgresql must be installed in your environment. Then 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

Intgration Points

Deckhand has the following integration points:

Note

Currently, other database backends are not supported.

Though, being a low-level service, has many other UCP services that integrate with it, including:

  • Drydock is orchestrated by Shipyard to perform bare metal node provisioning.
  • Promenade is indirectly orchestrated by Shipyard to configure and join Kubernetes nodes.
  • Armada is orchestrated by Shipyard to deploy and test Kubernetes workloads.

Further Reading

Undercloud Platform (UCP).