Retire openstack-chef: remove repo content
OpenStack-chef project is retiring - https://review.opendev.org/c/openstack/governance/+/905279 this commit remove the content of this project repo Depends-On: https://review.opendev.org/c/openstack/project-config/+/909134 Change-Id: Ie87bb2b994a53b7416f43a9f4c850a2b34e69516
This commit is contained in:
parent
1eaa0d539b
commit
75aef65e3d
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,5 +0,0 @@
|
|||||||
AUTHORS
|
|
||||||
ChangeLog
|
|
||||||
build
|
|
||||||
.tox
|
|
||||||
*.egg*
|
|
@ -1,3 +0,0 @@
|
|||||||
- project:
|
|
||||||
templates:
|
|
||||||
- openstack-specs-jobs
|
|
@ -1,12 +0,0 @@
|
|||||||
If you would like to contribute to the development of OpenStack,
|
|
||||||
you must follow the steps in this page:
|
|
||||||
|
|
||||||
http://docs.openstack.org/infra/manual/developers.html
|
|
||||||
|
|
||||||
Once those steps have been completed, changes to OpenStack
|
|
||||||
should be submitted for review via the Gerrit tool, following
|
|
||||||
the workflow documented at:
|
|
||||||
|
|
||||||
http://docs.openstack.org/infra/manual/developers.html#development-workflow
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored.
|
|
@ -1,4 +0,0 @@
|
|||||||
openstack-chef-specs Style Commandments
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/
|
|
175
LICENSE
175
LICENSE
@ -1,175 +0,0 @@
|
|||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
@ -1,17 +0,0 @@
|
|||||||
|
|
||||||
This is a list of the core reviewer membership and contact information. Please don't hesitate to reach out of you have questions or concerns related to this project. We are here to help.
|
|
||||||
|
|
||||||
PTL: [Samuel Cassiba](mailto:s@cassiba.com?subject=[chef]%20Question%20about%20OpenStack%20and%20Chef)
|
|
||||||
|
|
||||||
# Core Reviewers
|
|
||||||
|
|
||||||
| Name | IRC handle | Email | TimeZone |
|
|
||||||
| ---- | ---------- | ----- | -------- |
|
|
||||||
| Jan Klare | jklare | j.klare@cloudbau.de | UTC+2 |
|
|
||||||
| Samuel Cassiba | sc` | s@cassiba.com | UTC-8 |
|
|
||||||
|
|
||||||
# General Code Reviewers
|
|
||||||
|
|
||||||
The current members of openstack-chef are listed here:
|
|
||||||
|
|
||||||
https://launchpad.net/~openstack-chef/+members#active
|
|
63
README.rst
63
README.rst
@ -1,57 +1,10 @@
|
|||||||
========================
|
This project is no longer maintained.
|
||||||
Team and repository tags
|
|
||||||
========================
|
|
||||||
|
|
||||||
.. image:: https://governance.openstack.org/badges/openstack-chef-specs.svg
|
The contents of this repository are still available in the Git
|
||||||
:target: https://governance.openstack.org/reference/tags/index.html
|
source code management system. To see the contents of this
|
||||||
|
repository before it reached its end of life, please check out the
|
||||||
|
previous commit with "git checkout HEAD^1".
|
||||||
|
|
||||||
.. Change things from this point on
|
For any further questions, please email
|
||||||
|
openstack-discuss@lists.openstack.org or join #openstack-dev on
|
||||||
==================================
|
OFTC.
|
||||||
OpenStack-chef Specifications
|
|
||||||
==================================
|
|
||||||
|
|
||||||
This git repository is used to hold approved design specifications for additions
|
|
||||||
to the openstack-chef project. Reviews of the specifications are done in gerrit,
|
|
||||||
using a similar workflow to how we review and merge changes to the code itself.
|
|
||||||
|
|
||||||
The layout of this repository is::
|
|
||||||
|
|
||||||
specs/<release>/<cookbook>/
|
|
||||||
|
|
||||||
You can find an example spec in `specs/template.rst`.
|
|
||||||
|
|
||||||
Specifications are proposed for a given release by adding them to the
|
|
||||||
`specs/<release>` directory and posting it for review. The implementation
|
|
||||||
status of a blueprint for a given release can be found by looking at the
|
|
||||||
blueprint in launchpad. Not all approved blueprints will get fully implemented.
|
|
||||||
Use the Common cookbook directory for specifications that effect multiple
|
|
||||||
cookbooks. Once the specification is approved and merged, the LaunchPad
|
|
||||||
blueprint will be updated accordingly.
|
|
||||||
|
|
||||||
Specifications have to be re-proposed for every release. The review may be
|
|
||||||
quick, but even if something was previously approved, it should be re-reviewed
|
|
||||||
to make sure it still makes sense as written.
|
|
||||||
|
|
||||||
Prior to the Juno development cycle, this repository was not used for spec
|
|
||||||
reviews. Reviews prior to Juno were completed entirely through Launchpad
|
|
||||||
blueprints::
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef
|
|
||||||
|
|
||||||
Please note, Launchpad blueprints are still used for tracking the
|
|
||||||
current status of blueprints. For more information, see::
|
|
||||||
|
|
||||||
https://wiki.openstack.org/wiki/Blueprints
|
|
||||||
|
|
||||||
For more information about working with gerrit, see::
|
|
||||||
|
|
||||||
https://docs.openstack.org/infra/manual/developers.html#development-workflow
|
|
||||||
|
|
||||||
To validate that the specification is syntactically correct (i.e. get more
|
|
||||||
confidence in the Jenkins result), please execute the following command::
|
|
||||||
|
|
||||||
$ tox
|
|
||||||
|
|
||||||
After running ``tox``, the documentation will be available for viewing in HTML
|
|
||||||
format in the ``doc/build/`` directory.
|
|
||||||
|
164
doc/Makefile
164
doc/Makefile
@ -1,164 +0,0 @@
|
|||||||
# Makefile for Sphinx documentation
|
|
||||||
#
|
|
||||||
|
|
||||||
# You can set these variables from the command line.
|
|
||||||
SPHINXOPTS =
|
|
||||||
SPHINXBUILD = sphinx-build
|
|
||||||
PAPER =
|
|
||||||
BUILDDIR = build
|
|
||||||
|
|
||||||
# Internal variables.
|
|
||||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
|
||||||
PAPEROPT_letter = -D latex_paper_size=letter
|
|
||||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
|
||||||
# the i18n builder cannot share the environment and doctrees with the others
|
|
||||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
|
||||||
|
|
||||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo "Please use \`make <target>' where <target> is one of"
|
|
||||||
@echo " html to make standalone HTML files"
|
|
||||||
@echo " dirhtml to make HTML files named index.html in directories"
|
|
||||||
@echo " singlehtml to make a single large HTML file"
|
|
||||||
@echo " pickle to make pickle files"
|
|
||||||
@echo " json to make JSON files"
|
|
||||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
|
||||||
@echo " qthelp to make HTML files and a qthelp project"
|
|
||||||
@echo " devhelp to make HTML files and a Devhelp project"
|
|
||||||
@echo " epub to make an epub"
|
|
||||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
|
||||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
|
||||||
@echo " text to make text files"
|
|
||||||
@echo " man to make manual pages"
|
|
||||||
@echo " texinfo to make Texinfo files"
|
|
||||||
@echo " info to make Texinfo files and run them through makeinfo"
|
|
||||||
@echo " gettext to make PO message catalogs"
|
|
||||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
|
||||||
@echo " linkcheck to check all external links for integrity"
|
|
||||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
|
||||||
@echo " wadl to build a WADL file for api.openstack.org"
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -rf $(BUILDDIR)/*
|
|
||||||
|
|
||||||
html: check-dependencies
|
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
|
||||||
|
|
||||||
.PHONY: check-dependencies
|
|
||||||
check-dependencies:
|
|
||||||
@python -c 'import sphinxcontrib.autohttp.flask' >/dev/null 2>&1 || (echo "ERROR: Missing Sphinx dependencies. Run: pip install sphinxcontrib-httpdomain" && exit 1)
|
|
||||||
|
|
||||||
wadl:
|
|
||||||
$(SPHINXBUILD) -b docbook $(ALLSPHINXOPTS) $(BUILDDIR)/wadl
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The WADL pages are in $(BUILDDIR)/wadl."
|
|
||||||
|
|
||||||
dirhtml:
|
|
||||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
|
||||||
|
|
||||||
singlehtml:
|
|
||||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
|
||||||
|
|
||||||
pickle:
|
|
||||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the pickle files."
|
|
||||||
|
|
||||||
json:
|
|
||||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the JSON files."
|
|
||||||
|
|
||||||
htmlhelp:
|
|
||||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
|
||||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
|
||||||
|
|
||||||
qthelp:
|
|
||||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
|
||||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
|
||||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Ceilometer.qhcp"
|
|
||||||
@echo "To view the help file:"
|
|
||||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Ceilometer.qhc"
|
|
||||||
|
|
||||||
devhelp:
|
|
||||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished."
|
|
||||||
@echo "To view the help file:"
|
|
||||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/Ceilometer"
|
|
||||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Ceilometer"
|
|
||||||
@echo "# devhelp"
|
|
||||||
|
|
||||||
epub:
|
|
||||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
|
||||||
|
|
||||||
latex:
|
|
||||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
|
||||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
|
||||||
"(use \`make latexpdf' here to do that automatically)."
|
|
||||||
|
|
||||||
latexpdf:
|
|
||||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
|
||||||
@echo "Running LaTeX files through pdflatex..."
|
|
||||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
|
||||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
|
||||||
|
|
||||||
text:
|
|
||||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
|
||||||
|
|
||||||
man:
|
|
||||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
|
||||||
|
|
||||||
texinfo:
|
|
||||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
|
||||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
|
||||||
"(use \`make info' here to do that automatically)."
|
|
||||||
|
|
||||||
info:
|
|
||||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
|
||||||
@echo "Running Texinfo files through makeinfo..."
|
|
||||||
make -C $(BUILDDIR)/texinfo info
|
|
||||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
|
||||||
|
|
||||||
gettext:
|
|
||||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
|
||||||
|
|
||||||
changes:
|
|
||||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
|
||||||
@echo
|
|
||||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
|
||||||
|
|
||||||
linkcheck:
|
|
||||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
|
||||||
@echo
|
|
||||||
@echo "Link check complete; look for any errors in the above output " \
|
|
||||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
|
||||||
|
|
||||||
doctest:
|
|
||||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
|
||||||
@echo "Testing of doctests in the sources finished, look at the " \
|
|
||||||
"results in $(BUILDDIR)/doctest/output.txt."
|
|
||||||
|
|
@ -1,207 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory,
|
|
||||||
# add these directories to sys.path here. If the directory is relative to the
|
|
||||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
||||||
#sys.path.insert(0, os.path.abspath('.'))
|
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
|
||||||
|
|
||||||
# If your documentation needs a minimal Sphinx version, state it here.
|
|
||||||
#needs_sphinx = '1.0'
|
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
|
||||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
||||||
extensions = ['sphinx.ext.todo',
|
|
||||||
'openstackdocstheme'
|
|
||||||
]
|
|
||||||
|
|
||||||
todo_include_todos = True
|
|
||||||
|
|
||||||
# The master toctree document.
|
|
||||||
master_doc = 'index'
|
|
||||||
|
|
||||||
# General information about the project.
|
|
||||||
project = u'OpenStack Chef Specs'
|
|
||||||
copyright = u'%s, OpenStack Chef Team' % datetime.date.today().year
|
|
||||||
|
|
||||||
openstackdocs_repo_name = 'openstack/openstack-chef-specs'
|
|
||||||
openstackdocs_auto_name = False
|
|
||||||
openstackdocs_bug_project = 'openstack-chef'
|
|
||||||
openstackdocs_bug_tag = u'specs'
|
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
||||||
# for a list of supported languages.
|
|
||||||
#language = None
|
|
||||||
|
|
||||||
# There are two options for replacing |today|: either, you set today to some
|
|
||||||
# non-false value, then it is used:
|
|
||||||
#today = ''
|
|
||||||
# Else, today_fmt is used as the format for a strftime call.
|
|
||||||
#today_fmt = '%B %d, %Y'
|
|
||||||
|
|
||||||
# List of patterns, relative to source directory, that match files and
|
|
||||||
# directories to ignore when looking for source files.
|
|
||||||
exclude_patterns = ['_build',
|
|
||||||
'**template.rst']
|
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
|
||||||
#default_role = None
|
|
||||||
|
|
||||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
|
||||||
#add_function_parentheses = True
|
|
||||||
|
|
||||||
# If true, the current module name will be prepended to all description
|
|
||||||
# unit titles (such as .. function::).
|
|
||||||
add_module_names = False
|
|
||||||
|
|
||||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
|
||||||
# output. They are ignored by default.
|
|
||||||
show_authors = False
|
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use.
|
|
||||||
pygments_style = 'native'
|
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting.
|
|
||||||
modindex_common_prefix = ['openstack-chef-specs.']
|
|
||||||
|
|
||||||
version = ''
|
|
||||||
release = ''
|
|
||||||
|
|
||||||
# -- Options for man page output ----------------------------------------------
|
|
||||||
man_pages = []
|
|
||||||
|
|
||||||
# -- Options for HTML output ---------------------------------------------------
|
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
||||||
# a list of builtin themes.
|
|
||||||
html_theme = 'openstackdocs'
|
|
||||||
|
|
||||||
# Theme options are theme-specific and customize the look and feel of a theme
|
|
||||||
# further. For a list of options available for each theme, see the
|
|
||||||
# documentation.
|
|
||||||
#html_theme_options = {}
|
|
||||||
|
|
||||||
# Add any paths that contain custom themes here, relative to this directory.
|
|
||||||
#html_theme_path = []
|
|
||||||
|
|
||||||
# The name for this set of Sphinx documents. If None, it defaults to
|
|
||||||
# "<project> v<release> documentation".
|
|
||||||
#html_title = None
|
|
||||||
|
|
||||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
|
||||||
#html_short_title = None
|
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top
|
|
||||||
# of the sidebar.
|
|
||||||
#html_logo = None
|
|
||||||
|
|
||||||
# The name of an image file (within the static path) to use as favicon of the
|
|
||||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
|
||||||
# pixels large.
|
|
||||||
#html_favicon = None
|
|
||||||
|
|
||||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
|
||||||
# typographically correct entities.
|
|
||||||
#html_use_smartypants = True
|
|
||||||
|
|
||||||
# Custom sidebar templates, maps document names to template names.
|
|
||||||
#html_sidebars = {}
|
|
||||||
|
|
||||||
# Additional templates that should be rendered to pages, maps page names to
|
|
||||||
# template names.
|
|
||||||
#html_additional_pages = {}
|
|
||||||
|
|
||||||
# If false, no module index is generated.
|
|
||||||
html_domain_indices = False
|
|
||||||
|
|
||||||
# If false, no index is generated.
|
|
||||||
html_use_index = False
|
|
||||||
|
|
||||||
# If true, the index is split into individual pages for each letter.
|
|
||||||
#html_split_index = False
|
|
||||||
|
|
||||||
# If true, links to the reST sources are added to the pages.
|
|
||||||
#html_show_sourcelink = True
|
|
||||||
|
|
||||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
|
||||||
#html_show_sphinx = True
|
|
||||||
|
|
||||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
|
||||||
#html_show_copyright = True
|
|
||||||
|
|
||||||
# If true, an OpenSearch description file will be output, and all pages will
|
|
||||||
# contain a <link> tag referring to it. The value of this option must be the
|
|
||||||
# base URL from which the finished HTML is served.
|
|
||||||
#html_use_opensearch = ''
|
|
||||||
|
|
||||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
|
||||||
#html_file_suffix = None
|
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
|
||||||
htmlhelp_basename = 'OpenStack-Chef-Specsdoc'
|
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output --------------------------------------------------
|
|
||||||
|
|
||||||
latex_elements = {
|
|
||||||
# The paper size ('letterpaper' or 'a4paper').
|
|
||||||
#'papersize': 'letterpaper',
|
|
||||||
|
|
||||||
# The font size ('10pt', '11pt' or '12pt').
|
|
||||||
#'pointsize': '10pt',
|
|
||||||
|
|
||||||
# Additional stuff for the LaTeX preamble.
|
|
||||||
#'preamble': '',
|
|
||||||
}
|
|
||||||
|
|
||||||
# Grouping the document tree into LaTeX files. List of tuples
|
|
||||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
|
||||||
latex_documents = [
|
|
||||||
('index', 'OpenStack-Chef-specs.tex', u'OpenStack Chef Specs',
|
|
||||||
u'OpenStack Chef Team', 'manual'),
|
|
||||||
]
|
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of
|
|
||||||
# the title page.
|
|
||||||
#latex_logo = None
|
|
||||||
|
|
||||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
|
||||||
# not chapters.
|
|
||||||
#latex_use_parts = False
|
|
||||||
|
|
||||||
# If true, show page references after internal links.
|
|
||||||
#latex_show_pagerefs = False
|
|
||||||
|
|
||||||
# If true, show URL addresses after external links.
|
|
||||||
#latex_show_urls = False
|
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals.
|
|
||||||
#latex_appendices = []
|
|
||||||
|
|
||||||
# If false, no module index is generated.
|
|
||||||
#latex_domain_indices = True
|
|
||||||
|
|
||||||
# -- Options for Texinfo output ------------------------------------------------
|
|
||||||
|
|
||||||
# Grouping the document tree into Texinfo files. List of tuples
|
|
||||||
# (source start file, target name, title, author,
|
|
||||||
# dir menu entry, description, category)
|
|
||||||
texinfo_documents = [
|
|
||||||
('index', 'OpenStack-Chef-specs', u'OpenStack Chef Design Specs',
|
|
||||||
u'OpenStack Chef Team', 'openstack-chef-specs',
|
|
||||||
'Design specifications for the OpenStack Chef project.',
|
|
||||||
'Miscellaneous'),
|
|
||||||
]
|
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals.
|
|
||||||
#texinfo_appendices = []
|
|
||||||
|
|
||||||
# If false, no module index is generated.
|
|
||||||
#texinfo_domain_indices = True
|
|
||||||
|
|
||||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
|
||||||
#texinfo_show_urls = 'footnote'
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
.. openstack-chef-specs documentation master file
|
|
||||||
|
|
||||||
=============================================
|
|
||||||
Specifications for the OpenStack Chef Project
|
|
||||||
=============================================
|
|
||||||
|
|
||||||
Ocata approved specs
|
|
||||||
====================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
specs/ocata/**
|
|
||||||
|
|
||||||
Liberty approved specs
|
|
||||||
======================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
specs/liberty/**
|
|
||||||
|
|
||||||
Kilo approved specs
|
|
||||||
===================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
specs/kilo/**
|
|
||||||
|
|
||||||
Juno approved specs
|
|
||||||
===================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
specs/juno/**
|
|
||||||
|
|
||||||
==================
|
|
||||||
Indices and tables
|
|
||||||
==================
|
|
||||||
|
|
||||||
* :ref:`search`
|
|
@ -1 +0,0 @@
|
|||||||
../../specs
|
|
@ -1,5 +0,0 @@
|
|||||||
openstackdocstheme>=2.2.1 # Apache-2.0
|
|
||||||
pbr>=2.0
|
|
||||||
sphinx>=2.0.0,!=2.1.0 # BSD
|
|
||||||
testrepository>=0.0.18
|
|
||||||
testtools>=0.9.34
|
|
12
setup.cfg
12
setup.cfg
@ -1,12 +0,0 @@
|
|||||||
[metadata]
|
|
||||||
name = openstack-chef-specs
|
|
||||||
summary = Chef for OpenStack Project Development Specs
|
|
||||||
description-file =
|
|
||||||
README.rst
|
|
||||||
author = OpenStack
|
|
||||||
author-email = openstack-discuss@lists.openstack.org
|
|
||||||
home-page = http://specs.openstack.org/openstack/openstack-chef-specs/
|
|
||||||
classifier =
|
|
||||||
Intended Audience :: Developers
|
|
||||||
License :: OSI Approved :: Apache Software License
|
|
||||||
Operating System :: POSIX :: Linux
|
|
22
setup.py
22
setup.py
@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
|
|
||||||
import setuptools
|
|
||||||
|
|
||||||
setuptools.setup(
|
|
||||||
setup_requires=['pbr'],
|
|
||||||
pbr=True)
|
|
0
specs/icehouse/.gitignore
vendored
0
specs/icehouse/.gitignore
vendored
0
specs/icehouse/block-storage/.gitignore
vendored
0
specs/icehouse/block-storage/.gitignore
vendored
0
specs/icehouse/ceph/.gitignore
vendored
0
specs/icehouse/ceph/.gitignore
vendored
0
specs/icehouse/client/.gitignore
vendored
0
specs/icehouse/client/.gitignore
vendored
0
specs/icehouse/common/.gitignore
vendored
0
specs/icehouse/common/.gitignore
vendored
0
specs/icehouse/compute/.gitignore
vendored
0
specs/icehouse/compute/.gitignore
vendored
0
specs/icehouse/dashboard/.gitignore
vendored
0
specs/icehouse/dashboard/.gitignore
vendored
0
specs/icehouse/database/.gitignore
vendored
0
specs/icehouse/database/.gitignore
vendored
0
specs/icehouse/identity/.gitignore
vendored
0
specs/icehouse/identity/.gitignore
vendored
0
specs/icehouse/image/.gitignore
vendored
0
specs/icehouse/image/.gitignore
vendored
0
specs/icehouse/metering/.gitignore
vendored
0
specs/icehouse/metering/.gitignore
vendored
0
specs/icehouse/network/.gitignore
vendored
0
specs/icehouse/network/.gitignore
vendored
0
specs/icehouse/orchestration/.gitignore
vendored
0
specs/icehouse/orchestration/.gitignore
vendored
0
specs/juno/.gitignore
vendored
0
specs/juno/.gitignore
vendored
0
specs/juno/block-storage/.gitignore
vendored
0
specs/juno/block-storage/.gitignore
vendored
0
specs/juno/ceph/.gitignore
vendored
0
specs/juno/ceph/.gitignore
vendored
0
specs/juno/client/.gitignore
vendored
0
specs/juno/client/.gitignore
vendored
0
specs/juno/common/.gitignore
vendored
0
specs/juno/common/.gitignore
vendored
@ -1,116 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
==========================================
|
|
||||||
Bump Chef gem to 11.16
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
Launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/bump-chef-to-11-16
|
|
||||||
|
|
||||||
Propose to update all the cookbooks at master branch to use Chef 11.16.
|
|
||||||
The current version is at 11.12.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
A detailed description of the problem:
|
|
||||||
|
|
||||||
* During each Master branch cycle, we need to keep it up to date with the latest tooling.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Change all the cookbook Gemfile's to use Chef 11.16
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Should help improve performance as there have been many fixes, for example:
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
The current bundle install command will take care of updating
|
|
||||||
Chef to the required 11.16 version level. No additional steps
|
|
||||||
should be needed by the developers.
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
Mark Vanderwiel (vanderwl)
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
none
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Each cookbooks Gemfile needs to specific Chef 11.16
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Basic testing (unit, lint, style, all-in-one) using Chef 11.16 has been done and no issues were found.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
* `Chef versions <https://rubygems.org/gems/chef/versions>`_
|
|
||||||
* `Chef change log <https://github.com/opscode/chef/blob/master/CHANGELOG.md>`_
|
|
@ -1,200 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
==========================================
|
|
||||||
OpenStack Cookbook Versioning scheme
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/example
|
|
||||||
|
|
||||||
There has been multiple threads on the way that cookbook versioning is done.
|
|
||||||
This doc is to attempt to consolidate and organize and ideally agree upon some
|
|
||||||
guidelines on the way to bump/change work on the versioning for
|
|
||||||
`the cookbooks <https://github.com/stackforge/cookbook-openstack-common>`_ for
|
|
||||||
instance the common cookbook.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
There is no standardization on the cookbook versioning we have. This doc is the
|
|
||||||
attempt to give some general guidelines to fix this.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
General Guidelines
|
|
||||||
------------------
|
|
||||||
|
|
||||||
When submitting cookbook patches, it is generally required that the version
|
|
||||||
number (within metadata.rb) is incremented in a manor reflective of the level
|
|
||||||
of the change. Any patch should also update the CHANGELOG.md and if appropriate
|
|
||||||
the README.md should reflect the changes and any relevant how-to instructions. The
|
|
||||||
CHANGELOG.md is our executive summary of changes, it should inform what the change
|
|
||||||
was in a quick manner.
|
|
||||||
|
|
||||||
There are some differences between the development of patches on the Master and
|
|
||||||
Stable branches. There is more restrictive and vigorous oversight given to changes
|
|
||||||
on the Stable branches. The Master branch is bleeding edge and can relax the
|
|
||||||
version requirement in some simple cases to allow for increased productivity.
|
|
||||||
|
|
||||||
Semantic Versioning
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
The cookbooks use the Semantic Versioning system (see http://semver.org)
|
|
||||||
The system uses a three part version number, Major.Minor.Patch.
|
|
||||||
For example: 9.2.33
|
|
||||||
|
|
||||||
The Major number shouldn't change within a development branch. It will reflect the
|
|
||||||
number that is the Alphabetized Letter of the base OpenStack release,
|
|
||||||
see: https://wiki.openstack.org/wiki/Releases. An example would be Icehouse
|
|
||||||
being the 9th letter and the 9th release all the stable cookbooks would be 9.Y.Z.
|
|
||||||
When the Master branch becomes stabilized, a new Stable branch will be created from
|
|
||||||
it and the Major number in the Master will be incremented by the core team.
|
|
||||||
|
|
||||||
The Minor and Patch numbers will be incremented as described in the branch specific
|
|
||||||
sections below.
|
|
||||||
|
|
||||||
Stable Branch
|
|
||||||
-------------
|
|
||||||
|
|
||||||
The Stable branch cookbooks must leverage the Semantic Versioning system exclusively.
|
|
||||||
All patches must update the metadata.rb and the CHANGELOG.md at a minimum.
|
|
||||||
All patches should try to be backwards compatible.
|
|
||||||
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| Stable Branch Example Situations | Level of Change |
|
|
||||||
+=========================================================================+=================+
|
|
||||||
| add a recipe | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| add a function or method | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| change Gemfile or Berksfile | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| backport a fix from Master branch | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| add attribute for a value in a configuration file with the same default | Increment Patch |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| changing a resource option | Increment Patch |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| add a test | Increment Patch |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| fix a broken recipe | Increment Patch |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
| re-factoring recipe or test | Increment Patch |
|
|
||||||
+-------------------------------------------------------------------------+-----------------+
|
|
||||||
|
|
||||||
The table above shows some examples of different levels of changes introduced by a patch and
|
|
||||||
what part of the version number to increment for Stable branches.
|
|
||||||
|
|
||||||
Version Locking
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The Stable branches are also locked down by added Berksfile.lock and Gemfile.lock to each
|
|
||||||
cookbook. If any changes are made to the Gemfile, the Gemfile.lock would also have to be
|
|
||||||
updated. If any changes are dependent upon other cookbook changes, then the Berkfile.lock
|
|
||||||
and metadata.rb files would need to be updated accordingly.
|
|
||||||
|
|
||||||
Cookbook Dependencies
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
When a change requires hits to multiple cookbooks, like when adding attributes to Common, the
|
|
||||||
metadata.rb file would need to be updated to reflect that required version level. The
|
|
||||||
Berksfile.lock would also need to be updated with the commit id of the dependent change.
|
|
||||||
|
|
||||||
Master Branch
|
|
||||||
-------------
|
|
||||||
|
|
||||||
The master cookbook should leverage the Semantic Versioning system lightly.
|
|
||||||
We consider the master branch a fast paced "Work in Progress" until we come to the Release
|
|
||||||
Candidate 1 date (RC-1). This means it will be under rapid and active development where
|
|
||||||
versioning isn't always required.
|
|
||||||
All patches must update the CHANGELOG.md at a minimum.
|
|
||||||
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| Master Branch Example Situations | Level of Change |
|
|
||||||
+=========================================================================+==================+
|
|
||||||
| Branching for a new Stable branch | Increment Major |
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| add a recipe | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| add a function or method | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| change Gemfile or Berksfile | Increment Minor |
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| add attribute for a value in a configuration file with the same default | Increment Patch**|
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| changing a resource option | Increment Patch**|
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| add a test | Increment Patch**|
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| fix a broken recipe | Increment Patch**|
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
| re-factoring recipe or test | Increment Patch**|
|
|
||||||
+-------------------------------------------------------------------------+------------------+
|
|
||||||
|
|
||||||
The table above shows some examples of different levels of changes introduced by a patch and
|
|
||||||
what part of the version number to increment for Master branches.
|
|
||||||
|
|
||||||
** There are cases where incrementing the Patch number is not necessary and only updating the
|
|
||||||
CHANGELOG.md is required. To avoid re-base collisions on Patch number changes and allow more
|
|
||||||
rapid development, if the change falls within these guidelines, incrementing the Patch version
|
|
||||||
would not be required.
|
|
||||||
- When the change only effects a single cookbook
|
|
||||||
- When the change is just a simple addition of a new attribute for a template and no other
|
|
||||||
logic change is required
|
|
||||||
- When a patch only effects the tests
|
|
||||||
- When a patch only effect the README or other comments
|
|
||||||
|
|
||||||
Version Locking
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The Master branch is NOT locked down a Berksfile.lock or Gemfile.lock. Changes to the Berksfile
|
|
||||||
and Gemfile can be made directly.
|
|
||||||
|
|
||||||
Cookbook Dependencies
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
When a change requires hits to multiple cookbooks, like when adding attributes to Common, the
|
|
||||||
metadata.rb file would need to be updated to reflect that required version level.
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Everyone because this is an over arching process ;)
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
None, apart from the community approving these guide lines.
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
See above, this should also be put on the wiki too.
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
This `youtube video <http://youtu.be/jA9L_g-d-X4>`_ is the major discussion
|
|
||||||
about this topic. There has also been multiple comments on the google group.
|
|
@ -1,178 +0,0 @@
|
|||||||
=================================================
|
|
||||||
Keep sensitive information out of node attributes
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/no-secret-attributes
|
|
||||||
|
|
||||||
Sensitive information such as passwords should not be stored as node
|
|
||||||
attributes, because they are persisted back to the server and can therefore
|
|
||||||
be easily retrieved.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
Wrapped recipes (e.g. mysql::server) use node attributes for retrieving
|
|
||||||
sensitive information, such as passwords associated with privileged
|
|
||||||
accounts. This type of information is specified via items in encrypted
|
|
||||||
data bags, but because node attributes are involved, the security provided
|
|
||||||
by the encryption mechanism can easily be defeated by simply retrieving the
|
|
||||||
node attributes from the server.
|
|
||||||
|
|
||||||
For example (from mysql-server):
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
if node['openstack']['db']['root_user_use_databag']
|
|
||||||
super_password = get_password 'user', node['openstack']['db']['root_user_key']
|
|
||||||
node.set_unless['mysql']['server_root_password'] = super_password
|
|
||||||
else
|
|
||||||
super_password = node['mysql']['server_root_password']
|
|
||||||
end
|
|
||||||
|
|
||||||
The password is retrieved from a (possibly encrypted) data bag and stored
|
|
||||||
into a node attribute to be consumed downstream by the :code:`server`
|
|
||||||
recipe in the :code:`mysql` cookbook. After the node is converged, all
|
|
||||||
someone needs to do to retrieve the password as clear text is execute
|
|
||||||
:code:`knife node edit NODE_NAME`, thereby defeating a data bag's encryption
|
|
||||||
capabilities.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
The proposed solution is to operate on server resources directly or use
|
|
||||||
run_state to set passwords, depending on which is available for use in
|
|
||||||
a given recipe.
|
|
||||||
|
|
||||||
Again, using MySQL as an example (operating directly on resource):
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
if node['openstack']['db']['root_user_use_databag']
|
|
||||||
super_password = get_password 'user', node['openstack']['db']['root_user_key']
|
|
||||||
else
|
|
||||||
super_password = node['mysql']['server_root_password']
|
|
||||||
end
|
|
||||||
|
|
||||||
mysql_service node['mysql']['service_name'] do
|
|
||||||
server_root_password super_password
|
|
||||||
...
|
|
||||||
end
|
|
||||||
|
|
||||||
The password is stored only in a local variable and directly assigned to the
|
|
||||||
:code:`mysql_service` resource's :code:`server_root_password` attribute.
|
|
||||||
The :code:`mysql::server` recipe is not invoked and all of the other resource
|
|
||||||
attributes are set directly as well (indicated via :code:`...`). Since the
|
|
||||||
password is never stored as a node attribute, it cannot be retrieved via
|
|
||||||
:code:`knife node edit NODE_NAME`. Note that other resource attributes (for
|
|
||||||
instance :code:`port`) can still be set to node-attribute values and thus
|
|
||||||
their default values can still be specified in :code:`attributes/default.rb`.
|
|
||||||
Also note that the above example shows that a node attribute can still be
|
|
||||||
used to store password information, if that is what the user wants to do.
|
|
||||||
This is done by leaving the :code:`['openstack']['db']['root_user_use_databag']`
|
|
||||||
set to its default value of :code:`false`.
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
One alternative would be to have the wrapped recipes fall back to default
|
|
||||||
attribute values and set the resource attributes directly, as described at
|
|
||||||
https://sethvargo.com/changing-chef-resources-at-runtime/. However, this
|
|
||||||
is arguably a non-strategic workaround.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Security would be improved because passwords would no longer be accessible
|
|
||||||
as node attributes.
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None. The recipes would be backward compatible because the mechanisms for
|
|
||||||
specifying the databag type (encrypted or standard) and name and related
|
|
||||||
node attributes needed to use data bags would remain unchanged. The only
|
|
||||||
thing changing would be the mechanics of how the data contained in data
|
|
||||||
bags is populated into the resources created by the recipes. Note that
|
|
||||||
end users would still have the option to not use data bags at all.
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
none
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
* jswarren
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
The known impacted recipes are:
|
|
||||||
|
|
||||||
* cookbook-openstack-ops-database::mysql-server
|
|
||||||
* cookbook-openstack-ops-database::postgresql-server
|
|
||||||
* cookbook-openstack-ops-messaging::rabbitmq-server
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
The cookbooks involved in setting up the resources in question need to
|
|
||||||
provide a mechanism for setting passwords either as a resource attribute
|
|
||||||
that can be set directly or as a run_state attribute. Other mechanisms
|
|
||||||
that do not expose passwords as node attributes should also be acceptable.
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
The cookbooks in question would need to be tested to ensure that when
|
|
||||||
data bags are used to specify passwords that the password values are not
|
|
||||||
reflected in the attributes (if any) used for setting passwords. In other
|
|
||||||
words, a given referenced cookbook or recipe might still allow the use
|
|
||||||
of node attributes to set passwords in addition to the above-mentioned
|
|
||||||
possible alternatives. However, when node attributes are not used to
|
|
||||||
specify passwords, the passwords must then not be stored as node
|
|
||||||
attributes by the referenced recipes.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
Documentation should not change, since the blackbox behavior of the recipes
|
|
||||||
should remain unchanged. The documentation associated with the referenced
|
|
||||||
resource recipes may need to change when accommodations are made for
|
|
||||||
alternative means of setting passwords, but those changes are orthogonal to
|
|
||||||
the work described here.
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
0
specs/juno/compute/.gitignore
vendored
0
specs/juno/compute/.gitignore
vendored
0
specs/juno/dashboard/.gitignore
vendored
0
specs/juno/dashboard/.gitignore
vendored
0
specs/juno/data-processing/.gitignore
vendored
0
specs/juno/data-processing/.gitignore
vendored
0
specs/juno/database/.gitignore
vendored
0
specs/juno/database/.gitignore
vendored
0
specs/juno/identity/.gitignore
vendored
0
specs/juno/identity/.gitignore
vendored
0
specs/juno/image/.gitignore
vendored
0
specs/juno/image/.gitignore
vendored
0
specs/juno/metering/.gitignore
vendored
0
specs/juno/metering/.gitignore
vendored
0
specs/juno/network/.gitignore
vendored
0
specs/juno/network/.gitignore
vendored
@ -1,176 +0,0 @@
|
|||||||
=============================
|
|
||||||
Enable Neutron VPN as Service
|
|
||||||
=============================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/neutron-vpnaas-enablement
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
VPN service is a key feature provided by Neutron to enable Secured Private
|
|
||||||
connection to OpenStack cloud. The reference VPN implementation in Neutron at
|
|
||||||
this time is [IPSec]_ VPN, and the IPSec driver is [OPENSWAN]_.
|
|
||||||
|
|
||||||
Currently, there is no Chef cookbook support to configure and start Neutron
|
|
||||||
VPN service.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Add a recipe, and related attribute/unit tests to cookbook-openstack-network
|
|
||||||
to install, configure and start VPN service.
|
|
||||||
|
|
||||||
The packages need to be installed are:
|
|
||||||
|
|
||||||
* Ubuntu: neutron-plugin-vpn-agent
|
|
||||||
|
|
||||||
* RedHat: openstack-neutron
|
|
||||||
|
|
||||||
* Suse: openstack-neutron-vpn-agent
|
|
||||||
|
|
||||||
The attributes need to be added includes:
|
|
||||||
|
|
||||||
* A new attribute to decide if VPN agent or L3 agent should be started::
|
|
||||||
|
|
||||||
['openstack']['network']['enable_vpn']
|
|
||||||
|
|
||||||
* New attributes for VPN configurations in /etc/neutron/vpn_agent.ini::
|
|
||||||
|
|
||||||
['openstack']['network']['vpn']['vpn_device_driver']
|
|
||||||
['openstack']['network']['vpn']['ipsec_status_check_interval']
|
|
||||||
|
|
||||||
The recipe will check if VPN service should be installed, configured and
|
|
||||||
started, then uses the attribute value to configure VPN agent configuration
|
|
||||||
file and start VPN service.
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
No alternatives at this time.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
No Data model impact
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
No API change
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Right now only IKE with "PSK" (Pre-Shared Key) authentication mode is implemented
|
|
||||||
in Neutron VPNaaS for simplicity. And the psk is a input of IPsec site connection
|
|
||||||
establishment process.
|
|
||||||
|
|
||||||
For example, "secret" psk can be used in a new IPsec site connection::
|
|
||||||
|
|
||||||
neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id myvpn
|
|
||||||
--ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 172.24.4.233
|
|
||||||
--peer-id 172.24.4.233 --peer-cidr 10.2.0.0/24 --psk secret
|
|
||||||
|
|
||||||
Since the authentication and key exchange are not in the scope of starting and
|
|
||||||
configuring VPN service, there should be no security impact of this Spec.
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
No notification impact
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
- gekun@cn.ibm.com
|
|
||||||
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Add a new attribute value to decide if VPN agent or L3 agent should be started,
|
|
||||||
since these two services cannot be started at the same time.
|
|
||||||
|
|
||||||
* Add new attributes for VPN configurations in /etc/neutron/vpn_agent.ini and
|
|
||||||
a new vpn template.
|
|
||||||
|
|
||||||
* Add a new recipe to install the VPN packages, configure the [VPN_TEMPLATE]_
|
|
||||||
and start VPN service
|
|
||||||
|
|
||||||
* Enable VPN support in Horizon [VPN_HORIZON]_
|
|
||||||
Configure /opt/stack/horizon/openstack_dashboard/local/local_settings.py::
|
|
||||||
|
|
||||||
OPENSTACK_NEUTRON_NETWORK = {
|
|
||||||
'enable_vpn': True,
|
|
||||||
}
|
|
||||||
|
|
||||||
* Add validations to ensure VPN service is up and running correctly.
|
|
||||||
|
|
||||||
* Add unit tests
|
|
||||||
|
|
||||||
* ref to ask openstack on this topic [HOW_TO_SETUP_VPN]_
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* Add unit tests for the new recipe.
|
|
||||||
|
|
||||||
* For function tests and CI integration tests, at least one node with three NICs is
|
|
||||||
recommanded. One NIC is used for external network connection, one NIC is used for
|
|
||||||
data network and the other is used for management network.
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* Configure attribute ['openstack']['network']['enable_vpn'] = 'True'
|
|
||||||
to enable VPN service.
|
|
||||||
|
|
||||||
* Configure VPN related attributes, for example::
|
|
||||||
|
|
||||||
['openstack']['network']['vpn']['vpn_device_driver'] =
|
|
||||||
neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver
|
|
||||||
['openstack']['network']['vpn']['ipsec_status_check_interval'] = 60
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
.. [IPSec] `Security Architecture for the Internet Protocol RFC
|
|
||||||
<http://tools.ietf.org/html/rfc4301>`_
|
|
||||||
|
|
||||||
.. [OPENSWAN] `OpenSwan website
|
|
||||||
<https://www.openswan.org>`_
|
|
||||||
|
|
||||||
.. [VPN_TEMPLATE] `VPN template values
|
|
||||||
<https://docs.openstack.org/trunk/config-reference/content/networking-options-vpn.html>`_
|
|
||||||
|
|
||||||
.. [VPN_HORIZON] `VPN support in Horizon <https://review.openstack.org/#/c/108493/1>`_
|
|
||||||
|
|
||||||
.. [HOW_TO_SETUP_VPN] `How to setup VPNaaS
|
|
||||||
<https://ask.openstack.org/en/question/6243/how-to-set-up-neutron-vpn-service-vpnaas/>`_
|
|
0
specs/juno/object-storage/.gitignore
vendored
0
specs/juno/object-storage/.gitignore
vendored
0
specs/juno/openstack-manuals/.gitignore
vendored
0
specs/juno/openstack-manuals/.gitignore
vendored
0
specs/juno/orchestration/.gitignore
vendored
0
specs/juno/orchestration/.gitignore
vendored
@ -1,201 +0,0 @@
|
|||||||
==========================================
|
|
||||||
Enable Bare Metal Service by Chef
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/bare-metal-enablement
|
|
||||||
|
|
||||||
OpenStack Bare Metal Service known as Ironic OpenStack project name provisions
|
|
||||||
Bare Metal machines by leveraging common technologies such as [PXE]_ boot and
|
|
||||||
[IPMI]_ to cover a wide range of hardware.
|
|
||||||
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
* OpenStack Bare Metal Service was available as an incubated project in the
|
|
||||||
"Icehouse" release, with many stability and feature improvements in the
|
|
||||||
"Juno", it is officially integrated with OpenStack beginning with the "Kilo"
|
|
||||||
release.
|
|
||||||
|
|
||||||
* Currently, there is no Chef cookbook support to install and configure
|
|
||||||
OpenStack Bare Metal Service.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Add a cookbook included recipes and related attributes/unit tests to install
|
|
||||||
and configure OpenStack Bare Metal Service.
|
|
||||||
|
|
||||||
The packages which need to be installed include:
|
|
||||||
|
|
||||||
* Fedora/RHEL: openstack-ironic-api, openstack-ironic-conductor,
|
|
||||||
openstack-ironic-common and python-ironicclient.
|
|
||||||
For PXE: tftp-server and syslinux-tftpboot.
|
|
||||||
For IMPI: ipmitool.
|
|
||||||
|
|
||||||
* Ubuntu: ironic-api, ironic-conductor and python-ironicclient.
|
|
||||||
For PXE: tftpd-hpa, syslinux and syslinux-common.
|
|
||||||
For IMPI: ipmitool.
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Refer to [REST_API_V1]_ for details.
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* Authentication method to use when connecting to OpenStack other components is
|
|
||||||
keystone with PKI as well as others.
|
|
||||||
|
|
||||||
* Allow ironicclient to preform "secure" SSL (https) requests, the SSL/TLS
|
|
||||||
versions TLSv1.2. TLSv1.0 and TLSv1.1 are only recommended, but the
|
|
||||||
certificates and key exchange are not in the scope of enabling Bare Metal
|
|
||||||
Service.
|
|
||||||
|
|
||||||
* Hash algorithms to use for hashing PKI tokens include md5, etc.
|
|
||||||
|
|
||||||
* The commands which require the use of sudo are:
|
|
||||||
qemu-img
|
|
||||||
iscsiadm
|
|
||||||
blkid
|
|
||||||
blockdev
|
|
||||||
mkswap
|
|
||||||
mkfs
|
|
||||||
mount
|
|
||||||
umount
|
|
||||||
dd
|
|
||||||
fuser
|
|
||||||
parted
|
|
||||||
|
|
||||||
* About resource exhaustion attack, there is no security impact of this Spec.
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
- wenchma@cn.ibm.com
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
- None
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Add a basic cookbook with the default files for getting through first gate
|
|
||||||
.gitignore
|
|
||||||
.gitreview
|
|
||||||
.rubocop.yml
|
|
||||||
Berksfile
|
|
||||||
CONTRIBUTING.md
|
|
||||||
Gemfile
|
|
||||||
metadata.md
|
|
||||||
Rakefile
|
|
||||||
README.md
|
|
||||||
TESTING.md
|
|
||||||
/spec/spec_helper.rb
|
|
||||||
|
|
||||||
* Add the default attribute file to determine Bare Metal Service configuration
|
|
||||||
items.
|
|
||||||
|
|
||||||
* Add the recipe files to install the packages of Bare Metal Service,
|
|
||||||
configure the [BARE_METAL_TEMPLATE]_ and start Bare Metal services.
|
|
||||||
|
|
||||||
* Add the template files to enable Bare Metal Service to be configurable.
|
|
||||||
|
|
||||||
* Add the unit tests.
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
* Ironic requires the supported Bare Metal hardwares, such as x68 servers,
|
|
||||||
HP iLO, and Intel AMT platforms so far.
|
|
||||||
|
|
||||||
* This requires the supported platform operating systems, such as Fedora,
|
|
||||||
RHEL and Ubuntu.
|
|
||||||
|
|
||||||
* This depends on the blueprint [BARE_METAL_ENABLEMENT]_
|
|
||||||
|
|
||||||
* This requires configuring the Bare Metal Service's driver for Compute Service.
|
|
||||||
|
|
||||||
* This requires the setup of supported boot mode, such as [PXE]_ and [IPMI]_.
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* Add unit tests for the recipes.
|
|
||||||
|
|
||||||
* For function and CI integration test, at least one node with OpenStack
|
|
||||||
all-in-one deployment is recommended.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* Add README.md.
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
.. [BARE_METAL_TEMPLATE] `Bare Metal Template values
|
|
||||||
<https://docs.openstack.org/trunk/config-reference/content/ch_configuring-openstack-bare-metal.html>`_
|
|
||||||
|
|
||||||
.. [BARE_METAL_ENABLEMENT] `Bare Metal enablement blueprint
|
|
||||||
<https://blueprints.launchpad.net/openstack-chef/+spec/bare-metal-enablement>`_
|
|
||||||
|
|
||||||
.. [IPMI] `IPMI tool source code
|
|
||||||
<http://ipmitool.sourceforge.net/>`_
|
|
||||||
|
|
||||||
.. [PXE] `PXE user guide
|
|
||||||
<https://docs.openstack.org/developer/ironic/deploy/user-guide.html#pxe>`_
|
|
||||||
|
|
||||||
.. [REST_API_V1] `Bare Metal RESTful Web API v1
|
|
||||||
<https://docs.openstack.org/developer/ironic/webapi/v1.html>`_
|
|
||||||
|
|
||||||
`Bare Metal Service Installation Guide
|
|
||||||
<https://docs.openstack.org/developer/ironic/deploy/install-guide.html>`_
|
|
@ -1,155 +0,0 @@
|
|||||||
=======================================================
|
|
||||||
Enable Distributed Virtual Router(DVR) in chef cookbook
|
|
||||||
=======================================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/enable-dvr-chef-cookbook
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
Currently DVR is disabled by default in Neutron and not allowed to be
|
|
||||||
configured in Network cookbook. After deployed, user has to manually modify
|
|
||||||
the Neutron configuration files to enable DVR.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
The following attribute file in cookbook-openstack-network will be modified:
|
|
||||||
* default.rb
|
|
||||||
We will add attribute ['openstack']['network']['router_distributed'] in it.
|
|
||||||
User can set this attribute to 'auto', true and false. When this attribute is
|
|
||||||
set to 'auto', chef cookbook will do enough check, like checking whether
|
|
||||||
network type ML2 extensions support DVR, checking whether OVS is enabled,
|
|
||||||
after that chef cookbook will enable DVR or output warning messages and logs
|
|
||||||
to tell user what happened. And considering only GRE and VXLAN network types
|
|
||||||
support DVR, router_distributed's true and false setting will only work in
|
|
||||||
the two network types. To VLAN network type, DVR will be disabled by default
|
|
||||||
even router_distributed is set to true, warning messages will be given to
|
|
||||||
user to notify why DVR config doesn't work.
|
|
||||||
|
|
||||||
The following template files in cookbook-openstack-network will be modified:
|
|
||||||
* neutron.conf.erb
|
|
||||||
* l3_agent.ini.erb
|
|
||||||
* ovs_neutron_plugin.ini.erb
|
|
||||||
* ml2_conf.ini.erb
|
|
||||||
Modify attribute 'router_distributed' in neutron.conf.erb, 'agent_mode' in
|
|
||||||
l3_agent.ini.erb, 'enable_distributed_routing' and 'l2_population' in
|
|
||||||
ovs_neutron_plugin.ini.erb, 'mechanism_drivers' in ml2_conf.ini.erb. These
|
|
||||||
attributes can be found in the howto link in the following References section.
|
|
||||||
|
|
||||||
The following recipe files in cookbook-openstack-network may be modified:
|
|
||||||
* l3_agent.rb
|
|
||||||
DVR gives a new data path for vms, like East-West communication, give
|
|
||||||
compute nodes external IPs to make vms can get floating IPs not only from
|
|
||||||
network nodes. And DVR will only work on nodes which has L3 agent and OVS
|
|
||||||
agent, and these will installed for network node role and compute node role.
|
|
||||||
l3_agent.ini.erb will need query the current node is compute node or network
|
|
||||||
node when DVR is enabled. We will use existing network node role and compute
|
|
||||||
node role to deal with that. If a node have both the two roles, we will
|
|
||||||
consider this node as network node.
|
|
||||||
|
|
||||||
If necessary we also need methods to make sure necessary packages
|
|
||||||
like iproute are installed on compute node.
|
|
||||||
|
|
||||||
DVR is supported by network type GRE and VXLAN, but not VLAN yet, so
|
|
||||||
we also need a method to make sure the current network type is either GRE
|
|
||||||
or VXLAN, the network type need maps to key name tunnel_types in
|
|
||||||
ovs_neutron_plugin.ini with values of gre or vxlan. If current network type
|
|
||||||
is VLAN, we should stop the configuration of DVR. And we also need methods
|
|
||||||
to make sure necessary
|
|
||||||
network resource like tunnel network bridge are created on compute node.
|
|
||||||
|
|
||||||
If necessary we will change the role definition for compute node.
|
|
||||||
|
|
||||||
We did test and enabled DVR on Redhat and Ubuntu, but not all versions have
|
|
||||||
been tested. So in cookbook, we will deal with details from different
|
|
||||||
platforms and releases affected and output warning messages and logs to OS
|
|
||||||
we will not support.
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
Another option to case that DVR is enabled while tunnel_types is vlan,
|
|
||||||
is that we can cover that value by gre or vxlan for tunnel_type in
|
|
||||||
ovs_neutron_plugin.ini. Consider that if user decides to enable DVR,
|
|
||||||
user can accept changing in openvswitch agent config file.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
<lzklibj@cn.ibm.com>
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Add attribute 'router_distributed' => 'true' in environment file,
|
|
||||||
then deploy a 1+N environment or a multiple network nodes environment.
|
|
||||||
(All-in-one case is unnecessary, we can consider it similar to 1+0 case)
|
|
||||||
Check if config files are modified according to the list in the wiki Neutron
|
|
||||||
DVR HowTo page.
|
|
||||||
|
|
||||||
Build network N1 and N2, router R1, add subnets of N1 and N2 to R1 as
|
|
||||||
interfaces, before booting any instances, we should see nothing listed in the
|
|
||||||
output when running "ip netns" on the compute nodes. Boot instances on N1 and
|
|
||||||
N2 on different compute nodes, we should see network namespace on those compute
|
|
||||||
nodes by running "ip netns".
|
|
||||||
|
|
||||||
ip-netns is process network namespace management command. You can run
|
|
||||||
"ip netns help" to get more usage. And "ip netns" is short for
|
|
||||||
"ip netns list", it will show all of the named network namespaces, which
|
|
||||||
are under /var/run/netns.
|
|
||||||
|
|
||||||
Also, we can ping from vm to vm while checking output by running tcpdump
|
|
||||||
from compute nodes. If we boot vm1 on N1 on CN1(compute node 1), and vm2
|
|
||||||
on N2 on CN2, after we logon vm1(it doesn't matter we logon from network
|
|
||||||
node or CN1), we can ping vm2 and run 'tcpdump | grep -i "X"' on CN1 or CN2,
|
|
||||||
while "X" is your network type, we will find ICMP packages data path is
|
|
||||||
directly from CN1 to CN2, without passing network nodes (in a 1+N case, ICMP
|
|
||||||
packages will need centralized network node to transmit when DVR is disabled).
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* User can set ['openstack']['network']['router_distributed'] to 'auto' to
|
|
||||||
let chef cookbook configure for DVR aumotically, enable DVR or give warning
|
|
||||||
messages.
|
|
||||||
* DVR will be enabled by default when network type is GRE or VXLAN,
|
|
||||||
user can set ['openstack']['network']['router_distributed]' to 'false'
|
|
||||||
in override_attributes to disable it.
|
|
||||||
* When set ['openstack']['network']['router_distributed'] to 'true', user
|
|
||||||
should check follow attributes to enable DVR: check ['openstack']['network']
|
|
||||||
['core_plugin'] has value 'neutron.plugins.ml2.plugin.ML2Plugin', check
|
|
||||||
['openstack']['network']['ml2']['mechanism_drivers'] has value 'openvswitch'
|
|
||||||
and check ['openstack']['compute']['network']['plugins'] has value
|
|
||||||
'openvswitch'.
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
<https://wiki.openstack.org/wiki/Neutron/DVR>
|
|
||||||
<https://wiki.openstack.org/wiki/Neutron/DVR/HowTo>
|
|
@ -1,170 +0,0 @@
|
|||||||
=================================================
|
|
||||||
Configure openstack services with docker support
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/docker-driver-configuration
|
|
||||||
|
|
||||||
The Docker driver is a hypervisor driver for OpenStack Nova Compute. It was introduced with the Havana release.
|
|
||||||
Docker is an open-source engine which automates the deployment of applications as highly portable, self-sufficient
|
|
||||||
containers which are independent of hardware, language, framework, packaging system and hosting provider.
|
|
||||||
|
|
||||||
Refer [OPENSTACK_DOCKER_DOCUMENTATION]_.
|
|
||||||
|
|
||||||
This new change proposed will enable deployment and configuration of nova-docker driver, glance repo configuration
|
|
||||||
and any needed config to support seemless managment of docker nodes in openstack cloud.
|
|
||||||
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
* Currently, openstack-compute does not support nova-docker driver
|
|
||||||
|
|
||||||
* Currently, openstack-image does not support docker container formats
|
|
||||||
for images which includes docker and dockerref
|
|
||||||
|
|
||||||
* [OPENSTACK_DOCKER_COOKBOOK_OLD]_ is an available
|
|
||||||
option which is not maintained for last 2 years and it has embedded
|
|
||||||
2 years old driver.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Add support in openstack-compute cookbook to configure [NOVA_DOCKER_DRIVER]_.
|
|
||||||
Current support will be to download the nova docker driver from git repo and configure.
|
|
||||||
|
|
||||||
Also change openstack-image to support container formats for docker images
|
|
||||||
which includes docker and dockerref
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
- skairali@cn.ibm.com
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
- ashish.billore1@in.ibm.com
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Add new attributes to openstack-compute
|
|
||||||
|
|
||||||
* Change openstack-compute / nova.conf.erb template for including nova-docker driver
|
|
||||||
|
|
||||||
* Add new recipe for docker configuration in openstack-compute
|
|
||||||
|
|
||||||
* Change compute.rb recipe in openstack-compute to include the new recipe based on configuration
|
|
||||||
|
|
||||||
* Add the unit tests.
|
|
||||||
|
|
||||||
* Change openstack-image and add new container formats in attributes
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
* In order to configure nova-docker driver - compute nodes should be pre installed with
|
|
||||||
docker runtime. Users can opt to use cookbook [CHEF_DOCKER]_
|
|
||||||
In case above cookbook does not support the OS where compute is getting configured
|
|
||||||
use doucmentation which is available at [DOCKER_RUNTIME_INSTALLATION]_.
|
|
||||||
|
|
||||||
* This depends on Nova Docker driver [NOVA_DOCKER_DRIVER]_.
|
|
||||||
Currently a git clone of above source in .zip format is required to complete nova configuration
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* Add unit tests for the recipes.
|
|
||||||
|
|
||||||
* For function and CI integration test, at least one node with OpenStack
|
|
||||||
all-in-one deployment is recommended.
|
|
||||||
|
|
||||||
* In order to configure a compute node as docker compute(while testing using openstack-chef-repo)
|
|
||||||
override the attribute to true using environment which indicates whether a node is docker type or not
|
|
||||||
|
|
||||||
* Prior to testing, install docker runtime to all compute nodes. Refer Dependencies for more details
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* Change README.md. in openstack-compute
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
|
|
||||||
.. [CHEF_DOCKER] `Chef docker cookbook
|
|
||||||
<https://github.com/bflad/chef-docker>`_
|
|
||||||
|
|
||||||
.. [DOCKER_RUNTIME_INSTALLATION] `Docker runtime installation
|
|
||||||
<https://docs.docker.com/installation>`_
|
|
||||||
|
|
||||||
.. [NOVA_DOCKER_DRIVER] `Nova docker driver
|
|
||||||
<https://github.com/stackforge/nova-docker/tree/master>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_DOCKER_COOKBOOK_OLD] `OpenStack Docker cookbook old
|
|
||||||
<https://github.com/paulczar/cookbook-openstack-docker>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_DOCKER_DOCUMENTATION] `OpenStack Docker Documentation
|
|
||||||
<https://wiki.openstack.org/wiki/Docker>`_
|
|
||||||
|
|
||||||
|
|
||||||
Possible Future Enhancements
|
|
||||||
============================
|
|
||||||
|
|
||||||
Change openstack-telemetry cookbook to support monitoring of docker computes
|
|
@ -1,232 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
=================================================
|
|
||||||
Refactor configuration templates in all cookbooks
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
URL of launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/refactor-configuration-templates
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
Our templates for the configurations files for all services have grown through
|
|
||||||
the years and it is getting harder and harder to figure out where to set a
|
|
||||||
specific option that goes into the config files. The same is true for reading
|
|
||||||
these configuration files after they have been rendered, since they contain a
|
|
||||||
lot more options and code than actually needed or used. Additionally every time
|
|
||||||
one of the OpenStack service projects adds or removes an configuration option,
|
|
||||||
we manually need to add an attribute, some conditions and an entry in the
|
|
||||||
template for this. Same goes for every change in the defaults, that is either
|
|
||||||
not reflected at all in our config files, or set explicitly to the same thing,
|
|
||||||
which is just unneeded code after all. Finally, the fact that all of our
|
|
||||||
templates are quite big blocks of code and even contain some hardcoded values
|
|
||||||
for specific configuration options, which came from the original configuration
|
|
||||||
files imported years ago, does not help with keeping up with the multiple changes
|
|
||||||
in the service projects.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
The templates for OpenStack service configurations files should implement or use
|
|
||||||
a logic of setting the needed key-value configuration options in the appropriate
|
|
||||||
section automatically from properly defined chef attributes.
|
|
||||||
|
|
||||||
* logic to render proper configuration files needs to be defined and added
|
|
||||||
(example given below)
|
|
||||||
* attributes used for or in configurations templates need to be checked and
|
|
||||||
refactored to fit this logic
|
|
||||||
* commonly used configuration options should be handled in one place
|
|
||||||
* only needed configuration options should be set in the configuration files
|
|
||||||
after rendering the template
|
|
||||||
* configuration options that are specific to only a few setups should be removed
|
|
||||||
from the default attributes and recipes (especially the switchcases for them)
|
|
||||||
and moved to the documentation. Although this will mean to remove
|
|
||||||
functionality in the sense of removing some switchcases and attributes in the
|
|
||||||
original cookbooks, this should not mean to loose these completely, but rather
|
|
||||||
move them to the documentation to allow an easy implementation in wrapper
|
|
||||||
cookbooks.
|
|
||||||
|
|
||||||
Scope
|
|
||||||
-----
|
|
||||||
|
|
||||||
This spec tries to define a refactoring process that implements a more elegant
|
|
||||||
handling of template files for OpenStack service configurations throughout all
|
|
||||||
cookbooks used to deploy OpenStack.
|
|
||||||
|
|
||||||
|
|
||||||
End user impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* Users of the cookbooks will be able to wrap all OpenStack chef cookbook more
|
|
||||||
easily and set configuration options if needed without patching the actual
|
|
||||||
templates.
|
|
||||||
* Old wrapper cookbooks before this change will stop working partially and
|
|
||||||
would need to be refactored accordingly. The same is true for all environment
|
|
||||||
files that include configuration options for the services via attributes.
|
|
||||||
* Reading configuration files will become a lot easier, since only specifically
|
|
||||||
wanted and needed options will be included in them.
|
|
||||||
* The user can add environment and company specific comments in the service
|
|
||||||
configuration files via attributes.
|
|
||||||
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Cookbook developers will not need to add attributes for configuration templates,
|
|
||||||
nor should there be any need to change existing attributes to fit the changing
|
|
||||||
defaults in OpenStack service projects. It should become easier to read the
|
|
||||||
overall cookbook, since a big part of the code in the templates and attribute
|
|
||||||
files will be cut or moved with this feature. Therefore it might be easier to
|
|
||||||
contribute as a newcomer without spending hours to understand how all the
|
|
||||||
attributes work with each other (given that the logic used to render the
|
|
||||||
templates is easier to understand of course).
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
<j-klare>
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* define a generic structure for templates, that can be used for most of the
|
|
||||||
configuration files
|
|
||||||
* main config files for services look like this for all configuration
|
|
||||||
options:
|
|
||||||
|
|
||||||
[section]
|
|
||||||
# optional comment or description
|
|
||||||
key = value (usually simple boolean, numeric or string)
|
|
||||||
# optional comment or description
|
|
||||||
key = [ array which could be large ]
|
|
||||||
|
|
||||||
* create a logic to render configuration files from properly set chef attributes
|
|
||||||
* attributes could look like this for main configuration files (e.g. nova
|
|
||||||
or neutron.conf):
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
default['openstack'][service]['conf'][section][key] =
|
|
||||||
value
|
|
||||||
|
|
||||||
without a comment:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
default['openstack'][service]['conf'][section]['debug'] =
|
|
||||||
true
|
|
||||||
|
|
||||||
with a comment:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
default['openstack'][service]['conf'][section]['debug'] =
|
|
||||||
{ set_to: true, comment: 'this option is the switch to enable/disable debug loggging' }
|
|
||||||
|
|
||||||
cookbook-openstack-common/templates/common.conf.erb :
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
<% @service_config.each do |section, values| -%>
|
|
||||||
[<%= section %>]
|
|
||||||
<% values.each do |key, value| -%>
|
|
||||||
<% if value.class == Hash -%>
|
|
||||||
<%= "# {value['comment']}" -%>
|
|
||||||
<%= key %> = <%= value['set_to'] %>
|
|
||||||
<% else -%>
|
|
||||||
<%= key %> = <%= value %>
|
|
||||||
<% end -%>
|
|
||||||
<% end -%>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
cookbook-openstack-compute/recipes/common.rb :
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
...
|
|
||||||
# activesupport currently needs to be upgraded, since the one used in
|
|
||||||
# chef 12 is too old (3.2.19) and does not include the needed deep_merge
|
|
||||||
chef_gem 'activesupport' do
|
|
||||||
action :upgrade
|
|
||||||
version '4.2.4'
|
|
||||||
end
|
|
||||||
require 'active_support'
|
|
||||||
...
|
|
||||||
|
|
||||||
neutron_admin_password = get_password 'service', 'openstack-network'
|
|
||||||
identity_admin_endpoint = admin_endpoint 'identity-admin'
|
|
||||||
identity_uri = identity_uri_transform(identity_admin_endpoint)
|
|
||||||
...
|
|
||||||
|
|
||||||
secrets = {
|
|
||||||
neutron: {
|
|
||||||
admin_password: neutron_admin_password,
|
|
||||||
...
|
|
||||||
},
|
|
||||||
keystone_authtoken: {
|
|
||||||
identity_uri: identity_uri,
|
|
||||||
...
|
|
||||||
},
|
|
||||||
...
|
|
||||||
}
|
|
||||||
|
|
||||||
# merge node attributes with secrets like passwords etc. for
|
|
||||||
# usage in template['/etc/nova/nova.conf']
|
|
||||||
nova_config_options =
|
|
||||||
node['openstack']['compute']['conf'].deep_merge(secrets)
|
|
||||||
|
|
||||||
template '/etc/nova/nova.conf' do
|
|
||||||
source 'common.conf.erb'
|
|
||||||
cookbook 'openstack-common'
|
|
||||||
owner node['openstack']['compute']['user']
|
|
||||||
group node['openstack']['compute']['group']
|
|
||||||
mode 00640
|
|
||||||
variables(
|
|
||||||
service_config: nova_config_options
|
|
||||||
)
|
|
||||||
end
|
|
||||||
...
|
|
||||||
|
|
||||||
cookbook-openstack-compute/templates/nova.conf.erb -- not needed anymore
|
|
||||||
|
|
||||||
* add a link to documentation/config reference to all config files
|
|
||||||
* refactor currently used attributes to fit into that logic
|
|
||||||
* adapt specs
|
|
||||||
* define a set of minimal needed attributes to create a working stack and move
|
|
||||||
the rest of the attributes into documentation
|
|
||||||
* remove attributes that would set configuration options that are equal to the
|
|
||||||
defaults
|
|
||||||
* propagate not backward compatible change at a fitting point in time without
|
|
||||||
making a lot of people angry
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* lint and style tests with rubocop (as is)
|
|
||||||
* unit tests with chefspec with special focus on testing the proper rendering of
|
|
||||||
the configuration templates (including the sections)
|
|
||||||
* integration testing with chef provisioning
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
These patches should move a good part of the currently defined attributes to the
|
|
||||||
documentation as examples for specific setups.
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
@ -1,164 +0,0 @@
|
|||||||
===================================
|
|
||||||
IP address movement for ovs bridges
|
|
||||||
===================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/ip-movement
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
Neutron openvswitch plugin uses ovs bridges to manage network stream. Recipe
|
|
||||||
openvswitch, l3_agent, and vpn_agent use ovs commands to create those bridges
|
|
||||||
and will plug the corresponding NICs to each of them. But those recipes do not
|
|
||||||
move the NICs' IP addresses to the bridges, which will lead to the NIC IP address
|
|
||||||
can not be accessed once finish the bridges creation.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Add recipes to move IP address from NIC to bridge. Make sure those IP addresses
|
|
||||||
can also be accessed after finish the bridge creation.
|
|
||||||
|
|
||||||
Three attributes will be added, including:
|
|
||||||
|
|
||||||
* ['openstack']['network']['ip_movement']['enable']: Boolean attribute to decide
|
|
||||||
whether IP movement should be enabled or not. Default to true.
|
|
||||||
|
|
||||||
* ['openstack']['network']['ip-movement']['timeout']: Integer attribute to decide
|
|
||||||
the timeout of IP movement. IP movement uses 'service network restart' (for fedora
|
|
||||||
platform) and 'ifdown', 'ifup' (for ubuntu platform) commands to let network
|
|
||||||
configurations take effect. This attribute decides how long the node should wait
|
|
||||||
for the network to become operational again after executing the previous commands.
|
|
||||||
And it default to 180.
|
|
||||||
|
|
||||||
* ['openstack']['network']['ip-movement']['validate-ip']: String of IP address pinged
|
|
||||||
by ip movement in the of its operations to check whether the ip movement is succeed.
|
|
||||||
Default to nil. Means this ip movement will use default gateway to check its status.
|
|
||||||
|
|
||||||
Two libraries will be added, including:
|
|
||||||
|
|
||||||
* ip-movement-fedora: This library includes the fedora platform IP movement configurations.
|
|
||||||
|
|
||||||
* ip-movement-ubuntu: This library includes the ubuntu platform IP movement configurations.
|
|
||||||
|
|
||||||
One resource will be added, including:
|
|
||||||
|
|
||||||
* ovs_bridge: This resource will create the ovs bridge and move the ip address to the
|
|
||||||
corresponding bridge depend on the resource attributes.
|
|
||||||
|
|
||||||
openvswitch and l3-agent recipes will changed to use this new resource create ovs bridge.
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
Like devstack, using ovs commands and ip commands to flush the ip address in NIC,
|
|
||||||
and add ip address to ovs bridge can also move the ip address to the bridges. But
|
|
||||||
this is a temporary move. After network restart or reboot the OS, the ip address
|
|
||||||
will go back to NIC. We need make sure this movement is persistent by write those
|
|
||||||
configurations to network configuration files.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
- hwhu@cn.ibm.com
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
- jckasper@us.ibm.com
|
|
||||||
- lzklibj@cn.ibm.com
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Add new attributes to openstack-network.
|
|
||||||
|
|
||||||
* Add ovs_bridge resource and provider.
|
|
||||||
|
|
||||||
* Add ip-movement-fedora library to handle fedora platform IP movement configurations.
|
|
||||||
|
|
||||||
* Add ip-movement-ubuntu library to configure ubuntu platform IP movement configurations.
|
|
||||||
|
|
||||||
* Add the unit tests.
|
|
||||||
|
|
||||||
* Change openvswitch and l3-agent recipes use ovs_bridge resource to create ovs bridge.
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
* IP movement use 'service network restart' , 'ifdown' and 'ifup' to let network
|
|
||||||
configurations take effect. Those scripts are contained in initscripts packege.
|
|
||||||
This cookbook will install it.
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* Add unit tests for the new recipes.
|
|
||||||
|
|
||||||
* For function tests and CI integration tests, at least an all-in-one openstack
|
|
||||||
configured with neutron openvswitch plugin and enabled l3 service is needed.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* Configure attribute ['openstack']['network']['ip-movement']['enable'] = 'True'
|
|
||||||
to enable IP movement.
|
|
||||||
|
|
||||||
* Using ['openstack']['network']['ip-movement']['timeout'] to configure the timeout
|
|
||||||
of IP movement. This attribute decides how long the node should wait for the network
|
|
||||||
to become operational again after executing the previous commands.
|
|
||||||
|
|
||||||
* IP movement default to use default gateway to check its network connections in the
|
|
||||||
end of its operations. Assign an ip address to ['openstack']['network']['ip-movement']
|
|
||||||
['validate-ip'] attribute to use another ip address instead.
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
* `Red Hat network scripts integration <https://github.com/osrg/openvswitch/blob/mpls-nx/rhel/README.RHEL>`_
|
|
||||||
|
|
||||||
* `README.Debian for openvswitch-switch <https://github.com/horms/openvswitch/blob/devel/add-group-help-fix/debian/openvswitch-switch.README.Debian>`_
|
|
@ -1,204 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
=================================================
|
|
||||||
Configure openstack services with PowerVM support
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/openstack-powervm
|
|
||||||
|
|
||||||
IBM PowerVM is a hypervisor that the POWER platform supports.
|
|
||||||
PowerVM admins can see benefits in their environments by making use of OpenStack.
|
|
||||||
The nova driver (along with a Neutron ML2 compatible agent and ceilometer
|
|
||||||
agent) will provide capability for admins of PowerVM to use OpenStack natively.
|
|
||||||
The PowerVM drivers are opensource and currently being worked in the StackForge
|
|
||||||
community.
|
|
||||||
For Nova, the PowerVM compute driver is on the openstack base incubation track.
|
|
||||||
For Neutron the driver will follow the BYOD model set forth in the Neutron extension
|
|
||||||
decomposition. There is a blueprint for supporting a PowerVM compute
|
|
||||||
inspector in Ceilometer at least for the L release.
|
|
||||||
In a later release it's been expressed that the Ceilometer compute notifications model may change.
|
|
||||||
For PowerVM systems this ML2 agent would replace the default openvswitch agent for compute nodes
|
|
||||||
with the PowerVM SEA ML2 agent.
|
|
||||||
|
|
||||||
|
|
||||||
Refer [OPENSTACK_NOVA_POWERVM]_.
|
|
||||||
Refer [OPENSTACK_NEUTRON_POWERVM]_.
|
|
||||||
Refer [OPENSTACK_CEILOMETER_POWERVM]_.
|
|
||||||
Refer [POWERVM_CEILOMETER_COMPUTE]_.
|
|
||||||
|
|
||||||
This new change proposed will enable deployment and configuration of the
|
|
||||||
PowerVM Nova compute driver, Neutron ML2 agent and Ceilometer compute inspector.
|
|
||||||
Similar to VMWare, this is an addition to support another type of hypervisor.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
* Currently, cookbook-openstack-compute does not support the deployment and
|
|
||||||
configuration of the PowerVM Nova compute driver.
|
|
||||||
* Currently, cookbook-openstack-network does not support the deployment and
|
|
||||||
configuration of the PowerVM Neutron ML2 agent.
|
|
||||||
* Currently, cookbook-openstack-telemetry does not support the deployment and
|
|
||||||
configuration of the PowerVM Ceilometer compute inspector.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Add support in cookbook-openstack-* cookbooks to configure the PowerVM Nova
|
|
||||||
compute driver, Neutron ML2 agent and Ceilometer compute inspector.
|
|
||||||
|
|
||||||
* A new configuration attribute will be added in order to deploy PowerVM drivers
|
|
||||||
* If the new attribute is enabled, it will auto set other attributes and
|
|
||||||
automatically include the PowerVM recipes
|
|
||||||
* By default, PowerVM drivers will be downloaded from source code on Stackforge
|
|
||||||
* A new configuration attribute will allow to download from either source code
|
|
||||||
or public package repository
|
|
||||||
* A new configuration attribute will allow to override the package repository url
|
|
||||||
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
* User manually downloads code from Stackforge and deploy/configure the PowerVM
|
|
||||||
Nova compute driver, Neutron ML2 agent and Ceilometer compute inspector.
|
|
||||||
* User extends the existing OpenStack Puppet modules to deploy and configure
|
|
||||||
the PowerVM Nova compute driver, Neutron ML2 agent and Ceilometer compute inspector.
|
|
||||||
|
|
||||||
Refer [OPENSTACK_PUPPET_NOVA]_.
|
|
||||||
Refer [OPENSTACK_PUPPET_NEUTRON]_.
|
|
||||||
Refer [OPENSTACK_PUPPET_CEILOMETER]_.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
* Deployment of PowerVM drivers has to be explicitly enabled
|
|
||||||
* As of now, we're considering the use of configuration attributes rather than
|
|
||||||
roles to deploy PowerVM drivers since its usage is not considered generic yet.
|
|
||||||
* The deployer will be able to deploy the PowerVM drivers from different sources
|
|
||||||
(github, public or private package repositories) by overriding
|
|
||||||
configuration attributes.
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
dclain
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
thorst
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
* Work with the PowerVM Driver team to fully understand all of the
|
|
||||||
configuration options
|
|
||||||
* Add new attributes to openstack-compute, openstack-network,
|
|
||||||
openstack-telemetry to support PowerVM
|
|
||||||
* Change openstack-compute / nova.conf.erb template for including
|
|
||||||
configuration specific to the PowerVM Nova compute driver
|
|
||||||
* Change openstack-compute / rootwrap.conf.erb template for including filters
|
|
||||||
specific to the PowerVM Nova compute driver
|
|
||||||
* Add new recipe for PowerVM configuration in openstack-compute
|
|
||||||
* Change openstack-net work / ml2_conf.ini.erb in openstack-network for
|
|
||||||
including configuration specific to the PowerVM Neutron ML2 agent
|
|
||||||
* Add new recipe for the PowerVM Neutron ML2 agent configuration in
|
|
||||||
openstack-network
|
|
||||||
* Add new recipe for the PowerVM Ceilometer inspector configuration in
|
|
||||||
openstack-telemetry
|
|
||||||
* Add Unit Tests for each new recipe
|
|
||||||
* Extend openstack-chef-repo to test all-in-one PowerVM nova-network
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
* TBD
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
* Add unit tests for the recipes
|
|
||||||
* Add new test, environment to support all-in-one PowerVM nova compute using
|
|
||||||
openstack-chef-repo
|
|
||||||
* We will report our function and CI integration test results (using
|
|
||||||
openstack-chef-repo) back to the Chef team.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
* Update README.md in openstack-compute, openstack-network, openstack-telemetry
|
|
||||||
cookbooks to expose the PowerVM configuration attributes and how to enable it
|
|
||||||
* Update README.md in openstack-chef-repo cookbook to explain
|
|
||||||
* Add documentation in openstack-chef-repo/doc to explain how to test a PowerVM
|
|
||||||
specific all-in-one compute configuration
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
.. [OPENSTACK_NOVA_POWERVM] `PowerVM driver for OpenStack Nova compute driver
|
|
||||||
<https://github.com/stackforge/nova-powervm>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_NEUTRON_POWERVM] `PowerVM driver for OpenStack Neutron ML2 agent
|
|
||||||
<https://github.com/stackforge/neutron-powervm>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_CEILOMETER_POWERVM] `PowerVM driver for OpenStack Ceilometer
|
|
||||||
compute inspector <https://github.com/stackforge/ceilometer-powervm>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_PUPPET_NOVA] `OpenStack Nova Puppet Module
|
|
||||||
<https://github.com/openstack/puppet-nova>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_PUPPET_NEUTRON] `OpenStack Neutron Puppet Module
|
|
||||||
<https://github.com/openstack/puppet-neutron>`_
|
|
||||||
|
|
||||||
.. [OPENSTACK_PUPPET_CEILOMETER] `OpenStack Ceilometer Puppet Module
|
|
||||||
<https://github.com/openstack/puppet-ceilometer>`_
|
|
||||||
|
|
||||||
.. [POWERVM_CEILOMETER_COMPUTE] `PowerVM Ceilometer Compute Launchpad
|
|
||||||
<https://launchpad.net/ceilometer-powervm>`_
|
|
||||||
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
=======================================================
|
|
||||||
Stop generating admin endpoints in the keystone catalog
|
|
||||||
=======================================================
|
|
||||||
|
|
||||||
The admin endpoints offer no special functionality, users may talk to the
|
|
||||||
public endpoints instead. The only historic use case has been the keystone
|
|
||||||
v2 admin endpoint, but with keystone v3 API, even that is no longer needed.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
Currently we generate admin endpoints for almost all services. As the service
|
|
||||||
catalog is sent to the API user for every transaction, this generates some
|
|
||||||
amount of overhead, as these endpoints aren't really needed anymore. Dropping
|
|
||||||
them will also reduce the time needed for chef runs.
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Drop the admin endpoints from all identity_registration recipes in our
|
|
||||||
cookbooks. This will affect:
|
|
||||||
|
|
||||||
- cookbook-openstack-block-storage
|
|
||||||
- cookbook-openstack-compute
|
|
||||||
- cookbook-openstack-identity
|
|
||||||
- cookbook-openstack-image
|
|
||||||
- cookbook-openstack-networking
|
|
||||||
- cookbook-openstack-orchestration
|
|
||||||
- cookbook-openstack-telemetry
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
Stick to the status quo.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Deployments that have been using a different admin endpoint with restricted
|
|
||||||
access may need to switch to using the internal endpoint instead.
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
The size of the service catalog will be reduced, as well as the duration of
|
|
||||||
chef runs, both with positively impact performance.
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Deployments that in some way make unexpected use of the admin endpoints will
|
|
||||||
need to be adapted.
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
<j-rosenboom-j>
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
<jklare>
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
- Update identity_registration recipes
|
|
||||||
- Check for unknown dependencies
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Our integration tests should have sufficient coverage in order to make sure
|
|
||||||
that this change doesn't have any negative impact.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
None
|
|
@ -1,323 +0,0 @@
|
|||||||
..
|
|
||||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
||||||
License.
|
|
||||||
|
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
||||||
|
|
||||||
==========================================
|
|
||||||
Example Spec - The title of your blueprint
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
Include the URL of your launchpad blueprint:
|
|
||||||
|
|
||||||
https://blueprints.launchpad.net/openstack-chef/+spec/example
|
|
||||||
|
|
||||||
Introduction paragraph -- why are we doing anything? A single paragraph of
|
|
||||||
prose that operators can understand. The title and this first paragraph
|
|
||||||
should be used as the subject line and body of the commit message
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
Some notes about using this template:
|
|
||||||
|
|
||||||
* Your spec should be in ReSTructured text, like this template.
|
|
||||||
|
|
||||||
* Please wrap text at 79 columns.
|
|
||||||
|
|
||||||
* The filename in the git repository should match the launchpad URL, for
|
|
||||||
example a URL of: https://blueprints.launchpad.net/openstack-chef/+spec/awesome-thing
|
|
||||||
should be named awesome-thing.rst
|
|
||||||
|
|
||||||
* Please do not delete any of the sections in this template. If you have
|
|
||||||
nothing to say for a whole section, just write: None
|
|
||||||
|
|
||||||
* For help with syntax, see http://sphinx-doc.org/rest.html
|
|
||||||
|
|
||||||
* To test out your formatting, build the docs using tox and see the generated
|
|
||||||
HTML file in doc/build/html/specs/<path_of_your_file>
|
|
||||||
|
|
||||||
* If you would like to provide a diagram with your spec, ascii diagrams are
|
|
||||||
required. http://asciiflow.com/ is a very nice tool to assist with making
|
|
||||||
ascii diagrams. The reason for this is that the tool used to review specs is
|
|
||||||
based purely on plain text. Plain text will allow review to proceed without
|
|
||||||
having to look at additional files which can not be viewed in gerrit. It
|
|
||||||
will also allow inline feedback on the diagram itself.
|
|
||||||
|
|
||||||
Problem description
|
|
||||||
===================
|
|
||||||
|
|
||||||
A detailed description of the problem:
|
|
||||||
|
|
||||||
* For a new feature this might be use cases. Ensure you are clear about the
|
|
||||||
actors in each use case: End User vs Deployer
|
|
||||||
|
|
||||||
* For a major reworking of something existing it would describe the
|
|
||||||
problems in that feature that are being addressed.
|
|
||||||
|
|
||||||
|
|
||||||
Proposed change
|
|
||||||
===============
|
|
||||||
|
|
||||||
Here is where you cover the change you propose to make in detail. How do you
|
|
||||||
propose to solve this problem?
|
|
||||||
|
|
||||||
If this is one part of a larger effort make it clear where this piece ends. In
|
|
||||||
other words, what's the scope of this effort?
|
|
||||||
|
|
||||||
Alternatives
|
|
||||||
------------
|
|
||||||
|
|
||||||
What other ways could we do this thing? Why aren't we using those? This doesn't
|
|
||||||
have to be a full literature review, but it should demonstrate that thought has
|
|
||||||
been put into why the proposed solution is an appropriate one.
|
|
||||||
|
|
||||||
Data model impact
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Changes which require modifications to the data model often have a wider impact
|
|
||||||
on the system. The community often has strong opinions on how the data model
|
|
||||||
should be evolved, from both a functional and performance perspective. It is
|
|
||||||
therefore important to capture and gain agreement as early as possible on any
|
|
||||||
proposed changes to the data model.
|
|
||||||
|
|
||||||
Questions which need to be addressed by this section include:
|
|
||||||
|
|
||||||
* What new data objects and/or database schema changes is this going to
|
|
||||||
require?
|
|
||||||
|
|
||||||
* What database migrations will accompany this change.
|
|
||||||
|
|
||||||
* How will the initial set of new data objects be generated, for example if you
|
|
||||||
need to take into account existing instances, or modify other existing data
|
|
||||||
describe how that will work.
|
|
||||||
|
|
||||||
REST API impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Each API method which is either added or changed should have the following
|
|
||||||
|
|
||||||
* Specification for the method
|
|
||||||
|
|
||||||
* A description of what the method does suitable for use in
|
|
||||||
user documentation
|
|
||||||
|
|
||||||
* Method type (POST/PUT/GET/DELETE)
|
|
||||||
|
|
||||||
* Normal http response code(s)
|
|
||||||
|
|
||||||
* Expected error http response code(s)
|
|
||||||
|
|
||||||
* A description for each possible error code should be included
|
|
||||||
describing semantic errors which can cause it such as
|
|
||||||
inconsistent parameters supplied to the method, or when an
|
|
||||||
instance is not in an appropriate state for the request to
|
|
||||||
succeed. Errors caused by syntactic problems covered by the JSON
|
|
||||||
schema defintion do not need to be included.
|
|
||||||
|
|
||||||
* URL for the resource
|
|
||||||
|
|
||||||
* Parameters which can be passed via the url
|
|
||||||
|
|
||||||
* JSON schema definition for the body data if allowed
|
|
||||||
|
|
||||||
* JSON schema definition for the response data if any
|
|
||||||
|
|
||||||
* Example use case including typical API samples for both data supplied
|
|
||||||
by the caller and the response
|
|
||||||
|
|
||||||
* Discuss any policy changes, and discuss what things a deployer needs to
|
|
||||||
think about when defining their policy.
|
|
||||||
|
|
||||||
Example JSON schema definitions can be found in the openstack-chef tree
|
|
||||||
https://git.openstack.org/cgit/openstack/openstack-chef/tree/openstack-chef/api/openstack/compute/schemas/v3
|
|
||||||
|
|
||||||
Note that the schema should be defined as restrictively as
|
|
||||||
possible. Parameters which are required should be marked as such and
|
|
||||||
only under exceptional circumstances should additional parameters
|
|
||||||
which are not defined in the schema be permitted (eg
|
|
||||||
additionaProperties should be False).
|
|
||||||
|
|
||||||
Reuse of existing predefined parameter types such as regexps for
|
|
||||||
passwords and user defined names is highly encouraged.
|
|
||||||
|
|
||||||
Security impact
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Describe any potential security impact on the system. Some of the items to
|
|
||||||
consider include:
|
|
||||||
|
|
||||||
* Does this change touch sensitive data such as tokens, keys, or user data?
|
|
||||||
|
|
||||||
* Does this change alter the API in a way that may impact security, such as
|
|
||||||
a new way to access sensitive information or a new way to login?
|
|
||||||
|
|
||||||
* Does this change involve cryptography or hashing?
|
|
||||||
|
|
||||||
* Does this change require the use of sudo or any elevated privileges?
|
|
||||||
|
|
||||||
* Does this change involve using or parsing user-provided data? This could
|
|
||||||
be directly at the API level or indirectly such as changes to a cache layer.
|
|
||||||
|
|
||||||
* Can this change enable a resource exhaustion attack, such as allowing a
|
|
||||||
single API interaction to consume significant server resources? Some examples
|
|
||||||
of this include launching subprocesses for each connection, or entity
|
|
||||||
expansion attacks in XML.
|
|
||||||
|
|
||||||
For more detailed guidance, please see the OpenStack Security Guidelines as
|
|
||||||
a reference (https://wiki.openstack.org/wiki/Security/Guidelines). These
|
|
||||||
guidelines are a work in progress and are designed to help you identify
|
|
||||||
security best practices. For further information, feel free to reach out
|
|
||||||
to the OpenStack Security Group at openstack-security@lists.openstack.org.
|
|
||||||
|
|
||||||
Notifications impact
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
Please specify any changes to notifications. Be that an extra notification,
|
|
||||||
changes to an existing notification, or removing a notification.
|
|
||||||
|
|
||||||
Other end user impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Aside from the API, are there other ways a user will interact with this
|
|
||||||
feature?
|
|
||||||
|
|
||||||
* Does this change have an impact on python-openstack-chefclient? What does the user
|
|
||||||
interface there look like?
|
|
||||||
|
|
||||||
Performance Impact
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Describe any potential performance impact on the system, for example
|
|
||||||
how often will new code be called, and is there a major change to the calling
|
|
||||||
pattern of existing code.
|
|
||||||
|
|
||||||
Examples of things to consider here include:
|
|
||||||
|
|
||||||
* A periodic task might look like a small addition but if it calls conductor or
|
|
||||||
another service the load is multiplied by the number of nodes in the system.
|
|
||||||
|
|
||||||
* Scheduler filters get called once per host for every instance being created,
|
|
||||||
so any latency they introduce is linear with the size of the system.
|
|
||||||
|
|
||||||
* A small change in a utility function or a commonly used decorator can have a
|
|
||||||
large impacts on performance.
|
|
||||||
|
|
||||||
* Calls which result in a database queries (whether direct or via conductor)
|
|
||||||
can have a profound impact on performance when called in critical sections of
|
|
||||||
the code.
|
|
||||||
|
|
||||||
* Will the change include any locking, and if so what considerations are there
|
|
||||||
on holding the lock?
|
|
||||||
|
|
||||||
Other deployer impact
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Discuss things that will affect how you deploy and configure OpenStack
|
|
||||||
that have not already been mentioned, such as:
|
|
||||||
|
|
||||||
* What config options are being added? Should they be more generic than
|
|
||||||
proposed (for example a flag that other hypervisor drivers might want to
|
|
||||||
implement as well)? Are the default values ones which will work well in
|
|
||||||
real deployments?
|
|
||||||
|
|
||||||
* Is this a change that takes immediate effect after its merged, or is it
|
|
||||||
something that has to be explicitly enabled?
|
|
||||||
|
|
||||||
* If this change is a new binary, how would it be deployed?
|
|
||||||
|
|
||||||
* Please state anything that those doing continuous deployment, or those
|
|
||||||
upgrading from the previous release, need to be aware of. Also describe
|
|
||||||
any plans to deprecate configuration values or features. For example, if we
|
|
||||||
change the directory name that instances are stored in, how do we handle
|
|
||||||
instance directories created before the change landed? Do we move them? Do
|
|
||||||
we have a special case in the code? Do we assume that the operator will
|
|
||||||
recreate all the instances in their cloud?
|
|
||||||
|
|
||||||
Developer impact
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Discuss things that will affect other developers working on OpenStack,
|
|
||||||
such as:
|
|
||||||
|
|
||||||
* If the blueprint proposes a change to the driver API, discussion of how
|
|
||||||
other hypervisors would implement the feature is required.
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
==============
|
|
||||||
|
|
||||||
Assignee(s)
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Who is leading the writing of the code? Or is this a blueprint where you're
|
|
||||||
throwing it out there to see who picks it up?
|
|
||||||
|
|
||||||
If more than one person is working on the implementation, please designate the
|
|
||||||
primary author and contact.
|
|
||||||
|
|
||||||
Primary assignee:
|
|
||||||
<launchpad-id or None>
|
|
||||||
|
|
||||||
Other contributors:
|
|
||||||
<launchpad-id or None>
|
|
||||||
|
|
||||||
Work Items
|
|
||||||
----------
|
|
||||||
|
|
||||||
Work items or tasks -- break the feature up into the things that need to be
|
|
||||||
done to implement it. Those parts might end up being done by different people,
|
|
||||||
but we're mostly trying to understand the timeline for implementation.
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
============
|
|
||||||
|
|
||||||
* Include specific references to specs and/or blueprints in openstack-chef, or in other
|
|
||||||
projects, that this one either depends on or is related to.
|
|
||||||
|
|
||||||
* If this requires functionality of another project that is not currently used
|
|
||||||
by openstack-chef (such as the glance v2 API when we previously only required v1),
|
|
||||||
document that fact.
|
|
||||||
|
|
||||||
* Does this feature require any new library dependencies or code otherwise not
|
|
||||||
included in OpenStack? Or does it depend on a specific version of library?
|
|
||||||
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Please discuss how the change will be tested. We especially want to know what
|
|
||||||
tempest tests will be added. It is assumed that unit test coverage will be
|
|
||||||
added so that doesn't need to be mentioned explicitly, but discussion of why
|
|
||||||
you think unit tests are sufficient and we don't need to add more tempest
|
|
||||||
tests would need to be included.
|
|
||||||
|
|
||||||
Is this untestable in gate given current limitations (specific hardware /
|
|
||||||
software configurations available)? If so, are there mitigation plans (3rd
|
|
||||||
party testing, gate enhancements, etc).
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Impact
|
|
||||||
====================
|
|
||||||
|
|
||||||
What is the impact on the docs team of this change? Some changes might require
|
|
||||||
donating resources to the docs team to have the documentation updated. Don't
|
|
||||||
repeat details discussed above, but please reference them here.
|
|
||||||
|
|
||||||
|
|
||||||
References
|
|
||||||
==========
|
|
||||||
|
|
||||||
Please add any useful references here. You are not required to have any
|
|
||||||
reference. Moreover, this specification should still make sense when your
|
|
||||||
references are unavailable. Examples of what you could include are:
|
|
||||||
|
|
||||||
* Links to mailing list or IRC discussions
|
|
||||||
|
|
||||||
* Links to notes from a summit session
|
|
||||||
|
|
||||||
* Links to relevant research, if appropriate
|
|
||||||
|
|
||||||
* Related specifications as appropriate (e.g. if it's an EC2 thing, link the
|
|
||||||
EC2 docs)
|
|
||||||
|
|
||||||
* Anything else you feel it is worthwhile to refer to
|
|
16
tox.ini
16
tox.ini
@ -1,16 +0,0 @@
|
|||||||
[tox]
|
|
||||||
envlist = docs
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
basepython = python3
|
|
||||||
usedevelop = True
|
|
||||||
setenv = VIRTUAL_ENV={envdir}
|
|
||||||
deps = -r{toxinidir}/requirements.txt
|
|
||||||
commands = python setup.py testr --slowest --testr-args='{posargs}'
|
|
||||||
|
|
||||||
[testenv:venv]
|
|
||||||
commands = {posargs}
|
|
||||||
|
|
||||||
[testenv:docs]
|
|
||||||
commands =
|
|
||||||
sphinx-build -W -b html doc/source doc/build/html
|
|
Loading…
Reference in New Issue
Block a user