diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9c97e44b13b..239c16431bc 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -20,7 +20,7 @@ contact_links: about: Please ask and answer usage questions here - name: ⚡ Working groups url: https://github.com/ansible/community/wiki - about: Interedted in improving a specific area? Become a part of a working group! + about: Interested in improving a specific area? Become a part of a working group! - name: 💼 For Enterprise url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser - about: Red Hat offers supported builds of Ansible Engine + about: Red Hat offers support for the Ansible Automation Platform diff --git a/docs/docsite/rst/community/contributing_maintained_collections.rst b/docs/docsite/rst/community/contributing_maintained_collections.rst index 93b5b64d8e9..f508d145f97 100644 --- a/docs/docsite/rst/community/contributing_maintained_collections.rst +++ b/docs/docsite/rst/community/contributing_maintained_collections.rst @@ -120,7 +120,7 @@ The following table shows: cisco.asa - community.asa + community.asa Security ✓ ✓ @@ -164,7 +164,7 @@ The following table shows: ibm.qradar - community.qradar + community.qradar Security ✓ @@ -197,7 +197,7 @@ The following table shows: splunk.es - community.es + community.es Security ✓ @@ -250,7 +250,7 @@ The following scenarios use the ``arista.eos`` to help explain when to contribut * Propose a new module in the ``community.network`` collection (requires network community approval). * Place your new module in a collection in your own namespace (no approvals required). - + Most new content should go into either a related community collection or your own collection first so that is well established in the community before you can propose adding it to the ``arista`` namespace, where inclusion and maintenance criteria are much higher. diff --git a/docs/docsite/rst/dev_guide/developing_locally.rst b/docs/docsite/rst/dev_guide/developing_locally.rst index c05d3fcb5be..573dd69d7be 100644 --- a/docs/docsite/rst/dev_guide/developing_locally.rst +++ b/docs/docsite/rst/dev_guide/developing_locally.rst @@ -45,6 +45,10 @@ To confirm that ``my_custom_module`` is available: * type ``ansible-doc -t module my_custom_module``. You should see the documentation for that module. +.. note:: + + Currently, ``ansible-doc`` command can only parse Python modules for the module documentation. If you have module written in a different programming language other than Python, please write a documentation in Python file adjacent to module file. + To use a local module only in certain playbooks: * store it in a sub-directory called ``library`` in the directory that contains the playbook(s) diff --git a/docs/docsite/rst/dev_guide/platforms/aws_guidelines.rst b/docs/docsite/rst/dev_guide/platforms/aws_guidelines.rst index 07d758dd0cb..1f8c6f70aed 100644 --- a/docs/docsite/rst/dev_guide/platforms/aws_guidelines.rst +++ b/docs/docsite/rst/dev_guide/platforms/aws_guidelines.rst @@ -638,7 +638,7 @@ available during the test run. Second putting the test in a test group causing i continuous integration build. Tests for new modules should be added to the same group as existing AWS tests. In general just copy -an existing aliases file such as the `aws_s3 tests aliases file `_. +an existing aliases file such as the `aws_s3 tests aliases file `_. AWS Credentials for Integration Tests ------------------------------------- diff --git a/docs/docsite/rst/network/dev_guide/developing_resource_modules_network.rst b/docs/docsite/rst/network/dev_guide/developing_resource_modules_network.rst index ddd878b3a8c..3b067cbdf7c 100644 --- a/docs/docsite/rst/network/dev_guide/developing_resource_modules_network.rst +++ b/docs/docsite/rst/network/dev_guide/developing_resource_modules_network.rst @@ -511,9 +511,9 @@ For platforms that support ``connection: local`` *and* ``connection: network_cli * Name the :file:`targets/` directories after the module name. * The :file:`main.yaml` file should just reference the transport. -The following example walks through the integration tests for the ``vyos.vyos.vyos_banner`` module in the `vyos.vyos `_ collection: +The following example walks through the integration tests for the ``vyos.vyos.vyos_l3_interfaces`` module in the `vyos.vyos `_ collection: -``test/integration/targets/vyos_banner/tasks/main.yaml`` +``test/integration/targets/vyos_l3_interfaces/tasks/main.yaml`` .. code-block:: yaml @@ -522,7 +522,7 @@ The following example walks through the integration tests for the ``vyos.vyos.vy tags: - cli -``test/integration/targets/vyos_banner/tasks/cli.yaml`` +``test/integration/targets/vyos_l3_interfaces/tasks/cli.yaml`` .. code-block:: yaml @@ -549,46 +549,71 @@ The following example walks through the integration tests for the ``vyos.vyos.vy loop_control: loop_var: test_case_to_run -``test/integration/targets/vyos_banner/tests/cli/basic-no-login.yaml`` +``test/integration/targets/vyos_l3_interfaces/tests/cli/overridden.yaml`` .. code-block:: yaml - --- - - debug: - msg: "cli/basic-no-login.yaml on connection={{ ansible_connection }}" - - - name: Setup - vyos_banner: - banner: pre-login - text: | - Junk pre-login banner - over multiple lines - state: present - - - name: remove pre-login - vyos_banner: - banner: pre-login - state: absent + --- + - debug: + msg: START vyos_l3_interfaces merged integration tests on connection={{ ansible_connection + }} + + - include_tasks: _remove_config.yaml + + - block: + + - include_tasks: _populate.yaml + + - name: Overrides all device configuration with provided configuration register: result + vyos.vyos.vyos_l3_interfaces: &id001 + config: + + - name: eth0 + ipv4: + + - address: dhcp - - debug: - msg: "{{ result }}" + - name: eth1 + ipv4: - - assert: + - address: 192.0.2.15/24 + state: overridden + + - name: Assert that before dicts were correctly generated + assert: + that: + - "{{ populate | symmetric_difference(result['before']) |length == 0 }}" + + - name: Assert that correct commands were generated + assert: + that: + - "{{ overridden['commands'] | symmetric_difference(result['commands'])\ + \ |length == 0 }}" + + - name: Assert that after dicts were correctly generated + assert: that: - - "result.changed == true" - - "'delete system login banner pre-login' in result.commands" + - "{{ overridden['after'] | symmetric_difference(result['after']) |length\ + \ == 0 }}" - - name: remove pre-login (idempotent) - vyos_banner: - banner: pre-login - state: absent + - name: Overrides all device configuration with provided configurations (IDEMPOTENT) register: result + vyos.vyos.vyos_l3_interfaces: *id001 + + - name: Assert that the previous task was idempotent + assert: + that: + - result['changed'] == false - - assert: + - name: Assert that before dicts were correctly generated + assert: that: - - "result.changed == false" - - "result.commands | length == 0" + - "{{ overridden['after'] | symmetric_difference(result['before']) |length\ + \ == 0 }}" + always: + + - include_tasks: _remove_config.yaml Detecting test resources at runtime @@ -659,14 +684,14 @@ To run integration tests for a specific module: .. code-block:: bash - ansible-test network-integration --inventory /path/to-collection-module/test/integration/inventory.networking vyos_vlan + ansible-test network-integration --inventory /path/to-collection-module/test/integration/inventory.networking vyos_l3_interfaces To run a single test case on a specific module: .. code-block:: bash - # Only run vyos_vlan/tests/cli/basic.yaml - ansible-test network-integration --inventory /path/to-collection-module/test/integration/inventory.networking vyos_vlan --testcase basic + # Only run vyos_l3_interfaces/tests/cli/gathered.yaml + ansible-test network-integration --inventory /path/to-collection-module/test/integration/inventory.networking vyos_l3_interfaces --testcase gathered To run integration tests for a specific transport: diff --git a/docs/docsite/rst/user_guide/playbooks_async.rst b/docs/docsite/rst/user_guide/playbooks_async.rst index 5f7636fee28..b709a4c0733 100644 --- a/docs/docsite/rst/user_guide/playbooks_async.rst +++ b/docs/docsite/rst/user_guide/playbooks_async.rst @@ -102,7 +102,8 @@ If you need a synchronization point with an async task, you can register it to o jid: "{{ yum_sleeper.ansible_job_id }}" register: job_result until: job_result.finished - retries: 30 + retries: 100 + delay: 10 .. note:: If the value of ``async:`` is not high enough, this will cause the diff --git a/docs/docsite/rst/user_guide/playbooks_filters.rst b/docs/docsite/rst/user_guide/playbooks_filters.rst index 90b010b026e..13b71e9fcc3 100644 --- a/docs/docsite/rst/user_guide/playbooks_filters.rst +++ b/docs/docsite/rst/user_guide/playbooks_filters.rst @@ -76,7 +76,7 @@ Defining different values for true/false/null You can create a test, then define one value to use when the test returns true and another when the test returns false (new in version 1.9):: - {{ (name == "John") | ternary('Mr','Ms') }} + {{ (status == "needs_restart") | ternary('restart', 'continue') }} In addition, you can define a one value to use on true, one value on false and a third value on null (new in version 2.8):: diff --git a/lib/ansible/modules/async_status.py b/lib/ansible/modules/async_status.py index 158e771d25c..03e0bc16b70 100644 --- a/lib/ansible/modules/async_status.py +++ b/lib/ansible/modules/async_status.py @@ -54,7 +54,8 @@ EXAMPLES = r''' jid: '{{ yum_sleeper.ansible_job_id }}' register: job_result until: job_result.finished - retries: 30 + retries: 100 + delay: 10 ''' RETURN = r'''