Fix: Drydock Exceptions docs rendering on RTD
Readthedocs failed to render Drydock exceptions with error: > WARNING: autodoc: failed to import exception xxx from module > 'drydock_provisioner'; the following exception was raised: No module > named 'drydock_provisioner' Trying to add Drydock requirements to the installed requirements list, so that Readthedocs has all modules, including those needed for the Drydock itself. Unify docs building by utilizing Zuul docs-on-readthedocs template job. Cosmetic readability changes: 1. combined all Makefile .PHONY targets into one 2. merged multiple LABEL instructions in Dockerfile into one Change-Id: I6a9b47cffc66d739968fa886c51e25b1e09ef124
This commit is contained in:
parent
2cf960f4fc
commit
161326fe06
25
.readthedocs.yaml
Normal file
25
.readthedocs.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# .readthedocs.yml
|
||||||
|
# Read the Docs configuration file
|
||||||
|
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||||
|
|
||||||
|
# Required
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
# Build documentation in the doc/ directory with Sphinx
|
||||||
|
sphinx:
|
||||||
|
configuration: doc/source/conf.py
|
||||||
|
|
||||||
|
# Build documentation with MkDocs
|
||||||
|
#mkdocs:
|
||||||
|
# configuration: mkdocs.yml
|
||||||
|
|
||||||
|
# Optionally build your docs in additional formats such as PDF and ePub
|
||||||
|
formats:
|
||||||
|
- pdf
|
||||||
|
|
||||||
|
# Optionally set the version of Python and requirements required to build your docs
|
||||||
|
python:
|
||||||
|
version: 3.7
|
||||||
|
install:
|
||||||
|
- requirements: doc/requirements-doc.txt
|
||||||
|
- requirements: requirements-host.txt
|
46
.zuul.yaml
46
.zuul.yaml
@ -11,6 +11,11 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
|
templates:
|
||||||
|
- docs-on-readthedocs
|
||||||
|
vars:
|
||||||
|
rtd_webhook_id: '38809'
|
||||||
|
rtd_project_name: 'airship-drydock'
|
||||||
check:
|
check:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-drydock-omni-test
|
- airship-drydock-omni-test
|
||||||
@ -26,7 +31,6 @@
|
|||||||
|
|
||||||
post:
|
post:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-drydock-doc-publish
|
|
||||||
- airship-drydock-docker-publish
|
- airship-drydock-docker-publish
|
||||||
- drydock-upload-git-mirror
|
- drydock-upload-git-mirror
|
||||||
|
|
||||||
@ -70,7 +74,7 @@
|
|||||||
run: tools/gate/playbooks/docker-image-build.yaml
|
run: tools/gate/playbooks/docker-image-build.yaml
|
||||||
nodeset: airship-drydock-single-node
|
nodeset: airship-drydock-single-node
|
||||||
irrelevant-files:
|
irrelevant-files:
|
||||||
- '^docs/.*'
|
- '^doc/.*'
|
||||||
- '^charts/.*'
|
- '^charts/.*'
|
||||||
vars:
|
vars:
|
||||||
publish: false
|
publish: false
|
||||||
@ -86,7 +90,7 @@
|
|||||||
secrets:
|
secrets:
|
||||||
- airship_drydock_quay_creds
|
- airship_drydock_quay_creds
|
||||||
irrelevant-files:
|
irrelevant-files:
|
||||||
- '^docs/.*'
|
- '^doc/.*'
|
||||||
- '^charts/.*'
|
- '^charts/.*'
|
||||||
vars:
|
vars:
|
||||||
publish: true
|
publish: true
|
||||||
@ -97,16 +101,6 @@
|
|||||||
static:
|
static:
|
||||||
- latest
|
- latest
|
||||||
|
|
||||||
- job:
|
|
||||||
name: airship-drydock-doc-publish
|
|
||||||
description: |
|
|
||||||
Publish documentation on airship-drydock.readthedocs.io
|
|
||||||
run: tools/gate/playbooks/doc-publish.yaml
|
|
||||||
secrets:
|
|
||||||
- airship_drydock_readthedocs
|
|
||||||
timeout: 300
|
|
||||||
nodeset: airship-drydock-single-node
|
|
||||||
|
|
||||||
- secret:
|
- secret:
|
||||||
name: airship_drydock_quay_creds
|
name: airship_drydock_quay_creds
|
||||||
data:
|
data:
|
||||||
@ -133,32 +127,6 @@
|
|||||||
B1qsfXoY9lVL59lCl4jYLqyGA99Oybi5YKTP8O+IH5Xo7XLOje7K0Vfvh7v8Mcja8pZRG
|
B1qsfXoY9lVL59lCl4jYLqyGA99Oybi5YKTP8O+IH5Xo7XLOje7K0Vfvh7v8Mcja8pZRG
|
||||||
sgRbPr/10a2g6+s37XofkFEeba7B8fV5h6v/A3tMy7U01rZ2qLBC/4hxrikXT8=
|
sgRbPr/10a2g6+s37XofkFEeba7B8fV5h6v/A3tMy7U01rZ2qLBC/4hxrikXT8=
|
||||||
|
|
||||||
- secret:
|
|
||||||
name: airship_drydock_readthedocs
|
|
||||||
data:
|
|
||||||
url: !encrypted/pkcs1-oaep
|
|
||||||
- dcOaNb6+3zCSp8rlmaA8U/v8kxzsB9MPqmbfbFSoyCsXOAMvluYSitmF7XpYdZLOXPOvm
|
|
||||||
+stE6m57dRBDlryymoLHVUxgeAkA/4YR1/78tF8vTLBDbWaLXVLTFBjx6jg17nS9X/UKs
|
|
||||||
W+UtSA1rVmeoaF8jrxO+c0IJjhgRDchFyPa9s7CnrxUn12IN6IDym0YcUQLxUOFzofm3F
|
|
||||||
fCtwFY84lRCJhB80jfXuYPlIdxTO3q245JlDvhRm4y6p/qCNljNm/Kw6o6ngKjh0f/CM6
|
|
||||||
7oFZPsE1XDYWGvR0msq8rjCST6k380vIBeroOqfwRhrjU5YCTgZy2kmw/veY3eGs5bEbb
|
|
||||||
OBZeIb6mk1+D9bmRbFaTmVns7E+a6Fdz/rrttebmak8aBATQD9sgBnvghFAAHibT4LNdn
|
|
||||||
ic+eEy/RXqyHqZuIPukQjAF0FgfK7jDqVzB/scx2tpw7lYwpDZM8bOHFNIAC4zRVg66O2
|
|
||||||
1HPo4egknU8MQRy1FwNm7A91AY2cKZSusfrQlND/vflK27/lxCdHoOYw8JVaGxe02Ac+n
|
|
||||||
XapfJuj7tAkFF+jeaWamB5CMiC+4M3zsrReB2/kqbxGFXC0nQ9q9AbVg48zCZFxNTVMLj
|
|
||||||
J5K79voMoMmFoP14trhneFDs1Ki8FOLU1fqU7KrBYrlixI4FJwJ6ljEM9C/OvU=
|
|
||||||
token: !encrypted/pkcs1-oaep
|
|
||||||
- i6Js243rxTsL0V1l5UWsJalCiRh3kYs54nBz0M9KKrE5YYdAYkD59jKSPncUeG7V+VTkr
|
|
||||||
LuwGpI837r/oaYqD7g4ZZhsE/X+xSE1PSdtsSY3t5GZZAPdKG4oSLxl0buTd23JsS6cU4
|
|
||||||
7IAh4Q28wtaIXg8fZ69KVkGm2f2nXPNKbUH/yPTjFW51yEXI55AClNKzv+mVKLd1PNdCN
|
|
||||||
USQkmF4fvgFreQym+NkZrUh78YMQI1uNT1e7rhD/jxYCjhZGAEr0Clxiu8UmLIRvxHgc2
|
|
||||||
2SM99xT8s0/dRudePkSz3zXSagwWvdat8bHqpGHJrakjZvePtGeZrdk20v7JQHt8T3XBp
|
|
||||||
InfWRB8ad/gDvgpstXiag4EHsJ7tnFuwsFDh+KSYySBjtkbYqY8Rx8lQ5qW/Qgk96LagJ
|
|
||||||
yzpin6EquBcnnPNTGTYLRF9jtowzbI8G9ItRRWdvkIQSlMQDxROI4bVEnfLHgRMbAKVjF
|
|
||||||
1oSaiEzMwMHj356qYBS06pBBF3Dr/OCIZNiBy3UU8J6OJt2XchMgy9TVhsGkj+HE092d+
|
|
||||||
mADSwkA5TpfWJCo8rqTDO8cCXIeiG8kBoxjph5m7YNWUcbuRDQdbga1FjV4lMe9bMyOo5
|
|
||||||
AJ6O8hl3q7CJElLw6Z7p9vW2wHUf/xr242pZnk70DiMkyXxzJFLLqvRsWctTDc=
|
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: drydock-upload-git-mirror
|
name: drydock-upload-git-mirror
|
||||||
parent: upload-git-mirror
|
parent: upload-git-mirror
|
||||||
|
36
Makefile
36
Makefile
@ -32,15 +32,12 @@ GO_BUILDER ?= docker.io/golang:1.10-stretch
|
|||||||
export
|
export
|
||||||
|
|
||||||
# Build all docker images for this project
|
# Build all docker images for this project
|
||||||
.PHONY: images
|
|
||||||
images: build_drydock
|
images: build_drydock
|
||||||
|
|
||||||
# Run an image locally and exercise simple tests
|
# Run an image locally and exercise simple tests
|
||||||
.PHONY: run_images
|
|
||||||
run_images: run_drydock
|
run_images: run_drydock
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
.PHONY: tests
|
|
||||||
tests: pep8 security docs unit_tests test_baclient
|
tests: pep8 security docs unit_tests test_baclient
|
||||||
|
|
||||||
# Install external (not managed by tox/pip) dependencies
|
# Install external (not managed by tox/pip) dependencies
|
||||||
@ -49,63 +46,51 @@ external_dep: requirements-host.txt requirements-host-test.txt
|
|||||||
touch external_dep
|
touch external_dep
|
||||||
|
|
||||||
# Run unit and Postgres integration tests in coverage mode
|
# Run unit and Postgres integration tests in coverage mode
|
||||||
.PHONY: coverage_test
|
|
||||||
coverage_test: build_drydock
|
coverage_test: build_drydock
|
||||||
tox -re cover
|
tox -re cover
|
||||||
|
|
||||||
# Run just unit tests
|
# Run just unit tests
|
||||||
.PHONY: unit_tests
|
|
||||||
unit_tests: external_dep
|
unit_tests: external_dep
|
||||||
tox -re py35 $(TESTS)
|
tox -re py35 $(TESTS)
|
||||||
|
|
||||||
# Run just DB integration tests
|
# Run just DB integration tests
|
||||||
.PHONY: db_integration_tests
|
|
||||||
db_integration_tests: external_dep
|
db_integration_tests: external_dep
|
||||||
tox -re integration $(TESTS)
|
tox -re integration $(TESTS)
|
||||||
|
|
||||||
# Freeze full set of Python requirements
|
# Freeze full set of Python requirements
|
||||||
.PHONY: req_freeze
|
|
||||||
req_freeze:
|
req_freeze:
|
||||||
tox -re freeze
|
tox -re freeze
|
||||||
|
|
||||||
# Run the drydock container and exercise simple tests
|
# Run the drydock container and exercise simple tests
|
||||||
.PHONY: run_drydock
|
|
||||||
run_drydock: build_drydock
|
run_drydock: build_drydock
|
||||||
tools/drydock_image_run.sh
|
tools/drydock_image_run.sh
|
||||||
|
|
||||||
# It seems CICD expects the target 'drydock' to
|
# It seems CICD expects the target 'drydock' to
|
||||||
# build the chart
|
# build the chart
|
||||||
.PHONY: drydock
|
|
||||||
drydock: charts
|
drydock: charts
|
||||||
|
|
||||||
# Create tgz of the chart
|
# Create tgz of the chart
|
||||||
.PHONY: charts
|
|
||||||
charts: helm-init
|
charts: helm-init
|
||||||
$(HELM) dep up charts/drydock
|
$(HELM) dep up charts/drydock
|
||||||
$(HELM) package charts/drydock
|
$(HELM) package charts/drydock
|
||||||
|
|
||||||
# Perform Linting
|
# Perform Linting
|
||||||
.PHONY: lint
|
|
||||||
lint: pep8 helm_lint
|
lint: pep8 helm_lint
|
||||||
|
|
||||||
# Dry run templating of chart
|
# Dry run templating of chart
|
||||||
.PHONY: dry-run
|
|
||||||
dry-run: helm-init
|
dry-run: helm-init
|
||||||
$(HELM) template --set manifests.secret_ssh_key=true --set conf.ssh.private_key=foo charts/drydock
|
$(HELM) template --set manifests.secret_ssh_key=true --set conf.ssh.private_key=foo charts/drydock
|
||||||
|
|
||||||
# Initialize local helm config
|
# Initialize local helm config
|
||||||
.PHONY: helm-init
|
|
||||||
helm-init: helm-install
|
helm-init: helm-install
|
||||||
tools/helm_tk.sh $(HELM)
|
tools/helm_tk.sh $(HELM)
|
||||||
|
|
||||||
# Install helm binary
|
# Install helm binary
|
||||||
.PHONY: helm-install
|
|
||||||
helm-install:
|
helm-install:
|
||||||
tools/helm_install.sh $(HELM)
|
tools/helm_install.sh $(HELM)
|
||||||
|
|
||||||
# Make targets intended for use by the primary targets above.
|
# Make targets intended for use by the primary targets above.
|
||||||
|
|
||||||
.PHONY: build_drydock
|
|
||||||
build_drydock: external_dep build_baclient
|
build_drydock: external_dep build_baclient
|
||||||
export; tools/drydock_image_build.sh
|
export; tools/drydock_image_build.sh
|
||||||
ifeq ($(PUSH_IMAGE), true)
|
ifeq ($(PUSH_IMAGE), true)
|
||||||
@ -113,49 +98,44 @@ ifeq ($(PUSH_IMAGE), true)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Make target for building bootaction signal client
|
# Make target for building bootaction signal client
|
||||||
.PHONY: build_baclient
|
|
||||||
build_baclient: external_dep
|
build_baclient: external_dep
|
||||||
docker run -tv $(shell realpath go):/work -v $(shell realpath $(BUILD_DIR)):/build -e GOPATH=/work $(GO_BUILDER) go build -o /build/baclient baclient
|
docker run -tv $(shell realpath go):/work -v $(shell realpath $(BUILD_DIR)):/build -e GOPATH=/work $(GO_BUILDER) go build -o /build/baclient baclient
|
||||||
|
|
||||||
# Make target for testing bootaction signal client
|
# Make target for testing bootaction signal client
|
||||||
.PHONY: test_baclient
|
|
||||||
test_baclient: external_dep
|
test_baclient: external_dep
|
||||||
docker run -tv $(shell realpath go):/work -e GOPATH=/work $(GO_BUILDER) go test -v baclient
|
docker run -tv $(shell realpath go):/work -e GOPATH=/work $(GO_BUILDER) go test -v baclient
|
||||||
|
|
||||||
.PHONY: docs
|
|
||||||
docs: clean drydock_docs
|
docs: clean drydock_docs
|
||||||
|
|
||||||
.PHONY: security
|
|
||||||
security: external_dep
|
security: external_dep
|
||||||
tox -e bandit
|
tox -e bandit
|
||||||
|
|
||||||
.PHONY: drydock_docs
|
|
||||||
drydock_docs: external_dep render_diagrams genpolicy genconfig
|
drydock_docs: external_dep render_diagrams genpolicy genconfig
|
||||||
tox -e docs
|
tox -e docs
|
||||||
|
|
||||||
.PHONY: render_diagrams
|
|
||||||
render_diagrams:
|
render_diagrams:
|
||||||
plantuml -v -tpng -o ../source/images docs/diagrams/*.uml
|
plantuml -v -tpng -o ../source/images doc/diagrams/*.uml
|
||||||
|
|
||||||
.PHONY: genpolicy
|
|
||||||
genpolicy:
|
genpolicy:
|
||||||
tox -e genpolicy
|
tox -e genpolicy
|
||||||
|
|
||||||
.PHONY: genconfig
|
|
||||||
genconfig:
|
genconfig:
|
||||||
tox -e genconfig
|
tox -e genconfig
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf build
|
||||||
rm -rf docs/build
|
rm -rf doc/build
|
||||||
rm -rf charts/drydock/charts
|
rm -rf charts/drydock/charts
|
||||||
rm -rf charts/drydock/requirements.lock
|
rm -rf charts/drydock/requirements.lock
|
||||||
|
|
||||||
.PHONY: pep8
|
|
||||||
pep8: external_dep
|
pep8: external_dep
|
||||||
tox -e pep8
|
tox -e pep8
|
||||||
|
|
||||||
.PHONY: helm_lint
|
|
||||||
helm_lint: helm-init
|
helm_lint: helm-init
|
||||||
$(HELM) lint charts/drydock
|
$(HELM) lint charts/drydock
|
||||||
|
|
||||||
|
.PHONY: build_baclient build_drydock charts clean coverage_test \
|
||||||
|
db_integration_tests docs drydock drydock_docs dry-run genconfig \
|
||||||
|
genpolicy helm-init helm-install helm_lint images lint pep8 \
|
||||||
|
render_diagrams req_freeze run_drydock run_images security \
|
||||||
|
test_baclient tests unit_tests
|
||||||
|
@ -17,12 +17,14 @@
|
|||||||
API Errors
|
API Errors
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.ClientError
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: ClientError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.InvalidFormat
|
.. autoexception:: InvalidFormat
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -18,17 +18,19 @@
|
|||||||
Bootaction Errors
|
Bootaction Errors
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.InvalidAssetLocation
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: InvalidAssetLocation
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.PipelineFailure
|
.. autoexception:: PipelineFailure
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.UnknownPipelineSegment
|
.. autoexception:: UnknownPipelineSegment
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -18,7 +18,9 @@
|
|||||||
BuildData Errors
|
BuildData Errors
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.BuildDataError
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: BuildDataError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -17,12 +17,14 @@
|
|||||||
Client Errors
|
Client Errors
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.ClientForbiddenError
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: ClientForbiddenError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.ClientUnauthorizedError
|
.. autoexception:: ClientUnauthorizedError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -17,17 +17,19 @@
|
|||||||
Design Errors
|
Design Errors
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.DesignError
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: DesignError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.IngesterError
|
.. autoexception:: IngesterError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.InvalidDesignReference
|
.. autoexception:: InvalidDesignReference
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -17,27 +17,29 @@
|
|||||||
Driver Errors
|
Driver Errors
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.DriverError
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: DriverError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.InvalidSizeFormat
|
.. autoexception:: InvalidSizeFormat
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.NotEnoughStorage
|
.. autoexception:: NotEnoughStorage
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.PersistentDriverError
|
.. autoexception:: PersistentDriverError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.TransientDriverError
|
.. autoexception:: TransientDriverError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -18,12 +18,14 @@
|
|||||||
Orchestrator Errors
|
Orchestrator Errors
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.MaxRetriesReached
|
.. currentmodule:: drydock_provisioner.error
|
||||||
|
|
||||||
|
.. autoexception:: MaxRetriesReached
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoexception:: drydock_provisioner.error.OrchestratorError
|
.. autoexception:: OrchestratorError
|
||||||
:members:
|
:members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
:undoc-members:
|
:undoc-members:
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
@ -70,3 +70,11 @@ Topology Documentation
|
|||||||
|
|
||||||
topology
|
topology
|
||||||
troubleshooting/index
|
troubleshooting/index
|
||||||
|
|
||||||
|
Blueprints
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
blueprints/index
|
@ -191,7 +191,7 @@ is the primary network for the node.
|
|||||||
addresses assigned from this Network
|
addresses assigned from this Network
|
||||||
|
|
||||||
DHCP Relay
|
DHCP Relay
|
||||||
~~~~~~~~~~
|
^^^^^^^^^^
|
||||||
|
|
||||||
DHCP relaying is used when a DHCP server is not attached to the same layer 2
|
DHCP relaying is used when a DHCP server is not attached to the same layer 2
|
||||||
broadcast domain as nodes that are being PXE booted. The DHCP requests from the
|
broadcast domain as nodes that are being PXE booted. The DHCP requests from the
|
||||||
@ -283,7 +283,7 @@ An example HardwareProfile document:
|
|||||||
count: 530000
|
count: 530000
|
||||||
|
|
||||||
Device Aliases
|
Device Aliases
|
||||||
~~~~~~~~~~~~~~
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Device aliases are a way of mapping a particular device bus address
|
Device aliases are a way of mapping a particular device bus address
|
||||||
to an alias. In the example above we map the PCI address ``0000:00:03.0``
|
to an alias. In the example above we map the PCI address ``0000:00:03.0``
|
||||||
@ -294,7 +294,7 @@ at PCI address ``0000.00.03.0``. Currently device aliases are supported
|
|||||||
for network interface slave devices and storage physical devices.
|
for network interface slave devices and storage physical devices.
|
||||||
|
|
||||||
Kernel Parameter References
|
Kernel Parameter References
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Some kernel parameters specified in a host profile rely on particular hardware
|
Some kernel parameters specified in a host profile rely on particular hardware
|
||||||
builds, such as ``isolcpus``. To support the greatest flexibility in building
|
builds, such as ``isolcpus``. To support the greatest flexibility in building
|
||||||
@ -358,7 +358,7 @@ adopted from *defaults*) and can then again override or append any
|
|||||||
configuration that is specific to that node.
|
configuration that is specific to that node.
|
||||||
|
|
||||||
Defining Node Out-Of-Band Management
|
Defining Node Out-Of-Band Management
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Drydock supports plugin-based OOB management. At a minimum a
|
Drydock supports plugin-based OOB management. At a minimum a
|
||||||
OOB driver supports configuring a node to PXE boot during the next
|
OOB driver supports configuring a node to PXE boot during the next
|
||||||
@ -370,7 +370,7 @@ parameters are required for that type and what capabilities are available
|
|||||||
via OOB driver tasks.
|
via OOB driver tasks.
|
||||||
|
|
||||||
IPMI
|
IPMI
|
||||||
****
|
""""
|
||||||
|
|
||||||
The ``ipmi`` OOB type requires additional configuration to allow OOB
|
The ``ipmi`` OOB type requires additional configuration to allow OOB
|
||||||
management:
|
management:
|
||||||
@ -386,7 +386,7 @@ Currently the IPMI driver supports only basic management by setting nodes to PXE
|
|||||||
power-cycling the node.
|
power-cycling the node.
|
||||||
|
|
||||||
Libvirt
|
Libvirt
|
||||||
*******
|
"""""""
|
||||||
|
|
||||||
The ``libvirt`` OOB type requires additional configuration within the site definition
|
The ``libvirt`` OOB type requires additional configuration within the site definition
|
||||||
as well as particular configuration in the deployment of Drydock (and likely the node
|
as well as particular configuration in the deployment of Drydock (and likely the node
|
||||||
@ -407,7 +407,7 @@ Currently the Libvirt driver supports only basic management by setting nodes to
|
|||||||
power-cycling the node.
|
power-cycling the node.
|
||||||
|
|
||||||
Defining Node Interfaces and Network Addressing
|
Defining Node Interfaces and Network Addressing
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Node network attachment can be described in a ``HostProfile`` or a
|
Node network attachment can be described in a ``HostProfile`` or a
|
||||||
``BaremetalNode`` document. Node addressing is allowed only in a
|
``BaremetalNode`` document. Node addressing is allowed only in a
|
||||||
@ -420,7 +420,7 @@ Once the interface attachments to networks is defined, ``HostProfile`` and
|
|||||||
which network the node should use as the primary route.
|
which network the node should use as the primary route.
|
||||||
|
|
||||||
Interfaces
|
Interfaces
|
||||||
**********
|
""""""""""
|
||||||
|
|
||||||
Interfaces for a node can be described in either a ``HostProfile`` or
|
Interfaces for a node can be described in either a ``HostProfile`` or
|
||||||
``BaremetalNode`` definition. This will attach a defined NetworkLink to a host
|
``BaremetalNode`` definition. This will attach a defined NetworkLink to a host
|
||||||
@ -467,7 +467,7 @@ that interface for an inherited configuration.
|
|||||||
have trunking enabled or the design validation will fail.
|
have trunking enabled or the design validation will fail.
|
||||||
|
|
||||||
Addressing
|
Addressing
|
||||||
**********
|
""""""""""
|
||||||
|
|
||||||
Addressing for a node can only be defined in a ``BaremetalNode`` definition. The
|
Addressing for a node can only be defined in a ``BaremetalNode`` definition. The
|
||||||
``addressing`` stanza simply defines a static IP address or ``dhcp`` for each
|
``addressing`` stanza simply defines a static IP address or ``dhcp`` for each
|
||||||
@ -492,7 +492,7 @@ Example ``addressing`` YAML schema:
|
|||||||
|
|
||||||
|
|
||||||
Defining Node Storage
|
Defining Node Storage
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Storage can be defined in the ``storage`` stanza of either a HostProfile or
|
Storage can be defined in the ``storage`` stanza of either a HostProfile or
|
||||||
BaremetalNode document. The storage configuration can describe the creation of
|
BaremetalNode document. The storage configuration can describe the creation of
|
||||||
@ -539,13 +539,13 @@ Example YAML schema of the ``storage`` stanza:
|
|||||||
mount_options: 'defaults'
|
mount_options: 'defaults'
|
||||||
|
|
||||||
Schema
|
Schema
|
||||||
******
|
""""""
|
||||||
|
|
||||||
The ``storage`` stanza can contain two top-level keys: ``physical_devices`` and
|
The ``storage`` stanza can contain two top-level keys: ``physical_devices`` and
|
||||||
``volume_groups``. The latter is optional.
|
``volume_groups``. The latter is optional.
|
||||||
|
|
||||||
Physical Devices and Partitions
|
Physical Devices and Partitions
|
||||||
*******************************
|
"""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
A physical device can either be carved up in partitions (including a single
|
A physical device can either be carved up in partitions (including a single
|
||||||
partition consuming the entire device) or added to a volume group as a physical
|
partition consuming the entire device) or added to a volume group as a physical
|
||||||
@ -563,7 +563,7 @@ mapping with the following keys
|
|||||||
volume. Incompatible with the ``partitions`` specification.
|
volume. Incompatible with the ``partitions`` specification.
|
||||||
|
|
||||||
Partition
|
Partition
|
||||||
^^^^^^^^^
|
"""""""""
|
||||||
|
|
||||||
A partition mapping describes a GPT partition on a physical disk. It can be left
|
A partition mapping describes a GPT partition on a physical disk. It can be left
|
||||||
as a raw block device or formatted and mounted as a filesystem.
|
as a raw block device or formatted and mounted as a filesystem.
|
||||||
@ -585,7 +585,7 @@ as a raw block device or formatted and mounted as a filesystem.
|
|||||||
* ``fs_label``: A filesystem label to assign to the filesystem. Optional.
|
* ``fs_label``: A filesystem label to assign to the filesystem. Optional.
|
||||||
|
|
||||||
Size Format
|
Size Format
|
||||||
^^^^^^^^^^^
|
"""""""""""
|
||||||
|
|
||||||
The size specification for a partition or logical volume is formed from three
|
The size specification for a partition or logical volume is formed from three
|
||||||
parts:
|
parts:
|
||||||
@ -602,7 +602,7 @@ parts:
|
|||||||
* %: The percentage of total device or volume group space
|
* %: The percentage of total device or volume group space
|
||||||
|
|
||||||
Volume Groups and Logical Volumes
|
Volume Groups and Logical Volumes
|
||||||
*********************************
|
"""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
Logical volumes can be used to create RAID-0 volumes spanning multiple physical
|
Logical volumes can be used to create RAID-0 volumes spanning multiple physical
|
||||||
disks or partitions. Each key in the ``volume_groups`` mapping is a name
|
disks or partitions. Each key in the ``volume_groups`` mapping is a name
|
||||||
@ -616,7 +616,7 @@ invalid. Each mapping value is another mapping describing the volume group.
|
|||||||
created in the volume group
|
created in the volume group
|
||||||
|
|
||||||
Logical Volume
|
Logical Volume
|
||||||
^^^^^^^^^^^^^^
|
""""""""""""""
|
||||||
|
|
||||||
A logical volume is a RAID-0 volume. Using logical volumes for ``/`` and
|
A logical volume is a RAID-0 volume. Using logical volumes for ``/`` and
|
||||||
``/boot`` is supported
|
``/boot`` is supported
|
||||||
@ -637,7 +637,7 @@ and ``kernel`` to use as well as customize the kernel configuration with
|
|||||||
``kernel_params``.
|
``kernel_params``.
|
||||||
|
|
||||||
Image and Kernel Selection
|
Image and Kernel Selection
|
||||||
**************************
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The valid ``image`` and ``kernel`` values are dependent on what is supported
|
The valid ``image`` and ``kernel`` values are dependent on what is supported
|
||||||
by your node provisioner. In the example of Canonical MaaS using the 16.04 LTS
|
by your node provisioner. In the example of Canonical MaaS using the 16.04 LTS
|
||||||
@ -645,7 +645,7 @@ image, the values would be ``image: 'xenial'`` and ``kernel: 'ga-16.04'`` for th
|
|||||||
LTS kernel or ``kernel: hwe-16.04`` for the hardware-enablement kernel.
|
LTS kernel or ``kernel: hwe-16.04`` for the hardware-enablement kernel.
|
||||||
|
|
||||||
Kernel Parameters
|
Kernel Parameters
|
||||||
*****************
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The ``kernel_params`` configuration is a mapping. Each key should either be a string
|
The ``kernel_params`` configuration is a mapping. Each key should either be a string
|
||||||
or boolean value. For boolean ``true`` values, the key will be added to the kernel
|
or boolean value. For boolean ``true`` values, the key will be added to the kernel
|
||||||
@ -653,7 +653,7 @@ parameter list as a flag. For string values, the key:value pair will be added to
|
|||||||
kernel parameter list as ``key=value``.
|
kernel parameter list as ``key=value``.
|
||||||
|
|
||||||
Parameter References
|
Parameter References
|
||||||
^^^^^^^^^^^^^^^^^^^^
|
""""""""""""""""""""
|
||||||
|
|
||||||
One special case is supported for values that match a hardware profile reference.
|
One special case is supported for values that match a hardware profile reference.
|
||||||
When the parameter is rendered for a particular node, the value included in the
|
When the parameter is rendered for a particular node, the value included in the
|
@ -14,17 +14,17 @@
|
|||||||
License for the specific language governing permissions and limitations
|
License for the specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
|
|
||||||
=============================
|
===========================
|
||||||
Dryodck Topology Validation
|
Drydock Topology Validation
|
||||||
=============================
|
===========================
|
||||||
|
|
||||||
DD1XXX - Storage Validations
|
DD1XXX - Storage Validations
|
||||||
=============================
|
============================
|
||||||
|
|
||||||
To be continued
|
To be continued
|
||||||
|
|
||||||
DD2XXX - Network Validations
|
DD2XXX - Network Validations
|
||||||
=============================
|
============================
|
||||||
|
|
||||||
To be continued
|
To be continued
|
||||||
|
|
||||||
@ -34,6 +34,6 @@ DD3XXX - Platform Validations
|
|||||||
To be continued
|
To be continued
|
||||||
|
|
||||||
DD4XXX - Bootaction Validations
|
DD4XXX - Bootaction Validations
|
||||||
=============================
|
===============================
|
||||||
|
|
||||||
To be continued
|
To be continued
|
@ -27,5 +27,7 @@ Validation Checks
|
|||||||
|
|
||||||
These checks are meant to check the business logic of documents sent to the validatedesign API.
|
These checks are meant to check the business logic of documents sent to the validatedesign API.
|
||||||
|
|
||||||
.. autoclass:: drydock_provisioner.orchestrator.validations.validator.Validator
|
.. currentmodule:: drydock_provisioner.orchestrator.validations.validator
|
||||||
|
|
||||||
|
.. autoclass:: Validator
|
||||||
:members:
|
:members:
|
@ -15,12 +15,12 @@
|
|||||||
ARG FROM=ubuntu:16.04
|
ARG FROM=ubuntu:16.04
|
||||||
FROM ${FROM}
|
FROM ${FROM}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode'
|
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
||||||
LABEL org.opencontainers.image.url='https://airshipit.org'
|
org.opencontainers.image.url='https://airshipit.org' \
|
||||||
LABEL org.opencontainers.image.documentation='https://airship-drydock.readthedocs.org'
|
org.opencontainers.image.documentation='https://airship-drydock.readthedocs.org' \
|
||||||
LABEL org.opencontainers.image.source='https://git.openstack.org/openstack/airship-drydock'
|
org.opencontainers.image.source='https://git.openstack.org/openstack/airship-drydock' \
|
||||||
LABEL org.opencontainers.image.vendor='The Airship Authors'
|
org.opencontainers.image.vendor='The Airship Authors' \
|
||||||
LABEL org.opencontainers.image.licenses='Apache-2.0'
|
org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
ARG UBUNTU_REPO=http://archive.ubuntu.com/ubuntu
|
ARG UBUNTU_REPO=http://archive.ubuntu.com/ubuntu
|
||||||
ARG TRUSTED_UBUNTU_REPO=no
|
ARG TRUSTED_UBUNTU_REPO=no
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
- hosts: primary
|
|
||||||
tasks:
|
|
||||||
- name: Publish current merged documents on readthedocs
|
|
||||||
shell: 'set -x && curl -X POST -d "token={{ airship_drydock_readthedocs.token | trim }}" "{{ airship_drydock_readthedocs.url | trim }}"'
|
|
||||||
register: result
|
|
@ -25,11 +25,6 @@
|
|||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
target: helm_lint
|
target: helm_lint
|
||||||
register: result
|
register: result
|
||||||
- name: Build documents locally
|
|
||||||
make:
|
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
|
||||||
target: docs
|
|
||||||
register: result
|
|
||||||
- name: Execute the make target for security scanning
|
- name: Execute the make target for security scanning
|
||||||
make:
|
make:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
10
tox.ini
10
tox.ini
@ -72,13 +72,13 @@ commands=
|
|||||||
basepython=python3
|
basepython=python3
|
||||||
whitelist_externals=tee
|
whitelist_externals=tee
|
||||||
sh
|
sh
|
||||||
commands = sh -c 'oslo-config-generator --config-file=etc/drydock/drydock-config-generator.conf | tee etc/drydock/drydock.conf.sample docs/source/_static/drydock.conf.sample'
|
commands = sh -c 'oslo-config-generator --config-file=etc/drydock/drydock-config-generator.conf | tee etc/drydock/drydock.conf.sample doc/source/_static/drydock.conf.sample'
|
||||||
|
|
||||||
[testenv:genpolicy]
|
[testenv:genpolicy]
|
||||||
basepython=python3
|
basepython=python3
|
||||||
whitelist_externals=tee
|
whitelist_externals=tee
|
||||||
sh
|
sh
|
||||||
commands = sh -c 'oslopolicy-sample-generator --config-file etc/drydock/drydock-policy-generator.conf | tee etc/drydock/policy.yaml.sample docs/source/_static/policy.yaml.sample'
|
commands = sh -c 'oslopolicy-sample-generator --config-file etc/drydock/drydock-policy-generator.conf | tee etc/drydock/policy.yaml.sample doc/source/_static/policy.yaml.sample'
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
basepython=python3
|
basepython=python3
|
||||||
@ -97,9 +97,9 @@ max-line-length=119
|
|||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
basepython=python3
|
basepython=python3
|
||||||
deps=
|
deps=
|
||||||
-rdocs/requirements-doc.txt
|
-rdoc/requirements-doc.txt
|
||||||
whitelist_externals=rm
|
whitelist_externals=rm
|
||||||
recreate=true
|
recreate=true
|
||||||
commands =
|
commands =
|
||||||
rm -rf docs/build
|
rm -rf doc/build
|
||||||
sphinx-build -b html docs/source docs/build
|
sphinx-build -b html doc/source doc/build/html
|
||||||
|
Loading…
x
Reference in New Issue
Block a user