.. _@{ module }@:

{% if short_description %}
{% set title = module + ' - ' + short_description|convert_symbols_to_format %}
{% else %}
{% set title = module %}
{% endif %}
{% set title_len = title|length %}

@{ title }@
@{ '+' * title_len }@

{% if version_added is defined and version_added != '' -%}
.. versionadded:: @{ version_added | default('') }@


{% endif %}


.. contents::
   :local:
   :depth: 2

{# ------------------------------------------
 #
 # Please note: this looks like a core dump
 # but it isn't one.
 #
 --------------------------------------------#}
{% if deprecated is defined -%}


DEPRECATED
----------

{# use unknown here? skip the fields? #}
:In: version: @{ deprecated['version'] | default('') | string | convert_symbols_to_format }@
:Why: @{ deprecated['why'] | default('') | convert_symbols_to_format }@
:Alternative: @{ deprecated['alternative'] | default('')|  convert_symbols_to_format }@


{% endif %}

Synopsis
--------

{% if description %}

{% for desc in description -%}
* @{ desc | convert_symbols_to_format }@
{% endfor %}


{% endif %}
{% if aliases is defined -%}

Aliases: @{ ','.join(aliases) }@


{% endif %}

{% if requirements %}
{% set req = 'Requirements' %}
{% if plugin_type == 'module' %}
{% set req = req + ' (on host that executes module)' %}
{% endif %}
{% set req_len = req|length %}
@{ req }@
@{ '-' * req_len }@

{% for req in requirements %}
  * @{ req | convert_symbols_to_format }@
{% endfor %}

{% endif %}

{% if options -%}


Options
-------

.. raw:: html

    <table border=1 cellpadding=4>

    <tr>
    <th class="head">parameter</th>
    <th class="head">required</th>
    <th class="head">default</th>
    <th class="head">choices</th>
{% if plugin_type != 'module' %}
    <th class="head">configuration</th>
{% endif %}
    <th class="head">comments</th>
    </tr>
{% for k in option_keys -%}
{% set v = options[k] -%}
{% if not v['suboptions'] %}

    <tr>
    <td>@{ k }@<br/><div style="font-size: small;">{% if v['version_added'] -%} (added in @{v['version_added']}@){% endif -%}</div></td>
    <td>{% if v.get('required', False) -%}yes{% else %}no{% endif -%}</td>
    <td>{% if v['default'] -%}@{ v['default'] }@{% endif -%}</td>
{% if v.get('type', 'not_bool') == 'bool' %}
    <td><ul><li>yes</li><li>no</li></ul></td>
{% else %}
    <td>{% if v['choices'] -%}<ul>{% for choice in v.get('choices',[]) -%}<li>@{ choice }@</li>{% endfor -%}</ul>{% endif -%}</td>
{% endif %}
{% if plugin_type != 'module' %}
    <td>
	{% if 'ini' in v %}
	<div> ini entries:
	{% for ini in v.get('ini') %}
        <p>[@{ ini.section }@ ]<br>@{ ini.key}@ = @{ v['default']|default('VALUE') }@</p>
	{% endfor %}
	</div>
	{% endif %}
	{% if 'env' in v %}
	{% for env in v.get('env') %}
        <div>env:@{ env.name }@</div>
	{% endfor %}
	{% endif %}
	{% if 'vars' in v %}
	{% for myvar in v.get('vars') %}
        <div>var: @{ myvar.name }@</div>
	{% endfor %}
	{% endif %}
	</td>
{% endif %}
	<td>
{% if v.description is string %}
        <div>@{ v.description | replace('\n', '\n    ') | html_ify }@</div>
{% else %}
{% for desc in v.description %}
        <p>@{ desc | replace('\n', '\n    ') | html_ify }@</p>
{% endfor %}
{% endif %}
{% if 'aliases' in v and v.aliases %}
        </br><div style="font-size: small;">aliases: @{ v.aliases|join(', ') }@</div>
{% endif %}
	</td>
	</tr>
{% else %}
    <tr>
    <td rowspan="2">@{ k }@<br/><div style="font-size: small;">{% if v['version_added'] -%} (added in @{v['version_added']}@){% endif -%}</div></td>
    <td>{% if v.get('required', False) -%}yes{% else -%}no{% endif -%}</td>
    <td></td>
{% if plugin_type != 'module' %}
    <td></td>
{% endif %}
    <td></td>
    <td>
{% for desc in v.description %}
        <div>@{ desc | replace('\n', '\n    ') | html_ify }@</div>
{% endfor %}
{% if 'aliases' in v and v.aliases %}
        </br><div style="font-size: small;">aliases: @{ v.aliases|join(', ') }@</div>
{% endif %}
    </tr>

    <tr>
    <td colspan="5">
        <table border=1 cellpadding=4>
        <caption><b>Dictionary object @{ k }@</b></caption>

        <tr>
        <th class="head">parameter</th>
        <th class="head">required</th>
        <th class="head">default</th>
        <th class="head">choices</th>
        <th class="head">comments</th>
        </tr>
{% for k2 in v['suboptions'] %}
{% set v2 = v['suboptions'] [k2] %}

        <tr>
        <td>@{ k2 }@<br/><div style="font-size: small;">{% if v2['version_added'] -%} (added in @{v2['version_added']}@){% endif -%}</div></td>
        <td>{% if v2.get('required', False) -%}yes{% else -%}no{% endif -%}</td>
        <td>{% if v2['default'] -%}@{ v2['default'] }@{% endif -%}</td>
{% if v2.get('type', 'not_bool') == 'bool' %}
        <td><ul><li>yes</li><li>no</li></ul></td>
{% else %}
        <td>{% if v2['choices'] -%}<ul>{% for choice in v2.get('choices',[]) -%}<li>@{ choice }@</li>{% endfor -%}</ul>{% endif -%}</td>
{% endif %}
        <td>
{% if v2.description is string %}
        <div>@{ v2.description | replace('\n', '\n    ') | html_ify }@</div>
{% else %}
{% for desc in v2.description %}
            <div>@{ desc | replace('\n', '\n    ') | html_ify }@</div>
{% endfor %}
{% endif %}
{% if 'aliases' in v and v2.aliases %}
            </br><div style="font-size: small;">aliases: @{ v2.aliases|join(', ') }@</div>
{% endif %}
        </td>
        </tr>
{% endfor %}

        </table>

    </td>
    </tr>
{% endif %}
    </td>
    </tr>
{% endfor %}

    </table>
    </br>

{% endif %}
{% if examples or plainexamples -%}


Examples
--------

.. code-block:: yaml

{% for example in examples %}
{% if example['description'] %}@{ example['description'] | indent(4, True) }@{% endif %}
@{ example['code'] | escape | indent(4, True) }@
{% endfor %}
{% if plainexamples %}@{ plainexamples | indent(4, True) }@{% endif %}
{% endif %}


{% if returndocs -%}


Return Values
-------------

Common return values are documented :ref:`here <common_return_values>`, the following are the fields unique to this {{plugin_type}}:

.. raw:: html

    <table border=1 cellpadding=4>

    <tr>
    <th class="head">name</th>
    <th class="head">description</th>
    <th class="head">returned</th>
    <th class="head">type</th>
    <th class="head">sample</th>
    </tr>
{% for entry in returndocs %}

    <tr>
    <td>@{ entry }@</td>
    <td>
{% if returndocs[entry].description is string %}
        <div>@{ returndocs[entry].description | replace('\n', '\n    ') | html_ify }@</div>
{% else %}
{% for desc in returndocs[entry].description %}
        <div>@{ desc | replace('\n', '\n    ') | html_ify }@</div>
{% endfor %}
{% endif %}
    </td>
    <td align=center>@{ returndocs[entry].returned }@</td>
    <td align=center>@{ returndocs[entry].type }@</td>
    <td align=center>@{ returndocs[entry].sample | replace('\n', '\n    ') | html_ify }@</td>
    </tr>
{% if returndocs[entry].type == 'complex' %}

    <tr>
    <td>contains:</td>
    <td colspan=4>
        <table border=1 cellpadding=2>

        <tr>
        <th class="head">name</th>
        <th class="head">description</th>
        <th class="head">returned</th>
        <th class="head">type</th>
        <th class="head">sample</th>
        </tr>
{% for sub in returndocs[entry].contains %}

        <tr>
        <td>@{ sub }@</td>
        <td>
{% if returndocs[entry].contains[sub].description is string %}
            <div>@{ returndocs[entry].contains[sub].description | replace('\n', '\n    ') | html_ify }@</div>
{% else %}
{% for desc in returndocs[entry].contains[sub].description %}
            <div>@{ desc | replace('\n', '\n    ') | html_ify }@</div>
{% endfor %}
{% endif %}
        </td>
        <td align=center>@{ returndocs[entry].contains[sub].returned }@</td>
        <td align=center>@{ returndocs[entry].contains[sub].type }@</td>
        <td align=center>@{ returndocs[entry].contains[sub].sample }@</td>
        </tr>
{% endfor %}
        </table>
	</td></tr>
{% endif %}
{% endfor %}
    </table>
    </br></br>
{% endif %}


{% if notes -%}


Notes
-----

.. note::
{% for note in notes %}
    - @{ note | convert_symbols_to_format }@
{% endfor %}


{% endif %}
{% if author is defined -%}


Author
~~~~~~

{% for author_name in author %}
    * @{ author_name }@
{% endfor %}


{% endif %}
{% if not deprecated %}
{% set support = { 'core': 'The Ansible Core Team', 'network': 'The Ansible Network Team', 'certified': 'an Ansible Partner', 'community': 'The Ansible Community', 'curated': 'A Third Party'} %}
{% set module_states = { 'preview': 'it is not guaranteed to have a backwards compatible interface', 'stableinterface': 'the maintainers for this module guarantee that no backward incompatible interface changes will be made'} %}
{% if metadata %}
{% if metadata.status %}


Status
~~~~~~

{% for cur_state in  metadata.status %}
This module is flagged as **@{cur_state}@** which means that @{module_states[cur_state]}@.
{% endfor %}


{% endif %}
{% if metadata.supported_by in ('core', 'network') %}


Maintenance Info
~~~~~~~~~~~~~~~~

For more information about Red Hat's this support of this @{ plugin_type }@,
please refer to this `knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>_`

{% endif %}
{% endif %}
{% endif %}

For help in developing, should you be so inclined, please read :doc:`../../community`,
:doc:`../../dev_guide/testing` and {% if plugin_type == 'module' %}:doc:`../../dev_guide/developing_modules`{% else %}:doc:`../../dev_guide/developing_plugins`{% endif %}.

