.coveragerc .dockerignore .stestr.conf .zuul.yaml AUTHORS ChangeLog HACKING.rst LICENSE Makefile README.rst REVIEWING.rst alembic.ini bindep.txt entrypoint.sh requirements-direct.txt requirements-frozen.txt requirements.txt setup.cfg setup.py test-requirements.txt tox.ini .github/SECURITY.md alembic/README alembic/env.py alembic/script.py.mako alembic/versions/918bbfd28185_initial_deckhand_base.py charts/deckhand/.helmignore charts/deckhand/Chart.yaml charts/deckhand/requirements.yaml charts/deckhand/values.yaml charts/deckhand/templates/configmap-bin.yaml charts/deckhand/templates/configmap-etc.yaml charts/deckhand/templates/deployment.yaml charts/deckhand/templates/ingress-api.yaml charts/deckhand/templates/job-db-init.yaml charts/deckhand/templates/job-db-sync.yaml charts/deckhand/templates/job-image-repo-sync.yaml charts/deckhand/templates/job-ks-endpoints.yaml charts/deckhand/templates/job-ks-service.yaml charts/deckhand/templates/job-ks-user.yaml charts/deckhand/templates/network_policy.yaml charts/deckhand/templates/secret-db.yaml charts/deckhand/templates/secret-ingress-tls.yaml charts/deckhand/templates/secret-keystone-env.yaml charts/deckhand/templates/service-ingress.yaml charts/deckhand/templates/service.yaml charts/deckhand/templates/bin/_db-sync.sh.tpl charts/deckhand/templates/tests/test-deckhand-api.yaml charts/deps/.gitkeep deckhand/__init__.py deckhand/cmd.py deckhand/context.py deckhand/errors.py deckhand/factories.py deckhand/policy.py deckhand/service.py deckhand/types.py deckhand/Deckhand.egg-info/PKG-INFO deckhand/Deckhand.egg-info/SOURCES.txt deckhand/Deckhand.egg-info/dependency_links.txt deckhand/Deckhand.egg-info/entry_points.txt deckhand/Deckhand.egg-info/not-zip-safe deckhand/Deckhand.egg-info/pbr.json deckhand/Deckhand.egg-info/requires.txt deckhand/Deckhand.egg-info/top_level.txt deckhand/barbican/__init__.py deckhand/barbican/cache.py deckhand/barbican/client_wrapper.py deckhand/barbican/driver.py deckhand/client/__init__.py deckhand/client/base.py deckhand/client/buckets.py deckhand/client/client.py deckhand/client/exceptions.py deckhand/client/revisions.py deckhand/client/tags.py deckhand/common/__init__.py deckhand/common/document.py deckhand/common/utils.py deckhand/common/validation_message.py deckhand/conf/__init__.py deckhand/conf/config.py deckhand/conf/opts.py deckhand/control/__init__.py deckhand/control/api.py deckhand/control/base.py deckhand/control/buckets.py deckhand/control/common.py deckhand/control/health.py deckhand/control/middleware.py deckhand/control/no_oauth_middleware.py deckhand/control/revision_deepdiffing.py deckhand/control/revision_diffing.py deckhand/control/revision_documents.py deckhand/control/revision_tags.py deckhand/control/revisions.py deckhand/control/rollback.py deckhand/control/validations.py deckhand/control/versions.py deckhand/control/views/__init__.py deckhand/control/views/document.py deckhand/control/views/revision.py deckhand/control/views/revision_tag.py deckhand/control/views/validation.py deckhand/db/__init__.py deckhand/db/sqlalchemy/__init__.py deckhand/db/sqlalchemy/api.py deckhand/db/sqlalchemy/models.py deckhand/engine/__init__.py deckhand/engine/_replacement.py deckhand/engine/cache.py deckhand/engine/document_validation.py deckhand/engine/layering.py deckhand/engine/render.py deckhand/engine/revision_diff.py deckhand/engine/secrets_manager.py deckhand/engine/utils.py deckhand/engine/schemas/base_schema.yaml deckhand/engine/schemas/certificate_authority_key_schema.yaml deckhand/engine/schemas/certificate_authority_schema.yaml deckhand/engine/schemas/certificate_key_schema.yaml deckhand/engine/schemas/certificate_schema.yaml deckhand/engine/schemas/layering_policy_schema.yaml deckhand/engine/schemas/metadata_control.yaml deckhand/engine/schemas/metadata_document.yaml deckhand/engine/schemas/passphrase_schema.yaml deckhand/engine/schemas/private_key_schema.yaml deckhand/engine/schemas/public_key_schema.yaml deckhand/engine/schemas/validation_policy_schema.yaml deckhand/policies/__init__.py deckhand/policies/base.py deckhand/policies/document.py deckhand/policies/revision.py deckhand/policies/revision_tag.py deckhand/policies/validation.py deckhand/tests/__init__.py deckhand/tests/deckhand.conf.test deckhand/tests/test_utils.py deckhand/tests/common/__init__.py deckhand/tests/common/test_gabbi.py deckhand/tests/functional/README.rst deckhand/tests/functional/gabbits/document/document-crud-error-bucket-conflict.yaml deckhand/tests/functional/gabbits/document/document-crud-success-multi-bucket.yaml deckhand/tests/functional/gabbits/document/document-crud-success-owned-documents.yaml deckhand/tests/functional/gabbits/document/document-crud-success-single-bucket.yaml deckhand/tests/functional/gabbits/document/document-crud-success-unusual-documents.yaml deckhand/tests/functional/gabbits/layering/layering-multiple-bucket.yaml deckhand/tests/functional/gabbits/layering/layering-policy-conflict.yaml deckhand/tests/functional/gabbits/layering/layering-single-bucket.yaml deckhand/tests/functional/gabbits/layering/layering-with-replacement-single-bucket.yaml deckhand/tests/functional/gabbits/layering/layering-with-substitution-single-bucket.yaml deckhand/tests/functional/gabbits/replacement/multi-layer-replacement.yaml deckhand/tests/functional/gabbits/replacement/replacement.yaml deckhand/tests/functional/gabbits/resources/chained-substitution.yaml deckhand/tests/functional/gabbits/resources/deckhand-owned-sample.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-2-layers.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-3-layers.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-split-bucket-a.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-split-bucket-b.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-with-delete.yaml deckhand/tests/functional/gabbits/resources/design-doc-layering-sample-with-update.yaml deckhand/tests/functional/gabbits/resources/design-doc-substitution-generic-sample.yaml deckhand/tests/functional/gabbits/resources/design-doc-substitution-sample-split-bucket-a.yaml deckhand/tests/functional/gabbits/resources/design-doc-substitution-sample-split-bucket-b.yaml deckhand/tests/functional/gabbits/resources/design-doc-substitution-sample.yaml deckhand/tests/functional/gabbits/resources/layering-and-substitution-dag-sample.yaml deckhand/tests/functional/gabbits/resources/layering-and-substitution-sample.yaml deckhand/tests/functional/gabbits/resources/layering-needs-substitution-source.yaml deckhand/tests/functional/gabbits/resources/passphrase.yaml deckhand/tests/functional/gabbits/resources/replacement.yaml deckhand/tests/functional/gabbits/resources/sample-doc.yaml deckhand/tests/functional/gabbits/resources/sample-schema-v2.yaml deckhand/tests/functional/gabbits/resources/sample-schema.yaml deckhand/tests/functional/gabbits/resources/sample-tag-data.yaml deckhand/tests/functional/gabbits/resources/substitution-results-in-none-bug.yaml deckhand/tests/functional/gabbits/resources/ucp-sample-documents.yaml deckhand/tests/functional/gabbits/resources/unusual-documents.yaml deckhand/tests/functional/gabbits/revision/revision-crud-success-single-bucket.yaml deckhand/tests/functional/gabbits/revision/revision-filters.yaml deckhand/tests/functional/gabbits/revision-deepdiff/revision-deepdiff-success.yaml deckhand/tests/functional/gabbits/revision-diff/revision-diff-rollback-null-success.yaml deckhand/tests/functional/gabbits/revision-diff/revision-diff-success.yaml deckhand/tests/functional/gabbits/revision-documents/revision-documents-filters-negative.yaml deckhand/tests/functional/gabbits/revision-documents/revision-documents-filters.yaml deckhand/tests/functional/gabbits/revision-documents/revision-documents-multiple-filters.yaml deckhand/tests/functional/gabbits/revision-rollback/rollback-success-single-bucket.yaml deckhand/tests/functional/gabbits/revision-tag/revision-tag-success.yaml deckhand/tests/functional/gabbits/substitution/substitution-chained-single-bucket.yaml deckhand/tests/functional/gabbits/substitution/substitution-multiple-bucket.yaml deckhand/tests/functional/gabbits/substitution/substitution-results-in-none-bug.yaml deckhand/tests/functional/gabbits/substitution/substitution-single-bucket-generic.yaml deckhand/tests/functional/gabbits/substitution/substitution-single-bucket.yaml deckhand/tests/functional/gabbits/substitution/substitution-source-feeds-multi-dest.yaml deckhand/tests/integration/README.rst deckhand/tests/integration/__init__.py deckhand/tests/integration/gabbits/document-crud-secret.yaml deckhand/tests/integration/gabbits/document-render-secret-edge-cases.yaml deckhand/tests/integration/gabbits/document-render-secret.yaml deckhand/tests/integration/gabbits/document-substitution-secret-generic.yaml deckhand/tests/integration/gabbits/document-substitution-secret.yaml deckhand/tests/integration/gabbits/revision-delete-all-secrets.yaml deckhand/tests/unit/__init__.py deckhand/tests/unit/base.py deckhand/tests/unit/dh_fixtures.py deckhand/tests/unit/fake_policy.py deckhand/tests/unit/test_policy.py deckhand/tests/unit/barbican/__init__.py deckhand/tests/unit/barbican/test_cache.py deckhand/tests/unit/common/__init__.py deckhand/tests/unit/common/test_utils.py deckhand/tests/unit/control/__init__.py deckhand/tests/unit/control/base.py deckhand/tests/unit/control/test_api_initialization.py deckhand/tests/unit/control/test_base_controller.py deckhand/tests/unit/control/test_buckets_controller.py deckhand/tests/unit/control/test_errors.py deckhand/tests/unit/control/test_health_controller.py deckhand/tests/unit/control/test_middleware.py deckhand/tests/unit/control/test_rendered_documents_controller.py deckhand/tests/unit/control/test_revision_documents_controller.py deckhand/tests/unit/control/test_revision_tags_controller.py deckhand/tests/unit/control/test_revisions_controller.py deckhand/tests/unit/control/test_revisions_deepdiff_controller.py deckhand/tests/unit/control/test_revisions_diff_controller.py deckhand/tests/unit/control/test_revisions_rollback_controller.py deckhand/tests/unit/control/test_versions_controller.py deckhand/tests/unit/db/__init__.py deckhand/tests/unit/db/test_documents.py deckhand/tests/unit/db/test_documents_negative.py deckhand/tests/unit/db/test_layering_policies.py deckhand/tests/unit/db/test_revision_documents.py deckhand/tests/unit/db/test_revision_rollback.py deckhand/tests/unit/db/test_revision_tags.py deckhand/tests/unit/db/test_revision_tags_negative.py deckhand/tests/unit/db/test_revisions.py deckhand/tests/unit/engine/__init__.py deckhand/tests/unit/engine/base.py deckhand/tests/unit/engine/test_cache.py deckhand/tests/unit/engine/test_document_layering.py deckhand/tests/unit/engine/test_document_layering_and_replacement.py deckhand/tests/unit/engine/test_document_layering_and_replacement_negative.py deckhand/tests/unit/engine/test_document_layering_and_substitution.py deckhand/tests/unit/engine/test_document_layering_and_substitution_negative.py deckhand/tests/unit/engine/test_document_layering_negative.py deckhand/tests/unit/engine/test_document_validation.py deckhand/tests/unit/engine/test_document_validation_negative.py deckhand/tests/unit/engine/test_revision_deepdiffing.py deckhand/tests/unit/engine/test_revision_diffing.py deckhand/tests/unit/engine/test_secrets_manager.py deckhand/tests/unit/resources/sample_certificate.yaml deckhand/tests/unit/resources/sample_certificate_authority.yaml deckhand/tests/unit/resources/sample_certificate_authority_key.yaml deckhand/tests/unit/resources/sample_certificate_key.yaml deckhand/tests/unit/resources/sample_data_schema.yaml deckhand/tests/unit/resources/sample_document.yaml deckhand/tests/unit/resources/sample_document_simple.yaml deckhand/tests/unit/resources/sample_layering_policy.yaml deckhand/tests/unit/resources/sample_passphrase.yaml deckhand/tests/unit/resources/sample_private_key.yaml deckhand/tests/unit/resources/sample_public_key.yaml deckhand/tests/unit/resources/sample_validation_policy.yaml deckhand/tests/unit/views/__init__.py deckhand/tests/unit/views/test_document_views.py deckhand/tests/unit/views/test_revision_tag_views.py deckhand/tests/unit/views/test_revision_views.py doc/.gitignore doc/requirements-docs.txt doc/source/conf.py doc/source/glossary.rst doc/source/index.rst doc/source/overview.rst doc/source/releasenotes doc/source/_static/.placeholder doc/source/contributor/HACKING.rst doc/source/contributor/REVIEWING.rst doc/source/contributor/developer-overview.rst doc/source/contributor/index.rst doc/source/contributor/policy-enforcement.rst doc/source/contributor/testing.rst doc/source/diagrams/architecture-pegleg.uml doc/source/diagrams/architecture.uml doc/source/operators/api_client.rst doc/source/operators/api_ref.rst doc/source/operators/configuration.rst doc/source/operators/exceptions.rst doc/source/operators/index.rst doc/source/operators/multi-distro-support.rst doc/source/users/document-types.rst doc/source/users/documents.rst doc/source/users/encryption.rst doc/source/users/getting-started.rst doc/source/users/index.rst doc/source/users/layering.rst doc/source/users/rendering.rst doc/source/users/replacement.rst doc/source/users/revision-history.rst doc/source/users/substitution.rst doc/source/users/validation.rst etc/deckhand/config-generator.conf etc/deckhand/deckhand-paste.ini etc/deckhand/deckhand.conf.sample etc/deckhand/logging.conf.sample etc/deckhand/noauth-paste.ini etc/deckhand/policy-generator.conf etc/deckhand/policy.yaml.sample images/deckhand/Dockerfile.opensuse_15 images/deckhand/Dockerfile.ubuntu_focal releasenotes/notes/development-mode-51208c39e9eee34f.yaml releasenotes/notes/fix-attribute-error-in-bucket-controller-b5c9e410823abd19.yaml releasenotes/notes/fix-unique-layering-policy-bac2940c3deeba51.yaml releasenotes/notes/list-validations-details-endpoint-c3f18963b1372e40.yaml releasenotes/notes/oslo.policy-integration-f03ac6a7a2ccef5a.yaml releasenotes/notes/revision-document-filtering-0e57274a4fc1bc07.yaml releasenotes/notes/rm-pep8-ignores-974a114e488ff1ea.yaml releasenotes/notes/secret-substitution-6eff2c93bf11d82e.yaml releasenotes/notes/validations-api-cf07c8b6b5040f67.yaml releasenotes/source/conf.py releasenotes/source/index.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder tools/build-docs.sh tools/common-tests.sh tools/functional-tests.sh tools/helm_install.sh tools/helm_tk.sh tools/image_tags.py tools/integration-tests.sh tools/run_pifpaf.sh tools/unit-tests.sh tools/whitespace-linter.sh tools/gate/playbooks/airskiff-deploy.yaml tools/gate/playbooks/airskiff-reduce-site.yaml tools/gate/playbooks/build-charts.yaml tools/gate/playbooks/debug-report.yaml tools/gate/playbooks/docker-image-build.yaml tools/gate/playbooks/docker-image-tag.yaml tools/gate/playbooks/git-config.yaml tools/gate/playbooks/install-postgresql.yaml tools/gate/playbooks/osh-infra-build.yaml tools/gate/playbooks/osh-infra-collect-logs.yaml tools/gate/playbooks/osh-infra-deploy-docker.yaml tools/gate/playbooks/osh-infra-deploy-k8s.yaml tools/gate/playbooks/osh-infra-upgrade-host.yaml tools/gate/playbooks/roles tools/gate/playbooks/run-functional-tests-docker.yaml tools/gate/playbooks/run-functional-tests-uwsgi.yaml tools/gate/playbooks/run-integration-tests-docker.yaml tools/gate/playbooks/run-integration-tests-uwsgi.yaml tools/gate/playbooks/vars.yaml tools/gate/roles/build-charts/tasks/build-charts.yaml tools/gate/roles/build-charts/tasks/main.yaml tools/gate/roles/build-images/defaults/main.yaml tools/gate/roles/build-images/tasks/build-airship-deckhand-image.yaml tools/gate/roles/build-images/tasks/main.yaml tools/gate/roles/deploy-apparmor/tasks/main.yaml tools/gate/roles/deploy-barbican/tasks/deploy-barbican.yaml tools/gate/roles/deploy-barbican/tasks/main.yaml tools/gate/roles/deploy-deckhand/tasks/deploy-deckhand.yaml tools/gate/roles/deploy-deckhand/tasks/main.yaml tools/gate/roles/deploy-keystone-dependencies/tasks/deploy-keystone-dependencies.yaml tools/gate/roles/deploy-keystone-dependencies/tasks/main.yaml tools/gate/roles/deploy-postgresql/tasks/deploy-postgresql.yaml tools/gate/roles/deploy-postgresql/tasks/main.yaml tools/gate/roles/disable-systemd-resolved/tasks/disable-systemd-resolved.yaml tools/gate/roles/disable-systemd-resolved/tasks/main.yaml tools/gate/roles/generate-test-config/tasks/generate-test-config.yaml tools/gate/roles/generate-test-config/tasks/generate-test-paste.yaml tools/gate/roles/generate-test-config/tasks/main.yaml tools/gate/roles/install-postgresql/tasks/install-postgresql.yaml tools/gate/roles/install-postgresql/tasks/main.yaml tools/gate/roles/install-test-requirements/tasks/install-test-requirements.yaml tools/gate/roles/install-test-requirements/tasks/main.yaml tools/gate/roles/run-functional-tests/tasks/functional-tests.yaml tools/gate/roles/run-functional-tests/tasks/main.yaml tools/gate/roles/run-integration-tests/tasks/integration-tests.yaml tools/gate/roles/run-integration-tests/tasks/main.yaml tools/gate/scripts/010-build-charts.sh tools/gate/scripts/020-deploy-postgresql.sh