├── .gitignore ├── .gitreview ├── CONTRIBUTING.rst ├── README.rst ├── cookiecutter.json ├── hooks └── post_gen_project.sh ├── releasenotes └── notes │ └── drop-python27-support-87786dbabd832d89.yaml └── {{cookiecutter.repo_name}} ├── .coveragerc ├── .gitignore ├── .gitreview ├── .mailmap ├── .stestr.conf ├── CONTRIBUTING.rst ├── HACKING.rst ├── LICENSE ├── README.rst ├── doc ├── requirements.txt └── source │ ├── admin │ └── index.rst │ ├── cli │ └── index.rst │ ├── conf.py │ ├── configuration │ └── index.rst │ ├── contributor │ ├── contributing.rst │ └── index.rst │ ├── index.rst │ ├── install │ ├── common_configure.rst │ ├── common_prerequisites.rst │ ├── get_started.rst │ ├── index.rst │ ├── install-obs.rst │ ├── install-rdo.rst │ ├── install-ubuntu.rst │ ├── install.rst │ ├── next-steps.rst │ └── verify.rst │ ├── library │ └── index.rst │ ├── readme.rst │ ├── reference │ └── index.rst │ └── user │ └── index.rst ├── lower-constraints.txt ├── releasenotes ├── notes │ └── .placeholder └── source │ ├── _static │ └── .placeholder │ ├── _templates │ └── .placeholder │ ├── conf.py │ ├── index.rst │ └── unreleased.rst ├── requirements.txt ├── setup.cfg ├── setup.py ├── test-requirements.txt ├── tox.ini └── {{cookiecutter.module_name}} ├── __init__.py └── tests ├── __init__.py ├── base.py └── test_{{cookiecutter.module_name}}.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Add patterns in here to exclude files created by tools integrated with this 2 | # repository, such as test frameworks from the project's recommended workflow, 3 | # rendered documentation and package builds. 4 | # 5 | # Don't add patterns to exclude files created by preferred personal tools 6 | # (editors, IDEs, your operating system itself even). These should instead be 7 | # maintained outside the repository, for example in a ~/.gitignore file added 8 | # with: 9 | # 10 | # git config --global core.excludesfile '~/.gitignore' 11 | 12 | # Bytecompiled Python 13 | *.py[cod] 14 | 15 | # C extensions 16 | *.so 17 | 18 | # Packages 19 | *.egg 20 | *.egg-info 21 | dist 22 | build 23 | .eggs 24 | eggs 25 | parts 26 | bin 27 | var 28 | sdist 29 | develop-eggs 30 | .installed.cfg 31 | lib 32 | lib64 33 | 34 | # Installer logs 35 | pip-log.txt 36 | 37 | # Unit test / coverage reports 38 | .coverage 39 | .tox 40 | nosetests.xml 41 | .testrepository 42 | .venv 43 | 44 | # Translations 45 | *.mo 46 | 47 | # Complexity 48 | output/*.html 49 | output/*/index.html 50 | 51 | # Sphinx 52 | doc/build 53 | 54 | # pbr generates these 55 | AUTHORS 56 | ChangeLog 57 | 58 | # Cookiecutter 59 | output/ 60 | boilerplate/ 61 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/cookiecutter.git 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/openstack/cookiecutter 4 | 5 | Pull requests submitted through GitHub are not monitored. 6 | 7 | To start contributing to OpenStack, follow the steps in the contribution guide 8 | to set up and use Gerrit: 9 | 10 | https://docs.openstack.org/contributors/code-and-documentation/quick-start.html 11 | 12 | Bugs should be filed on Launchpad, not GitHub: 13 | 14 | https://bugs.launchpad.net/oslo 15 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | cookiecutter-openstack 3 | ====================== 4 | 5 | Cookiecutter template for an OpenStack project. See https://github.com/audreyr/cookiecutter. 6 | 7 | * Free software: Apache license 8 | * pbr_: Set up to use Python Build Reasonableness 9 | * hacking_: Enforces the OpenStack Hacking Guidelines 10 | * stestr_: Runs tests using stestr 11 | * OpenStack-Infra_: Ready for OpenStack Continuous Integration testing 12 | * Tox_ testing: Setup to easily test for Python 3.7 13 | * Sphinx_ docs: Documentation ready for generation and publication 14 | 15 | Usage 16 | ----- 17 | 18 | Install cookiecutter:: 19 | 20 | pip install cookiecutter 21 | 22 | Generate a Python package project:: 23 | 24 | cookiecutter https://opendev.org/openstack/cookiecutter.git 25 | 26 | OpenStack projects require a working git repo for pbr to work, on newer 27 | versions of cookiecutter (>= 0.7.0 released 2013-11-09) this initial commit will 28 | be done automatically. Otherwise you will need to init a repo and commit to it 29 | before doing anything else:: 30 | 31 | cd $repo_name 32 | git init 33 | git add . 34 | git commit -a 35 | 36 | Then: 37 | 38 | * Add the project to the OpenStack Infrastructure 39 | 40 | 41 | .. _pbr: https://docs.openstack.org/pbr/latest/ 42 | .. _OpenStack-Infra: https://docs.openstack.org/infra/system-config 43 | .. _stestr: https://stestr.readthedocs.io/ 44 | .. _Tox: https://tox.readthedocs.io/en/latest/ 45 | .. _Sphinx: https://www.sphinx-doc.org/en/master/ 46 | .. _hacking: https://opendev.org/openstack/hacking/ 47 | -------------------------------------------------------------------------------- /cookiecutter.json: -------------------------------------------------------------------------------- 1 | { 2 | "module_name": "replace with the name of the python module", 3 | "service": "replace with the service it implements", 4 | "repo_group": "openstack", 5 | "repo_name": "replace with the name for the git repo", 6 | "bug_tracker": ["Launchpad", "Storyboard"], 7 | "bug_project": "replace with the name of the project on Launchpad or the ID from Storyboard", 8 | "project_short_description": "OpenStack Boilerplate contains all the boilerplate you need to create an OpenStack package." 9 | } 10 | -------------------------------------------------------------------------------- /hooks/post_gen_project.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | git init 4 | git add . 5 | git commit -a -m "Initial Cookiecutter Commit." 6 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-python27-support-87786dbabd832d89.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for Python 2.7 has been dropped. The minimum version of Python now 5 | supported is Python 3.6. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = {{cookiecutter.module_name}} 4 | 5 | [report] 6 | ignore_errors = True 7 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/.gitignore: -------------------------------------------------------------------------------- 1 | # Add patterns in here to exclude files created by tools integrated with this 2 | # repository, such as test frameworks from the project's recommended workflow, 3 | # rendered documentation and package builds. 4 | # 5 | # Don't add patterns to exclude files created by preferred personal tools 6 | # (editors, IDEs, your operating system itself even). These should instead be 7 | # maintained outside the repository, for example in a ~/.gitignore file added 8 | # with: 9 | # 10 | # git config --global core.excludesfile '~/.gitignore' 11 | 12 | # Bytecompiled Python 13 | *.py[cod] 14 | 15 | # C extensions 16 | *.so 17 | 18 | # Packages 19 | *.egg* 20 | *.egg-info 21 | dist 22 | build 23 | eggs 24 | parts 25 | bin 26 | var 27 | sdist 28 | develop-eggs 29 | .installed.cfg 30 | lib 31 | lib64 32 | 33 | # Installer logs 34 | pip-log.txt 35 | 36 | # Unit test / coverage reports 37 | cover/ 38 | .coverage* 39 | !.coveragerc 40 | .tox 41 | nosetests.xml 42 | .testrepository 43 | .stestr 44 | .venv 45 | 46 | # Translations 47 | *.mo 48 | 49 | # Complexity 50 | output/*.html 51 | output/*/index.html 52 | 53 | # Sphinx 54 | doc/build 55 | 56 | # pbr generates these 57 | AUTHORS 58 | ChangeLog 59 | 60 | # Files created by releasenotes build 61 | releasenotes/build 62 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project={{cookiecutter.repo_group}}/{{cookiecutter.repo_name}}.git 5 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/.mailmap: -------------------------------------------------------------------------------- 1 | # Format is: 2 | # 3 | # 4 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/.stestr.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | test_path=./{{cookiecutter.module_name}}/tests 3 | top_dir=./ 4 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/{{ cookiecutter.repo_group }}/{{ cookiecutter.repo_name }} 4 | 5 | Pull requests submitted through GitHub are not monitored. 6 | 7 | To start contributing to OpenStack, follow the steps in the contribution guide 8 | to set up and use Gerrit: 9 | 10 | https://docs.openstack.org/contributors/code-and-documentation/quick-start.html 11 | 12 | Bugs should be filed on {{ cookiecutter.bug_tracker }}: 13 | {% if cookiecutter.bug_tracker == 'Launchpad' %} 14 | https://bugs.launchpad.net/{{ cookiecutter.bug_project }} 15 | {% elif cookiecutter.bug_tracker == 'Storyboard' %} 16 | https://storyboard.openstack.org/#!/project/{{ cookiecutter.bug_project }} 17 | {% endif %} 18 | For more specific information about contributing to this repository, see the 19 | {{ cookiecutter.service }} contributor guide: 20 | 21 | https://docs.openstack.org/{{ cookiecutter.repo_name }}/latest/contributor/contributing.html 22 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/HACKING.rst: -------------------------------------------------------------------------------- 1 | {{ cookiecutter.repo_name }} Style Commandments 2 | =============================================== 3 | 4 | Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ 5 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/README.rst: -------------------------------------------------------------------------------- 1 | =============================== 2 | {{ cookiecutter.repo_name }} 3 | =============================== 4 | 5 | {{ cookiecutter.project_short_description}} 6 | 7 | Please fill here a long description which must be at least 3 lines wrapped on 8 | 80 cols, so that distribution package maintainers can use it in their packages. 9 | Note that this is a hard requirement. 10 | 11 | * Free software: Apache license 12 | * Documentation: https://docs.openstack.org/{{ cookiecutter.repo_name }}/latest 13 | * Source: https://opendev.org/{{cookiecutter.repo_group}}/{{ cookiecutter.repo_name }} 14 | {%- if cookiecutter.bug_tracker == 'Launchpad' %} 15 | * Bugs: https://bugs.launchpad.net/{{ cookiecutter.bug_project }} 16 | {%- elif cookiecutter.bug_tracker == 'Storyboard' %} 17 | * Bugs: https://storyboard.openstack.org/#!/project/{{ cookiecutter.bug_project }} 18 | {%- endif %} 19 | 20 | Features 21 | -------- 22 | 23 | * TODO 24 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx>=2.0.0,!=2.1.0 # BSD 2 | openstackdocstheme>=2.2.1 # Apache-2.0 3 | # releasenotes 4 | reno>=3.1.0 # Apache-2.0 5 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/admin/index.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | Administrators guide 3 | ==================== 4 | 5 | Administrators guide of {{ cookiecutter.repo_name }}. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/cli/index.rst: -------------------------------------------------------------------------------- 1 | ================================ 2 | Command line interface reference 3 | ================================ 4 | 5 | CLI reference of {{ cookiecutter.repo_name }}. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Licensed under the Apache License, Version 2.0 (the "License"); 3 | # you may not use this file except in compliance with the License. 4 | # You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, 10 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 11 | # implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | import os 16 | import sys 17 | 18 | sys.path.insert(0, os.path.abspath('../..')) 19 | # -- General configuration ---------------------------------------------------- 20 | 21 | # Add any Sphinx extension module names here, as strings. They can be 22 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 23 | extensions = [ 24 | 'sphinx.ext.autodoc', 25 | 'openstackdocstheme', 26 | #'sphinx.ext.intersphinx', 27 | ] 28 | 29 | # autodoc generation is a bit aggressive and a nuisance when doing heavy 30 | # text edit cycles. 31 | # execute "export SPHINX_DEBUG=1" in your terminal to disable 32 | 33 | # The suffix of source filenames. 34 | source_suffix = '.rst' 35 | 36 | # The master toctree document. 37 | master_doc = 'index' 38 | 39 | # General information about the project. 40 | project = '{{cookiecutter.repo_name}}' 41 | copyright = '2022, OpenStack Developers' 42 | 43 | # openstackdocstheme options 44 | openstackdocs_repo_name = '{{cookiecutter.repo_group}}/{{cookiecutter.repo_name}}' 45 | openstackdocs_bug_project = '{{cookiecutter.bug_project}}' 46 | openstackdocs_bug_tag = '' 47 | 48 | # If true, '()' will be appended to :func: etc. cross-reference text. 49 | add_function_parentheses = True 50 | 51 | # If true, the current module name will be prepended to all description 52 | # unit titles (such as .. function::). 53 | add_module_names = True 54 | 55 | # The name of the Pygments (syntax highlighting) style to use. 56 | pygments_style = 'native' 57 | 58 | # -- Options for HTML output -------------------------------------------------- 59 | 60 | # The theme to use for HTML and HTML Help pages. Major themes that come with 61 | # Sphinx are currently 'default' and 'sphinxdoc'. 62 | # html_theme_path = ["."] 63 | # html_theme = '_theme' 64 | # html_static_path = ['static'] 65 | html_theme = 'openstackdocs' 66 | 67 | # Output file base name for HTML help builder. 68 | htmlhelp_basename = '%sdoc' % project 69 | 70 | # Grouping the document tree into LaTeX files. List of tuples 71 | # (source start file, target name, title, author, documentclass 72 | # [howto/manual]). 73 | latex_documents = [ 74 | ('index', 75 | '%s.tex' % project, 76 | '%s Documentation' % project, 77 | 'OpenStack Developers', 'manual'), 78 | ] 79 | 80 | # Example configuration for intersphinx: refer to the Python standard library. 81 | #intersphinx_mapping = {'http://docs.python.org/': None} 82 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/configuration/index.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Configuration 3 | ============= 4 | 5 | Configuration of {{ cookiecutter.repo_name }}. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/contributor/contributing.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | So You Want to Contribute... 3 | ============================ 4 | 5 | For general information on contributing to OpenStack, please check out the 6 | `contributor guide `_ to get started. 7 | It covers all the basics that are common to all OpenStack projects: the accounts 8 | you need, the basics of interacting with our Gerrit review system, how we 9 | communicate as a community, etc. 10 | 11 | Below will cover the more project specific information you need to get started 12 | with {{cookiecutter.service}}. 13 | 14 | Communication 15 | ~~~~~~~~~~~~~ 16 | .. This would be a good place to put the channel you chat in as a project; when/ 17 | where your meeting is, the tags you prepend to your ML threads, etc. 18 | 19 | Contacting the Core Team 20 | ~~~~~~~~~~~~~~~~~~~~~~~~ 21 | .. This section should list the core team, their irc nicks, emails, timezones 22 | etc. If all this info is maintained elsewhere (i.e. a wiki), you can link to 23 | that instead of enumerating everyone here. 24 | 25 | New Feature Planning 26 | ~~~~~~~~~~~~~~~~~~~~ 27 | .. This section is for talking about the process to get a new feature in. Some 28 | projects use blueprints, some want specs, some want both! Some projects 29 | stick to a strict schedule when selecting what new features will be reviewed 30 | for a release. 31 | 32 | Task Tracking 33 | ~~~~~~~~~~~~~ 34 | .. This section is about where you track tasks- launchpad? storyboard? is there 35 | more than one launchpad project? what's the name of the project group in 36 | storyboard? 37 | 38 | We track our tasks in {{ cookiecutter.bug_tracker }} 39 | {% if cookiecutter.bug_tracker == 'Launchpad' %} 40 | https://bugs.launchpad.net/{{ cookiecutter.bug_project }} 41 | {% elif cookiecutter.bug_tracker == 'Storyboard' %} 42 | https://storyboard.openstack.org/#!/project/{{ cookiecutter.bug_project }} 43 | {% endif %} 44 | If you're looking for some smaller, easier work item to pick up and get started 45 | on, search for the 'low-hanging-fruit' tag. 46 | 47 | .. NOTE: If your tag is not 'low-hanging-fruit' please change the text above. 48 | 49 | Reporting a Bug 50 | ~~~~~~~~~~~~~~~ 51 | .. Pretty self explanatory section, link directly to where people should report 52 | bugs for your project. 53 | 54 | You found an issue and want to make sure we are aware of it? You can do so on 55 | {% if cookiecutter.bug_tracker == 'Launchpad' -%} 56 | `Launchpad 57 | `_. 58 | {%- elif cookiecutter.bug_tracker == 'Storyboard' -%} 59 | `Storyboard 60 | `_. 61 | {%- endif %} 62 | 63 | Getting Your Patch Merged 64 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 65 | .. This section should have info about what it takes to get something merged. Do 66 | you require one or two +2's before +W? Do some of your repos require unit 67 | test changes with all patches? etc. 68 | 69 | Project Team Lead Duties 70 | ~~~~~~~~~~~~~~~~~~~~~~~~ 71 | .. this section is where you can put PTL specific duties not already listed in 72 | the common PTL guide (linked below), or if you already have them written 73 | up elsewhere you can link to that doc here. 74 | 75 | All common PTL duties are enumerated in the `PTL guide 76 | `_. 77 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/contributor/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Contributor Documentation 3 | =========================== 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | 8 | contributing 9 | 10 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/index.rst: -------------------------------------------------------------------------------- 1 | {%- macro set_header_markup(header_text_length) -%} 2 | {%- set module_name_length = cookiecutter.module_name|length -%} 3 | {%- for _ in range(0, module_name_length + header_text_length) -%}={%- endfor -%} 4 | {%- endmacro -%} 5 | {%- macro set_header(header_text) -%} 6 | {{ set_header_markup(header_text|length) }} 7 | {{header_text}}{{cookiecutter.module_name}} 8 | {{ set_header_markup(header_text|length) }} 9 | {%- endmacro -%} 10 | 11 | .. {{ cookiecutter.repo_name }} documentation master file, created by 12 | sphinx-quickstart on Tue Jul 9 22:26:36 2013. 13 | You can adapt this file completely to your liking, but it should at least 14 | contain the root `toctree` directive. 15 | 16 | {{ set_header("Welcome to the documentation of ") }} 17 | 18 | Contents: 19 | 20 | .. toctree:: 21 | :maxdepth: 2 22 | 23 | readme 24 | install/index 25 | library/index 26 | contributor/index 27 | configuration/index 28 | cli/index 29 | user/index 30 | admin/index 31 | reference/index 32 | 33 | Indices and tables 34 | ================== 35 | 36 | * :ref:`genindex` 37 | * :ref:`modindex` 38 | * :ref:`search` 39 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/common_configure.rst: -------------------------------------------------------------------------------- 1 | 2. Edit the ``/etc/{{cookiecutter.module_name}}/{{cookiecutter.module_name}}.conf`` file and complete the following 2 | actions: 3 | 4 | * In the ``[database]`` section, configure database access: 5 | 6 | .. code-block:: ini 7 | 8 | [database] 9 | ... 10 | connection = mysql+pymysql://{{cookiecutter.module_name}}:{{cookiecutter.module_name|upper}}_DBPASS@controller/{{cookiecutter.module_name}} 11 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/common_prerequisites.rst: -------------------------------------------------------------------------------- 1 | Prerequisites 2 | ------------- 3 | 4 | Before you install and configure the {{cookiecutter.service}} service, 5 | you must create a database, service credentials, and API endpoints. 6 | 7 | #. To create the database, complete these steps: 8 | 9 | * Use the database access client to connect to the database 10 | server as the ``root`` user: 11 | 12 | .. code-block:: console 13 | 14 | $ mysql -u root -p 15 | 16 | * Create the ``{{cookiecutter.module_name}}`` database: 17 | 18 | .. code-block:: none 19 | 20 | CREATE DATABASE {{cookiecutter.module_name}}; 21 | 22 | * Grant proper access to the ``{{cookiecutter.module_name}}`` database: 23 | 24 | .. code-block:: none 25 | 26 | GRANT ALL PRIVILEGES ON {{cookiecutter.module_name}}.* TO '{{cookiecutter.module_name}}'@'localhost' \ 27 | IDENTIFIED BY '{{cookiecutter.module_name|upper}}_DBPASS'; 28 | GRANT ALL PRIVILEGES ON {{cookiecutter.module_name}}.* TO '{{cookiecutter.module_name}}'@'%' \ 29 | IDENTIFIED BY '{{cookiecutter.module_name|upper}}_DBPASS'; 30 | 31 | Replace ``{{cookiecutter.module_name|upper}}_DBPASS`` with a suitable password. 32 | 33 | * Exit the database access client. 34 | 35 | .. code-block:: none 36 | 37 | exit; 38 | 39 | #. Source the ``admin`` credentials to gain access to 40 | admin-only CLI commands: 41 | 42 | .. code-block:: console 43 | 44 | $ . admin-openrc 45 | 46 | #. To create the service credentials, complete these steps: 47 | 48 | * Create the ``{{cookiecutter.module_name}}`` user: 49 | 50 | .. code-block:: console 51 | 52 | $ openstack user create --domain default --password-prompt {{cookiecutter.module_name}} 53 | 54 | * Add the ``admin`` role to the ``{{cookiecutter.module_name}}`` user: 55 | 56 | .. code-block:: console 57 | 58 | $ openstack role add --project service --user {{cookiecutter.module_name}} admin 59 | 60 | * Create the {{cookiecutter.module_name}} service entities: 61 | 62 | .. code-block:: console 63 | 64 | $ openstack service create --name {{cookiecutter.module_name}} --description "{{cookiecutter.service}}" {{cookiecutter.service|lower}} 65 | 66 | #. Create the {{cookiecutter.service}} service API endpoints: 67 | 68 | .. code-block:: console 69 | 70 | $ openstack endpoint create --region RegionOne \ 71 | {{cookiecutter.service|lower}} public http://controller:XXXX/vY/%\(tenant_id\)s 72 | $ openstack endpoint create --region RegionOne \ 73 | {{cookiecutter.service|lower}} internal http://controller:XXXX/vY/%\(tenant_id\)s 74 | $ openstack endpoint create --region RegionOne \ 75 | {{cookiecutter.service|lower}} admin http://controller:XXXX/vY/%\(tenant_id\)s 76 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/get_started.rst: -------------------------------------------------------------------------------- 1 | {%- macro set_header_markup(header_text_length) -%} 2 | {%- set servicelength = cookiecutter.service|length -%} 3 | {%- for _ in range(0, servicelength + header_text_length) -%}={%- endfor -%} 4 | {%- endmacro -%} 5 | {%- macro set_header(header_text) -%} 6 | {{ set_header_markup(header_text|length) }} 7 | {{cookiecutter.service}}{{header_text}} 8 | {{ set_header_markup(header_text|length) }} 9 | {%- endmacro -%} 10 | {{ set_header(" service overview") }} 11 | The {{cookiecutter.service}} service provides... 12 | 13 | The {{cookiecutter.service}} service consists of the following components: 14 | 15 | ``{{cookiecutter.module_name}}-api`` service 16 | Accepts and responds to end user compute API calls... 17 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/index.rst: -------------------------------------------------------------------------------- 1 | {%- macro set_header_markup(header_text_length) -%} 2 | {%- set servicelength = cookiecutter.service|length -%} 3 | {%- for _ in range(0, servicelength + header_text_length) -%}={%- endfor -%} 4 | {%- endmacro -%} 5 | {%- macro set_header(header_text) -%} 6 | {{ set_header_markup(header_text|length) }} 7 | {{cookiecutter.service}}{{header_text}} 8 | {{ set_header_markup(header_text|length) }} 9 | {%- endmacro -%} 10 | {{ set_header(" service installation guide") }} 11 | 12 | .. toctree:: 13 | :maxdepth: 2 14 | 15 | get_started.rst 16 | install.rst 17 | verify.rst 18 | next-steps.rst 19 | 20 | The {{cookiecutter.service}} service ({{cookiecutter.module_name}}) provides... 21 | 22 | This chapter assumes a working setup of OpenStack following the 23 | `OpenStack Installation Tutorial 24 | `_. 25 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/install-obs.rst: -------------------------------------------------------------------------------- 1 | .. _install-obs: 2 | 3 | 4 | Install and configure for openSUSE and SUSE Linux Enterprise 5 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 | 7 | This section describes how to install and configure the {{cookiecutter.service}} service 8 | for openSUSE Leap 42.1 and SUSE Linux Enterprise Server 12 SP1. 9 | 10 | .. include:: common_prerequisites.rst 11 | 12 | Install and configure components 13 | -------------------------------- 14 | 15 | #. Install the packages: 16 | 17 | .. code-block:: console 18 | 19 | # zypper --quiet --non-interactive install 20 | 21 | .. include:: common_configure.rst 22 | 23 | 24 | Finalize installation 25 | --------------------- 26 | 27 | Start the {{cookiecutter.service}} services and configure them to start when 28 | the system boots: 29 | 30 | .. code-block:: console 31 | 32 | # systemctl enable openstack-{{cookiecutter.module_name}}-api.service 33 | 34 | # systemctl start openstack-{{cookiecutter.module_name}}-api.service 35 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/install-rdo.rst: -------------------------------------------------------------------------------- 1 | .. _install-rdo: 2 | 3 | Install and configure for Red Hat Enterprise Linux and CentOS 4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | 7 | This section describes how to install and configure the {{cookiecutter.service}} service 8 | for Red Hat Enterprise Linux 7 and CentOS 7. 9 | 10 | .. include:: common_prerequisites.rst 11 | 12 | Install and configure components 13 | -------------------------------- 14 | 15 | #. Install the packages: 16 | 17 | .. code-block:: console 18 | 19 | # yum install 20 | 21 | .. include:: common_configure.rst 22 | 23 | Finalize installation 24 | --------------------- 25 | 26 | Start the {{cookiecutter.service}} services and configure them to start when 27 | the system boots: 28 | 29 | .. code-block:: console 30 | 31 | # systemctl enable openstack-{{cookiecutter.module_name}}-api.service 32 | 33 | # systemctl start openstack-{{cookiecutter.module_name}}-api.service 34 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/install-ubuntu.rst: -------------------------------------------------------------------------------- 1 | .. _install-ubuntu: 2 | 3 | Install and configure for Ubuntu 4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | This section describes how to install and configure the {{cookiecutter.service}} 7 | service for Ubuntu 14.04 (LTS). 8 | 9 | .. include:: common_prerequisites.rst 10 | 11 | Install and configure components 12 | -------------------------------- 13 | 14 | #. Install the packages: 15 | 16 | .. code-block:: console 17 | 18 | # apt-get update 19 | 20 | # apt-get install 21 | 22 | .. include:: common_configure.rst 23 | 24 | Finalize installation 25 | --------------------- 26 | 27 | Restart the {{cookiecutter.service}} services: 28 | 29 | .. code-block:: console 30 | 31 | # service openstack-{{cookiecutter.module_name}}-api restart 32 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/install.rst: -------------------------------------------------------------------------------- 1 | .. _install: 2 | 3 | Install and configure 4 | ~~~~~~~~~~~~~~~~~~~~~ 5 | 6 | This section describes how to install and configure the 7 | {{cookiecutter.service}} service, code-named {{cookiecutter.module_name}}, on the controller node. 8 | 9 | This section assumes that you already have a working OpenStack 10 | environment with at least the following components installed: 11 | .. (add the appropriate services here and further notes) 12 | 13 | Note that installation and configuration vary by distribution. 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | 18 | install-obs.rst 19 | install-rdo.rst 20 | install-ubuntu.rst 21 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/next-steps.rst: -------------------------------------------------------------------------------- 1 | .. _next-steps: 2 | 3 | Next steps 4 | ~~~~~~~~~~ 5 | 6 | Your OpenStack environment now includes the {{cookiecutter.module_name}} service. 7 | 8 | To add additional services, see 9 | https://docs.openstack.org/project-install-guide/ocata/. 10 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/install/verify.rst: -------------------------------------------------------------------------------- 1 | .. _verify: 2 | 3 | Verify operation 4 | ~~~~~~~~~~~~~~~~ 5 | 6 | Verify operation of the {{cookiecutter.service}} service. 7 | 8 | .. note:: 9 | 10 | Perform these commands on the controller node. 11 | 12 | #. Source the ``admin`` project credentials to gain access to 13 | admin-only CLI commands: 14 | 15 | .. code-block:: console 16 | 17 | $ . admin-openrc 18 | 19 | #. List service components to verify successful launch and registration 20 | of each process: 21 | 22 | .. code-block:: console 23 | 24 | $ openstack {{cookiecutter.service|lower}} service list 25 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/library/index.rst: -------------------------------------------------------------------------------- 1 | ======== 2 | Usage 3 | ======== 4 | 5 | To use {{ cookiecutter.repo_name }} in a project:: 6 | 7 | import {{ cookiecutter.module_name }} 8 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/readme.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../../README.rst 2 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/reference/index.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | References 3 | ========== 4 | 5 | References of {{ cookiecutter.repo_name }}. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/doc/source/user/index.rst: -------------------------------------------------------------------------------- 1 | =========== 2 | Users guide 3 | =========== 4 | 5 | Users guide of {{ cookiecutter.repo_name }}. 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/lower-constraints.txt: -------------------------------------------------------------------------------- 1 | # You need to rewrite this file with the project's lower constraints. 2 | # This can be done using the following script: 3 | # 4 | # https://opendev.org/openstack/requirements/src/branch/master/tools/fix-lower-constraints.py 5 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/notes/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/cookiecutter/2e5dc6ddb15c8424539e137664689391b2bdc3e9/{{cookiecutter.repo_name}}/releasenotes/notes/.placeholder -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/cookiecutter/2e5dc6ddb15c8424539e137664689391b2bdc3e9/{{cookiecutter.repo_name}}/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/source/_templates/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/cookiecutter/2e5dc6ddb15c8424539e137664689391b2bdc3e9/{{cookiecutter.repo_name}}/releasenotes/source/_templates/.placeholder -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/source/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Licensed under the Apache License, Version 2.0 (the "License"); 3 | # you may not use this file except in compliance with the License. 4 | # You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, 10 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 11 | # implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # This file is execfile()d with the current directory set to its 16 | # containing dir. 17 | # 18 | # Note that not all possible configuration values are present in this 19 | # autogenerated file. 20 | # 21 | # All configuration values have a default; values that are commented out 22 | # serve to show the default. 23 | 24 | # If extensions (or modules to document with autodoc) are in another directory, 25 | # add these directories to sys.path here. If the directory is relative to the 26 | # documentation root, use os.path.abspath to make it absolute, like shown here. 27 | # sys.path.insert(0, os.path.abspath('.')) 28 | 29 | # -- General configuration ------------------------------------------------ 30 | 31 | # If your documentation needs a minimal Sphinx version, state it here. 32 | # needs_sphinx = '1.0' 33 | 34 | # Add any Sphinx extension module names here, as strings. They can be 35 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 36 | # ones. 37 | extensions = [ 38 | 'openstackdocstheme', 39 | 'reno.sphinxext', 40 | ] 41 | 42 | # Add any paths that contain templates here, relative to this directory. 43 | templates_path = ['_templates'] 44 | 45 | # The suffix of source filenames. 46 | source_suffix = '.rst' 47 | 48 | # The encoding of source files. 49 | # source_encoding = 'utf-8-sig' 50 | 51 | # The master toctree document. 52 | master_doc = 'index' 53 | 54 | # General information about the project. 55 | project = '{{cookiecutter.module_name}} Release Notes' 56 | copyright = '2022, OpenStack Developers' 57 | 58 | # openstackdocstheme options 59 | openstackdocs_repo_name = '{{cookiecutter.repo_group}}/{{cookiecutter.repo_name}}' 60 | openstackdocs_bug_project = '{{cookiecutter.bug_project}}' 61 | openstackdocs_bug_tag = '' 62 | openstackdocs_auto_name = 'False' 63 | 64 | # The version info for the project you're documenting, acts as replacement for 65 | # |version| and |release|, also used in various other places throughout the 66 | # built documents. 67 | # 68 | # The short X.Y version. 69 | # The full version, including alpha/beta/rc tags. 70 | release = '' 71 | # The short X.Y version. 72 | version = '' 73 | 74 | # The language for content autogenerated by Sphinx. Refer to documentation 75 | # for a list of supported languages. 76 | # language = None 77 | 78 | # There are two options for replacing |today|: either, you set today to some 79 | # non-false value, then it is used: 80 | # today = '' 81 | # Else, today_fmt is used as the format for a strftime call. 82 | # today_fmt = '%B %d, %Y' 83 | 84 | # List of patterns, relative to source directory, that match files and 85 | # directories to ignore when looking for source files. 86 | exclude_patterns = [] 87 | 88 | # The reST default role (used for this markup: `text`) to use for all 89 | # documents. 90 | # default_role = None 91 | 92 | # If true, '()' will be appended to :func: etc. cross-reference text. 93 | # add_function_parentheses = True 94 | 95 | # If true, the current module name will be prepended to all description 96 | # unit titles (such as .. function::). 97 | # add_module_names = True 98 | 99 | # If true, sectionauthor and moduleauthor directives will be shown in the 100 | # output. They are ignored by default. 101 | # show_authors = False 102 | 103 | # The name of the Pygments (syntax highlighting) style to use. 104 | pygments_style = 'native' 105 | 106 | # A list of ignored prefixes for module index sorting. 107 | # modindex_common_prefix = [] 108 | 109 | # If true, keep warnings as "system message" paragraphs in the built documents. 110 | # keep_warnings = False 111 | 112 | 113 | # -- Options for HTML output ---------------------------------------------- 114 | 115 | # The theme to use for HTML and HTML Help pages. See the documentation for 116 | # a list of builtin themes. 117 | html_theme = 'openstackdocs' 118 | 119 | # Theme options are theme-specific and customize the look and feel of a theme 120 | # further. For a list of options available for each theme, see the 121 | # documentation. 122 | # html_theme_options = {} 123 | 124 | # Add any paths that contain custom themes here, relative to this directory. 125 | # html_theme_path = [] 126 | 127 | # The name for this set of Sphinx documents. If None, it defaults to 128 | # " v documentation". 129 | # html_title = None 130 | 131 | # A shorter title for the navigation bar. Default is the same as html_title. 132 | # html_short_title = None 133 | 134 | # The name of an image file (relative to this directory) to place at the top 135 | # of the sidebar. 136 | # html_logo = None 137 | 138 | # The name of an image file (within the static path) to use as favicon of the 139 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 140 | # pixels large. 141 | # html_favicon = None 142 | 143 | # Add any paths that contain custom static files (such as style sheets) here, 144 | # relative to this directory. They are copied after the builtin static files, 145 | # so a file named "default.css" will overwrite the builtin "default.css". 146 | html_static_path = ['_static'] 147 | 148 | # Add any extra paths that contain custom files (such as robots.txt or 149 | # .htaccess) here, relative to this directory. These files are copied 150 | # directly to the root of the documentation. 151 | # html_extra_path = [] 152 | 153 | # If true, SmartyPants will be used to convert quotes and dashes to 154 | # typographically correct entities. 155 | # html_use_smartypants = True 156 | 157 | # Custom sidebar templates, maps document names to template names. 158 | # html_sidebars = {} 159 | 160 | # Additional templates that should be rendered to pages, maps page names to 161 | # template names. 162 | # html_additional_pages = {} 163 | 164 | # If false, no module index is generated. 165 | # html_domain_indices = True 166 | 167 | # If false, no index is generated. 168 | # html_use_index = True 169 | 170 | # If true, the index is split into individual pages for each letter. 171 | # html_split_index = False 172 | 173 | # If true, links to the reST sources are added to the pages. 174 | # html_show_sourcelink = True 175 | 176 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 177 | # html_show_sphinx = True 178 | 179 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 180 | # html_show_copyright = True 181 | 182 | # If true, an OpenSearch description file will be output, and all pages will 183 | # contain a tag referring to it. The value of this option must be the 184 | # base URL from which the finished HTML is served. 185 | # html_use_opensearch = '' 186 | 187 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 188 | # html_file_suffix = None 189 | 190 | # Output file base name for HTML help builder. 191 | htmlhelp_basename = '{{cookiecutter.module_name}}ReleaseNotesdoc' 192 | 193 | 194 | # -- Options for LaTeX output --------------------------------------------- 195 | 196 | latex_elements = { 197 | # The paper size ('letterpaper' or 'a4paper'). 198 | # 'papersize': 'letterpaper', 199 | 200 | # The font size ('10pt', '11pt' or '12pt'). 201 | # 'pointsize': '10pt', 202 | 203 | # Additional stuff for the LaTeX preamble. 204 | # 'preamble': '', 205 | } 206 | 207 | # Grouping the document tree into LaTeX files. List of tuples 208 | # (source start file, target name, title, 209 | # author, documentclass [howto, manual, or own class]). 210 | latex_documents = [ 211 | ('index', '{{cookiecutter.module_name}}ReleaseNotes.tex', 212 | '{{cookiecutter.module_name}} Release Notes Documentation', 213 | 'OpenStack Foundation', 'manual'), 214 | ] 215 | 216 | # The name of an image file (relative to this directory) to place at the top of 217 | # the title page. 218 | # latex_logo = None 219 | 220 | # For "manual" documents, if this is true, then toplevel headings are parts, 221 | # not chapters. 222 | # latex_use_parts = False 223 | 224 | # If true, show page references after internal links. 225 | # latex_show_pagerefs = False 226 | 227 | # If true, show URL addresses after external links. 228 | # latex_show_urls = False 229 | 230 | # Documents to append as an appendix to all manuals. 231 | # latex_appendices = [] 232 | 233 | # If false, no module index is generated. 234 | # latex_domain_indices = True 235 | 236 | 237 | # -- Options for manual page output --------------------------------------- 238 | 239 | # One entry per manual page. List of tuples 240 | # (source start file, name, description, authors, manual section). 241 | man_pages = [ 242 | ('index', '{{cookiecutter.module_name}}rereleasenotes', 243 | '{{cookiecutter.module_name}} Release Notes Documentation', 244 | ['OpenStack Foundation'], 1) 245 | ] 246 | 247 | # If true, show URL addresses after external links. 248 | # man_show_urls = False 249 | 250 | 251 | # -- Options for Texinfo output ------------------------------------------- 252 | 253 | # Grouping the document tree into Texinfo files. List of tuples 254 | # (source start file, target name, title, author, 255 | # dir menu entry, description, category) 256 | texinfo_documents = [ 257 | ('index', '{{cookiecutter.module_name}} ReleaseNotes', 258 | '{{cookiecutter.module_name}} Release Notes Documentation', 259 | 'OpenStack Foundation', '{{cookiecutter.module_name}}ReleaseNotes', 260 | 'One line description of project.', 261 | 'Miscellaneous'), 262 | ] 263 | 264 | # Documents to append as an appendix to all manuals. 265 | # texinfo_appendices = [] 266 | 267 | # If false, no module index is generated. 268 | # texinfo_domain_indices = True 269 | 270 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 271 | # texinfo_show_urls = 'footnote' 272 | 273 | # If true, do not generate a @detailmenu in the "Top" node's menu. 274 | # texinfo_no_detailmenu = False 275 | 276 | # -- Options for Internationalization output ------------------------------ 277 | locale_dirs = ['locale/'] 278 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ============================================ 2 | {{cookiecutter.module_name}} Release Notes 3 | ============================================ 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | unreleased 9 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Current Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | 5 | pbr>=2.0 # Apache-2.0 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = {{ cookiecutter.repo_name }} 3 | summary = {{ cookiecutter.project_short_description }} 4 | description-file = 5 | README.rst 6 | author = OpenStack 7 | author-email = openstack-discuss@lists.openstack.org 8 | home-page = https://www.openstack.org/ 9 | python-requires = >=3.6 10 | classifier = 11 | Environment :: OpenStack 12 | Intended Audience :: Information Technology 13 | Intended Audience :: System Administrators 14 | License :: OSI Approved :: Apache Software License 15 | Operating System :: POSIX :: Linux 16 | Programming Language :: Python 17 | Programming Language :: Python :: 3 18 | Programming Language :: Python :: 3.7 19 | Programming Language :: Python :: 3.8 20 | Programming Language :: Python :: 3.9 21 | Programming Language :: Python :: 3 :: Only 22 | Programming Language :: Python :: Implementation :: CPython 23 | 24 | [files] 25 | packages = 26 | {{ cookiecutter.module_name }} 27 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/setup.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT 17 | import setuptools 18 | 19 | setuptools.setup( 20 | setup_requires=['pbr'], 21 | pbr=True) 22 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/test-requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | 5 | hacking>=3.0,<3.1 # Apache-2.0 6 | 7 | coverage>=4.0,!=4.4 # Apache-2.0 8 | python-subunit>=0.0.18 # Apache-2.0/BSD 9 | oslotest>=1.10.0 # Apache-2.0 10 | stestr>=1.0.0 # Apache-2.0 11 | testtools>=1.4.0 # MIT 12 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 3.2.0 3 | envlist = py39,pep8 4 | skipsdist = True 5 | ignore_basepython_conflict = true 6 | 7 | 8 | [testenv] 9 | basepython = python3 10 | usedevelop = True 11 | setenv = 12 | PYTHONWARNINGS=default::DeprecationWarning 13 | OS_STDOUT_CAPTURE=1 14 | OS_STDERR_CAPTURE=1 15 | OS_TEST_TIMEOUT=60 16 | deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} 17 | -r{toxinidir}/test-requirements.txt 18 | commands = stestr run {posargs} 19 | 20 | [testenv:lower-constraints] 21 | deps = -c{toxinidir}/lower-constraints.txt 22 | -r{toxinidir}/test-requirements.txt 23 | 24 | [testenv:pep8] 25 | commands = flake8 {posargs} 26 | 27 | [testenv:venv] 28 | commands = {posargs} 29 | 30 | [testenv:cover] 31 | setenv = 32 | VIRTUAL_ENV={envdir} 33 | PYTHON=coverage run --source {{ cookiecutter.module_name }} --parallel-mode 34 | commands = 35 | stestr run {posargs} 36 | coverage combine 37 | coverage html -d cover 38 | coverage xml -o cover/coverage.xml 39 | 40 | [testenv:docs] 41 | deps = -r{toxinidir}/doc/requirements.txt 42 | commands = sphinx-build -W -b html doc/source doc/build/html 43 | 44 | [testenv:releasenotes] 45 | deps = {[testenv:docs]deps} 46 | commands = 47 | sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html 48 | 49 | [testenv:debug] 50 | commands = oslo_debug_helper {posargs} 51 | 52 | [flake8] 53 | # E123, E125 skipped as they are invalid PEP-8. 54 | 55 | show-source = True 56 | ignore = E123,E125 57 | builtins = _ 58 | exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build 59 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | import pbr.version 16 | 17 | 18 | __version__ = pbr.version.VersionInfo( 19 | '{{cookiecutter.repo_name}}').version_string() 20 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/cookiecutter/2e5dc6ddb15c8424539e137664689391b2bdc3e9/{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/tests/__init__.py -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/tests/base.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Copyright 2010-2011 OpenStack Foundation 4 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | 18 | from oslotest import base 19 | 20 | 21 | class TestCase(base.BaseTestCase): 22 | 23 | """Test case base class for all unit tests.""" 24 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_name}}/{{cookiecutter.module_name}}/tests/test_{{cookiecutter.module_name}}.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | """ 16 | test_{{ cookiecutter.module_name }} 17 | ---------------------------------- 18 | 19 | Tests for `{{ cookiecutter.module_name }}` module. 20 | """ 21 | 22 | from {{ cookiecutter.module_name }}.tests import base 23 | 24 | 25 | class Test{{ cookiecutter.module_name|capitalize }}(base.TestCase): 26 | 27 | def test_something(self): 28 | pass 29 | --------------------------------------------------------------------------------