Doc fragments to plugins (#50172)
* promote doc_fragments into actual plugins change tests hardcoded path to doc fragments avoid sanity in fragments avoid improper testing of doc_fragments also change runner paths fix botmeta updated comment for fragments updated docs
This commit is contained in:
parent
4041f02389
commit
96b3ef5553
106 changed files with 51 additions and 31 deletions
40
.github/BOTMETA.yml
vendored
40
.github/BOTMETA.yml
vendored
|
@ -1025,6 +1025,28 @@ files:
|
||||||
labels:
|
labels:
|
||||||
- windows
|
- windows
|
||||||
###############################
|
###############################
|
||||||
|
# plugins/doc_fragments
|
||||||
|
$plugins/doc_fragments/:
|
||||||
|
support: community
|
||||||
|
$plugins/doc_fragments/__init__.py:
|
||||||
|
support: core
|
||||||
|
$plugins/doc_fragments/aci.py: *aci
|
||||||
|
$plugins/doc_fragments/acme.py:
|
||||||
|
maintainers: resmo felixfontein
|
||||||
|
$plugins/doc_fragments/cloudstack.py:
|
||||||
|
maintainers: $team_cloudstack
|
||||||
|
labels: cloudstack
|
||||||
|
$plugins/doc_fragments/docker.py:
|
||||||
|
support: community
|
||||||
|
maintainers: $team_docker
|
||||||
|
supershipit: felixfontein
|
||||||
|
$plugins/doc_fragments/mso.py: *aci
|
||||||
|
$plugins/doc_fragments/vultr.py:
|
||||||
|
maintainers: $team_vultr
|
||||||
|
labels: cloud
|
||||||
|
$plugins/doc_fragments/xenserver.py:
|
||||||
|
maintainers: bvitnik
|
||||||
|
###############################
|
||||||
# plugins/filter
|
# plugins/filter
|
||||||
$plugins/filter/:
|
$plugins/filter/:
|
||||||
support: community
|
support: community
|
||||||
|
@ -1211,24 +1233,6 @@ files:
|
||||||
keywords:
|
keywords:
|
||||||
- jinja
|
- jinja
|
||||||
- jinja2
|
- jinja2
|
||||||
lib/ansible/utils/module_docs_fragments/:
|
|
||||||
support: community
|
|
||||||
lib/ansible/utils/module_docs_fragments/aci.py: *aci
|
|
||||||
lib/ansible/utils/module_docs_fragments/acme.py:
|
|
||||||
maintainers: resmo felixfontein
|
|
||||||
lib/ansible/utils/module_docs_fragments/docker.py:
|
|
||||||
support: community
|
|
||||||
maintainers: $team_docker
|
|
||||||
supershipit: felixfontein
|
|
||||||
lib/ansible/utils/module_docs_fragments/mso.py: *aci
|
|
||||||
lib/ansible/utils/module_docs_fragments/xenserver.py:
|
|
||||||
maintainers: bvitnik
|
|
||||||
lib/ansible/utils/module_docs_fragments/cloudstack.py:
|
|
||||||
maintainers: $team_cloudstack
|
|
||||||
labels: cloudstack
|
|
||||||
lib/ansible/utils/module_docs_fragments/vultr.py:
|
|
||||||
maintainers: $team_vultr
|
|
||||||
labels: cloud
|
|
||||||
test/sanity/validate-modules:
|
test/sanity/validate-modules:
|
||||||
notified:
|
notified:
|
||||||
- mattclay
|
- mattclay
|
||||||
|
|
|
@ -272,7 +272,14 @@ You can link from your module documentation to other module docs, other resource
|
||||||
Documentation fragments
|
Documentation fragments
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
If you're writing multiple related modules, they may share common documentation, such as authentication details or file mode settings. Rather than duplicate that information in each module's ``DOCUMENTATION`` block, you can save it once as a fragment and use it in each module's documentation. Shared documentation fragments are contained in a ``ModuleDocFragment`` class in `lib/ansible/utils/module_docs_fragments/ <https://github.com/ansible/ansible/tree/devel/lib/ansible/utils/module_docs_fragments>`_. To include a documentation fragment, add ``extends_documentation_fragment: FRAGMENT_NAME`` in your module's documentation.
|
If you're writing multiple related modules, they may share common documentation, such as authentication details or file mode settings. Rather than duplicate that information in each module's ``DOCUMENTATION`` block, you can save it once as a doc_fragment plugin and use it in each module's documentation. In Ansible, shared documentation fragments are contained in a ``ModuleDocFragment`` class in `lib/ansible/plugins/doc_fragments/ <https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/doc_fragments>`_. To include a documentation fragment, add ``extends_documentation_fragment: FRAGMENT_NAME`` in your module's documentation.
|
||||||
|
|
||||||
|
.. _note:
|
||||||
|
* in 2.8 the Ansible directories for doc fragments changed, see documentation of previous versions to find the old locations.
|
||||||
|
|
||||||
|
.. versionadded:: 2.8
|
||||||
|
|
||||||
|
Since version 2.8, you can have user supplied doc_fragments by using a ``doc_fragments`` directory adjacent to play or role, just like any other plugin.
|
||||||
|
|
||||||
For example, all AWS modules should include::
|
For example, all AWS modules should include::
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ Although it's tempting to get straight into coding, there are a few things to be
|
||||||
* Starting with Ansible version 2.7, all new modules must :ref:`support Python 2.7+ and Python 3.5+ <developing_python_3>`. If this is an issue, please contact us (see the "Speak to us" section later in this document to learn how).
|
* Starting with Ansible version 2.7, all new modules must :ref:`support Python 2.7+ and Python 3.5+ <developing_python_3>`. If this is an issue, please contact us (see the "Speak to us" section later in this document to learn how).
|
||||||
* Have a look at the existing modules and how they've been named in the :ref:`all_modules`, especially in the same functional area (such as cloud, networking, databases).
|
* Have a look at the existing modules and how they've been named in the :ref:`all_modules`, especially in the same functional area (such as cloud, networking, databases).
|
||||||
* Shared code can be placed into ``lib/ansible/module_utils/``
|
* Shared code can be placed into ``lib/ansible/module_utils/``
|
||||||
* Shared documentation (for example describing common arguments) can be placed in ``lib/ansible/utils/module_docs_fragments/``.
|
* Shared documentation (for example describing common arguments) can be placed in ``lib/ansible/plugins/doc_fragments/``.
|
||||||
* With great power comes great responsibility: Ansible module maintainers have a duty to help keep modules up to date. As with all successful community projects, module maintainers should keep a watchful eye for reported issues and contributions.
|
* With great power comes great responsibility: Ansible module maintainers have a duty to help keep modules up to date. As with all successful community projects, module maintainers should keep a watchful eye for reported issues and contributions.
|
||||||
* Although not required, unit and/or integration tests are strongly recommended. Unit tests are especially valuable when external resources (such as cloud or network devices) are required. For more information see :doc:`testing` and the `Testing Working Group <https://github.com/ansible/community/blob/master/meetings/README.md>`_.
|
* Although not required, unit and/or integration tests are strongly recommended. Unit tests are especially valuable when external resources (such as cloud or network devices) are required. For more information see :doc:`testing` and the `Testing Working Group <https://github.com/ansible/community/blob/master/meetings/README.md>`_.
|
||||||
* Starting with Ansible 2.4 all :ref:`network_modules` MUST have unit tests.
|
* Starting with Ansible 2.4 all :ref:`network_modules` MUST have unit tests.
|
||||||
|
@ -81,7 +81,7 @@ The first PR is slightly different to the rest because it:
|
||||||
|
|
||||||
* defines the namespace
|
* defines the namespace
|
||||||
* provides a basis for detailed review that will help shape your future PRs
|
* provides a basis for detailed review that will help shape your future PRs
|
||||||
* may include shared documentation (`docs_fragments`) that multiple modules require
|
* may include shared documentation (`doc_fragments`) that multiple modules require
|
||||||
* may include shared code (`module_utils`) that multiple modules require
|
* may include shared code (`module_utils`) that multiple modules require
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ The first PR should include the following files:
|
||||||
|
|
||||||
* ``lib/ansible/modules/$category/$topic/__init__.py`` - An empty file to initialize namespace and allow Python to import the files. *Required new file*
|
* ``lib/ansible/modules/$category/$topic/__init__.py`` - An empty file to initialize namespace and allow Python to import the files. *Required new file*
|
||||||
* ``lib/ansible/modules/$category/$topic/$yourfirstmodule.py`` - A single module. *Required new file*
|
* ``lib/ansible/modules/$category/$topic/$yourfirstmodule.py`` - A single module. *Required new file*
|
||||||
* ``lib/ansible/utils/module_docs_fragments/$topic.py`` - Code documentation, such as details regarding common arguments. *Optional new file*
|
* ``lib/ansible/plugins/doc_fragments/$topic.py`` - Code documentation, such as details regarding common arguments. *Optional new file*
|
||||||
* ``lib/ansible/module_utils/$topic.py`` - Code shared between more than one module, such as common arguments. *Optional new file*
|
* ``lib/ansible/module_utils/$topic.py`` - Code shared between more than one module, such as common arguments. *Optional new file*
|
||||||
* ``docs/docsite/rst/dev_guide/developing_module_utilities.rst`` - Document your new `module_utils` file. *Optional update to existing file*
|
* ``docs/docsite/rst/dev_guide/developing_module_utilities.rst`` - Document your new `module_utils` file. *Optional update to existing file*
|
||||||
|
|
||||||
|
|
|
@ -352,6 +352,14 @@ LOCALHOST_WARNING:
|
||||||
- {key: localhost_warning, section: defaults}
|
- {key: localhost_warning, section: defaults}
|
||||||
type: boolean
|
type: boolean
|
||||||
version_added: "2.6"
|
version_added: "2.6"
|
||||||
|
DOC_FRAGMENT_PLUGIN_PATH:
|
||||||
|
name: documentation fragment plugins path
|
||||||
|
default: ~/.ansible/plugins/doc_fragments:/usr/share/ansible/plugins/doc_fragments
|
||||||
|
description: Colon separated paths in which Ansible will search for Documentation Fragments Plugins.
|
||||||
|
env: [{name: ANSIBLE_DOC_FRAGMENT_PLUGINS}]
|
||||||
|
ini:
|
||||||
|
- {key: doc_fragment_plugins, section: defaults}
|
||||||
|
type: pathspec
|
||||||
DEFAULT_ACTION_PLUGIN_PATH:
|
DEFAULT_ACTION_PLUGIN_PATH:
|
||||||
name: Action plugins path
|
name: Action plugins path
|
||||||
default: ~/.ansible/plugins/action:/usr/share/ansible/plugins/action
|
default: ~/.ansible/plugins/action:/usr/share/ansible/plugins/action
|
||||||
|
|
|
@ -633,12 +633,11 @@ _PLUGIN_FILTERS = _load_plugin_filter()
|
||||||
# doc fragments first
|
# doc fragments first
|
||||||
fragment_loader = PluginLoader(
|
fragment_loader = PluginLoader(
|
||||||
'ModuleDocFragment',
|
'ModuleDocFragment',
|
||||||
'ansible.utils.module_docs_fragments',
|
'ansible.plugins.doc_fragments',
|
||||||
os.path.join(os.path.dirname(__file__), 'module_docs_fragments'),
|
C.DOC_FRAGMENT_PLUGIN_PATH,
|
||||||
'',
|
'doc_fragments',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
action_loader = PluginLoader(
|
action_loader = PluginLoader(
|
||||||
'ActionModule',
|
'ActionModule',
|
||||||
'ansible.plugins.action',
|
'ansible.plugins.action',
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue