diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:35 +0000 |
commit | 7fec0b69a082aaeec72fee0612766aa42f6b1b4d (patch) | |
tree | efb569b86ca4da888717f5433e757145fa322e08 /ansible_collections/cisco/iosxr | |
parent | Releasing progress-linux version 7.7.0+dfsg-3~progress7.99u1. (diff) | |
download | ansible-7fec0b69a082aaeec72fee0612766aa42f6b1b4d.tar.xz ansible-7fec0b69a082aaeec72fee0612766aa42f6b1b4d.zip |
Merging upstream version 9.4.0+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/cisco/iosxr')
274 files changed, 31615 insertions, 15359 deletions
diff --git a/ansible_collections/cisco/iosxr/.config/ansible-lint.yml b/ansible_collections/cisco/iosxr/.config/ansible-lint.yml index a401eae2a..f1af877a8 100644 --- a/ansible_collections/cisco/iosxr/.config/ansible-lint.yml +++ b/ansible_collections/cisco/iosxr/.config/ansible-lint.yml @@ -1,3 +1,3 @@ --- skip_list: - - galaxy[version-incorrect] + - sanity diff --git a/ansible_collections/cisco/iosxr/.github/dependabot.yml b/ansible_collections/cisco/iosxr/.github/dependabot.yml new file mode 100644 index 000000000..5b32d4c10 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/dependabot.yml @@ -0,0 +1,9 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + labels: + - "skip-changelog" diff --git a/ansible_collections/cisco/iosxr/.github/release-drafter.yml b/ansible_collections/cisco/iosxr/.github/release-drafter.yml new file mode 100644 index 000000000..e3e5966e4 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/release-drafter.yml @@ -0,0 +1,3 @@ +--- +# see https://github.com/ansible-community/devtools +_extends: ansible-community/devtools diff --git a/ansible_collections/cisco/iosxr/.github/workflows/ack.yml b/ansible_collections/cisco/iosxr/.github/workflows/ack.yml new file mode 100644 index 000000000..fda595dc5 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/workflows/ack.yml @@ -0,0 +1,15 @@ +--- +# See https://github.com/ansible-community/devtools/blob/main/.github/workflows/ack.yml +name: ack + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +on: # yamllint disable-line rule:truthy + pull_request_target: + types: [opened, labeled, unlabeled, synchronize] + +jobs: + ack: + uses: ansible/devtools/.github/workflows/ack.yml@main diff --git a/ansible_collections/cisco/iosxr/.github/workflows/codecoverage.yml b/ansible_collections/cisco/iosxr/.github/workflows/codecoverage.yml new file mode 100644 index 000000000..b425edcc2 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/workflows/codecoverage.yml @@ -0,0 +1,15 @@ +--- +name: Code Coverage + +on: # yamllint disable-line rule:truthy + push: + pull_request: + branches: [ main ] + +jobs: + codecoverage: + uses: ansible-network/github_actions/.github/workflows/coverage_network_devices.yml@main + with: + collection_pre_install: >- + git+https://github.com/ansible-collections/ansible.utils.git + git+https://github.com/ansible-collections/ansible.netcommon.git diff --git a/ansible_collections/cisco/iosxr/.github/workflows/push.yml b/ansible_collections/cisco/iosxr/.github/workflows/push.yml new file mode 100644 index 000000000..06d11b8a0 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/workflows/push.yml @@ -0,0 +1,27 @@ +--- +# push workflow is shared and expected to perform actions after a merge happens +# on a maintenance branch (default or release). For example updating the +# draft release-notes. +# based on great work from +# https://github.com/T-Systems-MMS/ansible-collection-icinga-director +name: push + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +on: # yamllint disable-line rule:truthy + workflow_dispatch: + +env: + NAMESPACE: cisco + COLLECTION_NAME: iosxr + ANSIBLE_COLLECTIONS_PATHS: ./ + +jobs: + update_release_draft: + uses: ansible/devtools/.github/workflows/push_network.yml@main + with: + repo: ansible-collections/cisco.iosxr + secrets: + BOT_PAT: ${{ secrets.BOT_PAT }} diff --git a/ansible_collections/cisco/iosxr/.github/workflows/release.yml b/ansible_collections/cisco/iosxr/.github/workflows/release.yml new file mode 100644 index 000000000..eb04259d1 --- /dev/null +++ b/ansible_collections/cisco/iosxr/.github/workflows/release.yml @@ -0,0 +1,14 @@ +--- +name: release +on: # yamllint disable-line rule:truthy + release: + types: [published] + +jobs: + release: + uses: ansible/devtools/.github/workflows/release_collection.yml@main + with: + environment: release + secrets: + ah_token: ${{ secrets.AH_TOKEN }} + ansible_galaxy_api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }} diff --git a/ansible_collections/cisco/iosxr/.github/workflows/tests.yml b/ansible_collections/cisco/iosxr/.github/workflows/tests.yml index e77967b34..21f8ea565 100644 --- a/ansible_collections/cisco/iosxr/.github/workflows/tests.yml +++ b/ansible_collections/cisco/iosxr/.github/workflows/tests.yml @@ -1,20 +1,23 @@ --- -name: Test collection +name: CI concurrency: - group: ${{ github.head_ref }} + group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true on: # yamllint disable-line rule:truthy pull_request: branches: [main] workflow_dispatch: + schedule: + - cron: '0 0 * * *' jobs: ansible-lint: uses: ansible-network/github_actions/.github/workflows/ansible-lint.yml@main changelog: uses: ansible-network/github_actions/.github/workflows/changelog.yml@main + if: github.event_name == 'pull_request' sanity: uses: ansible-network/github_actions/.github/workflows/sanity.yml@main unit-galaxy: @@ -36,10 +39,11 @@ jobs: runs-on: ubuntu-latest steps: - run: >- - python -c "assert set([ + python -c "assert 'failure' not in + set([ '${{ needs.ansible-lint.result }}', '${{ needs.changelog.result }}', '${{ needs.sanity.result }}', '${{ needs.unit-galaxy.result }}', '${{ needs.unit-source.result }}' - ]) == {'success'}" + ])" diff --git a/ansible_collections/cisco/iosxr/.pre-commit-config.yaml b/ansible_collections/cisco/iosxr/.pre-commit-config.yaml index a068ba72b..8fdbd4b3a 100644 --- a/ansible_collections/cisco/iosxr/.pre-commit-config.yaml +++ b/ansible_collections/cisco/iosxr/.pre-commit-config.yaml @@ -1,7 +1,13 @@ --- repos: + - repo: https://github.com/ansible-network/collection_prep + rev: 1.1.1 + hooks: + # - id: autoversion # removed as being handled by GHA push and release drafter + - id: update-docs + - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v4.4.0 hooks: - id: check-merge-conflict - id: check-symlinks @@ -12,28 +18,14 @@ repos: - id: trailing-whitespace - repo: https://github.com/asottile/add-trailing-comma - rev: v2.2.3 + rev: v3.1.0 hooks: - id: add-trailing-comma - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v2.7.1" + rev: "v3.0.3" hooks: - id: prettier - # Original hook implementation is flaky due to *several* bugs described - # in https://github.com/prettier/prettier/issues/12364 - # a) CI=1 needed to avoid incomplete output - # b) two executions are needed because --list-different works correctly - # only when run with --check as with --write the output will also - # include other entries and logging level cannot be used to keep only - # modified files listed (any file is listed using the log level, regardless if - # is modified or not). - # c) We avoid letting pre-commit pass each filename in order to avoid - # running multiple instances in parallel. This also ensures that running - # prettier from the command line behaves identically with the pre-commit - # one. No real performance downsides. - # d) exit with the return code from list-different (0=none, 1=some) - # rather than the write (0=successfully rewrote files). pre-commit.ci entry: env CI=1 bash -c "prettier --list-different . || ec=$? && prettier --loglevel=error --write . && exit $ec" pass_filenames: false args: [] @@ -46,13 +38,9 @@ repos: hooks: - id: isort name: Sort import statements using isort + args: ["--filter-files"] - repo: https://github.com/psf/black - rev: 22.6.0 + rev: 23.9.1 hooks: - id: black - - - repo: https://github.com/ansible-network/collection_prep - rev: 1.0.1 - hooks: - - id: update-docs diff --git a/ansible_collections/cisco/iosxr/CHANGELOG.rst b/ansible_collections/cisco/iosxr/CHANGELOG.rst index 99c5f1337..b2f32296d 100644 --- a/ansible_collections/cisco/iosxr/CHANGELOG.rst +++ b/ansible_collections/cisco/iosxr/CHANGELOG.rst @@ -5,6 +5,145 @@ Cisco Iosxr Collection Release Notes .. contents:: Topics +v6.1.1 +====== + +Bugfixes +-------- + +- Fix issue in gathered state of interfaces and l3_interfaces RMs(https://github.com/ansible-collections/cisco.iosxr/issues/452, https://github.com/ansible-collections/cisco.iosxr/issues/451) + +v6.1.0 +====== + +Minor Changes +------------- + +- iosxr_config - Relax restrictions on I(src) parameter so it can be used more like I(lines). (https://github.com/ansible-collections/cisco.iosxr/issues/343). +- iosxr_config Add updates option in return value(https://github.com/ansible-collections/cisco.iosxr/issues/438). + +Documentation Changes +--------------------- + +- Fix docs for prefix_lists RM. +- iosxr_acls - update examples and use YAML output in them for better readibility. + +v6.0.1 +====== + +Bugfixes +-------- + +- Fix issue in deletion of ospf.(https://github.com/ansible-collections/cisco.iosxr/issues/425) +- Fix issue in facts gathering for Interfaces RM.(https://github.com/ansible-collections/cisco.iosxr/issues/417) +- Fix issue in lacp and lldp_global of local variable commands. +- Support overridden state in bgp_global,lacp and lldp_global module.(https://github.com/ansible-collections/cisco.iosxr/issues/386) + +Documentation Changes +--------------------- + +- Fix grpc sub plugin documentation. +- Update ospf_interfaces examples +- Update ospfv2 examples +- Update ospfv3 examples + +v6.0.0 +====== + +Minor Changes +------------- + +- Add iosxr_bgp_templates module (https://github.com/ansible-collections/cisco.iosxr/issues/341). +- iosxr_facts - Add CPU utilization. +- iosxr_l2_interfaces - fix issue in supporting multiple iosxr version. (https://github.com/ansible-collections/cisco.iosxr/issues/379). + +Deprecated Features +------------------- + +- Deprecated iosxr_bgp module in favor of iosxr_bgp_global,iosxr_bgp_neighbor_address_family and iosxr_bgp_address_family. +- iosxr_l2_interfaces - deprecate q_vlan with qvlan which allows vlans in str format e.g "any" + +Bugfixes +-------- + +- Add support to delete specific static route entry.(https://github.com/ansible-collections/cisco.iosxr/issues/375) +- l2_interfaces Fix issue in qvlan parsing.(https://github.com/ansible-collections/cisco.iosxr/issues/403) + +Documentation Changes +--------------------- + +- iosxr_facts - Add ansible_net_cpu_utilization. + +New Modules +----------- + +- iosxr_bgp_templates - Manages BGP templates resource module. + +v5.0.3 +====== + +Bugfixes +-------- + +- Fixing Bundle-Ether/-POS recognition for resource modules. (https://github.com/ansible-collections/cisco.iosxr/issues/369) +- acls - Fix issue in ``replaced`` state of not replacing ace entries with remark action. (https://github.com/ansible-collections/cisco.iosxr/issues/332) +- l3_interfaces - Fix issue in ``gather`` state of not gathering management interface. (https://github.com/ansible-collections/cisco.iosxr/issues/381) + +Documentation Changes +--------------------- + +- iosxr_interfaces - Fixed module documentation and examples. +- iosxr_l3_interfaces - Fixed module documentation and examples. + +v5.0.2 +====== + +Bugfixes +-------- + +- interfaces - Fix issue in ``overridden`` state of interfaces RM. (https://github.com/ansible-collections/cisco.iosxr/issues/377) + +Documentation Changes +--------------------- + +- iosxr_bgp_global - add task output to module documentation examples. + +v5.0.1 +====== + +Bugfixes +-------- + +- Fixing L2 Interface recognition for resource modules. (https://github.com/ansible-collections/cisco.iosxr/issues/366) +- Iosxr_interfaces - Fix issue in interfaces with interface type. + +Documentation Changes +--------------------- + +- Improve docs of static_routes Resource modules. + +v5.0.0 +====== + +Major Changes +------------- + +- iosxr_l3_interfaces - fix issue in ipv4 address formatting. (https://github.com/ansible-collections/cisco.iosxr/issues/311). + +Minor Changes +------------- + +- bgp_global - Add ``no_prepend`` option and ``set`` and ``replace_as`` suboptions under local_as option. (https://github.com/ansible-collections/cisco.iosxr/issues/336) +- bgp_global - Add ``password`` option and ``encrypted`` and ``inheritance_disable`` suboptions. (https://github.com/ansible-collections/cisco.iosxr/issues/337) +- bgp_global - Add ``use`` option and ``neighbor_group`` and ``session_group`` suboptions. (https://github.com/ansible-collections/cisco.iosxr/issues/312) + +Bugfixes +-------- + +- Bgp_global, Bgp_neighbor_address_family, Bgp_address_family. Make all possible option mutually exclusive. +- bgp_neighbor_address_family - mark ``soft_reconfiguration`` suboptions ``set``, ``always``, and ``inheritance_disable`` as mutually exclusive. (https://github.com/ansible-collections/cisco.iosxr/issues/325) +- facts - fix ``ansible_net_model`` and ``ansible_net_seriulnum`` facts gathering issue (https://github.com/ansible-collections/cisco.iosxr/issues/308) + v4.1.0 ====== diff --git a/ansible_collections/cisco/iosxr/FILES.json b/ansible_collections/cisco/iosxr/FILES.json index 07330e094..6a5e295ed 100644 --- a/ansible_collections/cisco/iosxr/FILES.json +++ b/ansible_collections/cisco/iosxr/FILES.json @@ -8,6 +8,62 @@ "format": 1 }, { + "name": "codecov.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4aa7e485dd4db6f8a55b046088c745def2b3145d9499ccda4e9a3336467dcea2", + "format": 1 + }, + { + "name": ".zuul.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98905acf2eec9aa791cbf5a9effe6e7402bfaa3d2d204c30013120e00668da6e", + "format": 1 + }, + { + "name": "LICENSE", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986", + "format": 1 + }, + { + "name": ".yamllint", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "827ef9e031ecdcaf137be239d33ef93fcbbc3611cbb6b30b0e507d0e03373d0e", + "format": 1 + }, + { + "name": "requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0aaeda602db4a8ddfe5bc8dd02ee4f0b3f9bb6ca8cdbf621f182aa97684f9cf3", + "format": 1 + }, + { + "name": "meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "meta/runtime.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "282baf25a62b30df4890c49e1c801e8cae2c99f5ae8fbc2b8cdfde9696b0fd86", + "format": 1 + }, + { + "name": "meta/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { "name": ".config", "ftype": "dir", "chksum_type": null, @@ -18,1113 +74,1225 @@ "name": ".config/ansible-lint.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fc6a1235051ecb9d79555eb292832443b84844c7b343a43cad74b0f84eeeda64", + "chksum_sha256": "f9938ba933b832ccd61f3871926f0e9f9380d87b1eae1b678f4faf8e2a43caaa", "format": 1 }, { - "name": ".github", + "name": "README.md", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "dc53e9f4e2f3828eb3c7759244b530b25b54fc4cc8d036b43110b170cd875d6d", + "format": 1 + }, + { + "name": "plugins", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": ".github/workflows", + "name": "plugins/terminal", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": ".github/workflows/tests.yml", + "name": "plugins/terminal/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fb6838827012c333b7aa2b445987ce5aef5727b640e7647846d09e30d32b54b6", + "chksum_sha256": "d394b38929e905705fa833d4b590809c2af92af65a020d0ae91d5d2d1db72552", "format": 1 }, { - "name": "changelogs", + "name": "plugins/terminal/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/inventory", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "changelogs/fragments", + "name": "plugins/inventory/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/netconf", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "changelogs/fragments/.keep", + "name": "plugins/netconf/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "73becb51b5fb1fb658f10fb8e769968743f8568c6e51dc1efda0849ca47eb8e0", "format": 1 }, { - "name": "changelogs/changelog.yaml", + "name": "plugins/netconf/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "439e19f562d205bc616ad097ad225cd8913a01a7f42bbda40cb2722e385c3279", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "changelogs/config.yaml", + "name": "plugins/cache", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/cache/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e9313ae1bb365e94e03fc01e2c0bd2df437019a987f388ae98e8ec669d498984", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "docs", + "name": "plugins/cliconf", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_acl_interfaces_module.rst", + "name": "plugins/cliconf/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fae7d9721649b3d0e4e9fa0e0ca3070589c8aeea4cca993b07bba8104544cc20", + "chksum_sha256": "0f18b848a9e72c90c0ce622e251140d5f1382feb76ead150b765b21691ca271b", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_acls_module.rst", + "name": "plugins/cliconf/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ca96bc0a2738096f2eb11ba46358e65b7de8b7a29a12c993db387946d362838c", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_banner_module.rst", + "name": "plugins/plugin_utils", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/plugin_utils/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aa76d42b68956a388795eb19167bb885c9bedef744c88abbe8e73291cf3754b4", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_bgp_address_family_module.rst", + "name": "plugins/modules", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/modules/iosxr_prefix_lists.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "653d084166fef790d465a6172a0ff21e4f216faff2d3a0a7614b8712ae3d5457", + "chksum_sha256": "0b3f0327ec949a4b8ab7a5048a103a5cb3289b024622abec4bbe2b3492804c6c", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_bgp_global_module.rst", + "name": "plugins/modules/iosxr_lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bf6b1366c1e4b823bdd32b18182c54da6e6ee2eb2eb8689c7102434eb6a5717d", + "chksum_sha256": "49bc5864ee42613d3a0cac34d9c146fb97297ef461d7fa497c94162662160e59", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_bgp_module.rst", + "name": "plugins/modules/iosxr_l3_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0ca47520de9fcb6d0cee1477aa76a4111b1b0220c4718efb558989a8c20bf35", + "chksum_sha256": "c6c6340d2945f3e168b9a9fcd03b8abae7ee52871b76579ff65b0b4903da00f6", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst", + "name": "plugins/modules/iosxr_ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "56d6899a583bbe839a84412f54b7c04874196904e07907b03b5c4e9ed5c3ea9d", + "chksum_sha256": "44b57fde643c0f5a18af667beb17595dfc30158fe67ca88402360fda946eceaa", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_cliconf.rst", + "name": "plugins/modules/iosxr_logging.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bf973787bc7e3ac2a44b4e471927a7e6b2186420238ee9f27cbef8dae306866a", + "chksum_sha256": "bb44b2574a5805f3a9c9a404975b04cf08a9904909005d03af66af013d84457c", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_command_module.rst", + "name": "plugins/modules/iosxr_ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "930f59e02fdbc70802c4275a0b50922a0e38252683acc37c3c7df6750d079f96", + "chksum_sha256": "ab437abd41913bd6920581de125b9066482173009f6b622f626274d8836cda86", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_config_module.rst", + "name": "plugins/modules/iosxr_lag_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5780e029a96f47e92b546030e9e3e5380785e97baa517456b2e3ec14db4c1e76", + "chksum_sha256": "569864637dc35847d5a0aacf66c5409fb65f4710a2e84e9799a80eab0339294b", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_facts_module.rst", + "name": "plugins/modules/iosxr_config.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d8b81426117454110309db2dde4adfd13c91dae2011119320ba7a06e068b4fc3", + "chksum_sha256": "ba4792a4d08586afb467f7e0cf3dd6d6d5fcc47d36422a959f5184fc8d57cc06", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_hostname_module.rst", + "name": "plugins/modules/iosxr_bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e0b88ff53243b160f5de9f9f83bca5b1f8ba69a3e34ac3d7e4714c58c0002ba2", + "chksum_sha256": "40ee7eb47dd6a3033bc45b091baa7ae3fba0526bca4fe37df5bf10a6689db834", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_interfaces_module.rst", + "name": "plugins/modules/iosxr_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e34d4ce173ffd51bd3c0416f8dd155928fb3fc6c47bbe483ff1e60399ca924e4", + "chksum_sha256": "c1e798a795b46dff95909b6b4011b547615e62f5dc54386937db8295093e2d18", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_l2_interfaces_module.rst", + "name": "plugins/modules/iosxr_hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e750c7a6fd2f373b62a902cbe40bb0fc33b80f50c16bfcb2fc247bc883591873", + "chksum_sha256": "1f8d7e5854c1c58c1042dbccaa889a900ee6cea16e60d4e07bddedb78e6f47bf", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_l3_interfaces_module.rst", + "name": "plugins/modules/iosxr_bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9efc111ebe5fb4e2cb422ac03f8bd3e807e643272a088cdb09dca06b28011c93", + "chksum_sha256": "bbdd49a43dc1e503dc098cee9c4674e6361f84ca2ed4322f61f8cb13cca170ad", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst", + "name": "plugins/modules/iosxr_banner.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "502060acc50d40f7b01760aff055a092f4c67dc0e31411f95c13f51305a8aff1", + "chksum_sha256": "8eb8ad5c48dd48fad1e11367cd855dc063ce885756af15ffebdc7f532c4df8d0", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_lacp_module.rst", + "name": "plugins/modules/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95674b7bc7f2e3de61c9788366345bb50a448fefa566f962b52f47a19f4fbe07", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_lag_interfaces_module.rst", + "name": "plugins/modules/iosxr_command.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a3963fbdd0a2d29f2c98e2dca7de4c9e3fc2534b5e9e9cf268a858698e0b9c58", + "chksum_sha256": "196518472d9b34a2a21ae411f2502cf727a43a514cd6ddc41c7f8901ba324d09", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_lldp_global_module.rst", + "name": "plugins/modules/iosxr_facts.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2113514e0b6b28c86862ade07125f29756bd0cadf14ad58bf0dca9d0a0cd6546", + "chksum_sha256": "4c6cb58faec6618afd00f86a150b6c988ec45eee37374b68dba4ebea2fbad540", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst", + "name": "plugins/modules/iosxr_acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a9d5ff6354e66e042faec76da89d8c8e502125f7d1c975cf7552b84dbad7aa37", + "chksum_sha256": "275c9849b7acc55cbe09e5e0f0ad131d5a5d353b81afae668cb09bf3790adf33", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_logging_global_module.rst", + "name": "plugins/modules/iosxr_logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "27473b6b1abbde226b1639934e5c09c45703aab1b5e46b139eb0428a771c4ecb", + "chksum_sha256": "1077c960c02152e04c430f7cd1d297fb13561bdc69f57487aa1f5f1a4812c476", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_logging_module.rst", + "name": "plugins/modules/iosxr_acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e46bff25de13a5e61c0a4f595e842326d1aa914486ebc6802e73144f63f07fe1", + "chksum_sha256": "bc4cd90965c93b844a1f92b190ee7d7b04a9f9db28a3ffe06827f5019e37aace", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_netconf.rst", + "name": "plugins/modules/iosxr_ping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0c190697f6cc86e85c2b5466ee2dfdf6e9d7eaa1ab5c6c2147fbd4fd0938b26a", + "chksum_sha256": "6ef89908231a1608a01697d48679fa84d68ec3c15b92578121f404f992f261cb", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_netconf_module.rst", + "name": "plugins/modules/iosxr_l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c0d51a2477850b2fe3dacdf3a7a86e3a66d83491ee38884d3227bb0981eaf02", + "chksum_sha256": "8c1d442ca73d5a3659890b219f3644d6f6017a1741a774003e21f8f9d93fdaec", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_ntp_global_module.rst", + "name": "plugins/modules/iosxr_snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "637d9c414fca5934de7e0da7d85b7ea7c0cdaee940c6e8319b062043ecdc6ba6", + "chksum_sha256": "61a2f4ec4c96619ce0f0a2a17e16c4b60782521b37c092a1d9e902e59b21743b", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst", + "name": "plugins/modules/iosxr_bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5f97860d6820daf585c37ae719cd2fcbb9bb1c4e05b585a7910c6838ba65db38", + "chksum_sha256": "4f4ad72baa6d8b68c826b6847e8a596f71412bc4df59baedadfa8442886de4b3", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_ospfv2_module.rst", + "name": "plugins/modules/iosxr_netconf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e79bf96c2fe3490fe5e9902cc8e603c1390bd8353ee9db9c0109d17f1f57945", + "chksum_sha256": "e82057821034292044e1bf88de21e27e440ab0c733dabc12538937fffb0f92c6", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_ospfv3_module.rst", + "name": "plugins/modules/iosxr_user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "46d30530029dd79e648f8192a7c8c6420f61b0059089d536f8005462e47aa23b", + "chksum_sha256": "d671a10633187ffc93ffaf4cecacc9f2075291f4c8d56507fd804cc3007e3bcd", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_ping_module.rst", + "name": "plugins/modules/iosxr_ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a3a86ad5aed7136b5e903410f4fbff2ebf126d6aed75957418e47f7ffb2cb604", + "chksum_sha256": "aa830b22d8c7b638523ce66b715e546f426f9fcde1ea6397d4fdf2475fe05610", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_prefix_lists_module.rst", + "name": "plugins/modules/iosxr_lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "60ea48a2e4d2a7f67092703647fea9a55ae95e573a007e0df307531e1a6327a0", + "chksum_sha256": "72e780af8c3b18294edbe23fd39c1a2a9d180b0866f61be108dc3e5ce40e7cf8", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_snmp_server_module.rst", + "name": "plugins/modules/iosxr_lacp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aefa4bd3bfffeb4c3ede3987d267ba40605e21ae8ac6930ab7bb3f394b46354e", + "chksum_sha256": "8a4e892df5e655246bac1268b8830f4aedabe3da7f5589cf658b88d81119e972", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_static_routes_module.rst", + "name": "plugins/modules/iosxr_ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "35b3703524d9f01886f4f064587be88094142a3508e0cc79948f33e501915d70", + "chksum_sha256": "f05278972e5a7fac3caea9d2373c1dc4c2cd13d8f686fd8fc14c46d86426e676", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_system_module.rst", + "name": "plugins/modules/iosxr_system.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "62e079e6445cafc3fce90be3cb23f0205f993b7c63e9bc30d400e61ccf31800e", + "chksum_sha256": "193c0aa18d31526387e4b0c84826661613da5ebe5dca17b66ec02e3c21f6fc82", "format": 1 }, { - "name": "docs/cisco.iosxr.iosxr_user_module.rst", + "name": "plugins/modules/iosxr_bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6ccff5ae6f5b3eaa9b0e0491a943b6b01f310bcf7bfe1d4081108eb1d37a0b23", + "chksum_sha256": "87230dbd424079c81dc5421fc16b8621e18a931b2328cb5929bda29bb561ac66", "format": 1 }, { - "name": "meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/modules/iosxr_static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8101a07f18d5eb1098681b40627c3d64b660bb767040a59f81ab7655d785b0fb", "format": 1 }, { - "name": "meta/runtime.yml", + "name": "plugins/modules/iosxr_lldp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "41432c1298a5fee3ecb86e6707a18e7930d8f14118a155b0c2ad5dad290e0bc3", + "chksum_sha256": "905708cecb534e214098bfadaf1a8c4dc3cca99969d536aa1bc0fea1d61cffb1", "format": 1 }, { - "name": "plugins", + "name": "plugins/sub_plugins", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action", + "name": "plugins/sub_plugins/grpc", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action/acl_interfaces.py", + "name": "plugins/sub_plugins/grpc/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "8003d9ffb32e5cd8ab1926463a1ff2f9443eb0566ada4a9150cbf3a82d231293", "format": 1 }, { - "name": "plugins/action/acls.py", + "name": "plugins/sub_plugins/grpc/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/banner.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "name": "plugins/sub_plugins/grpc/pb", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action/bgp.py", + "name": "plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "978c4404c6dd6bbbe494930f6aa0f8268e9d365e4e8c4cacc8a9eea40de96a41", "format": 1 }, { - "name": "plugins/action/bgp_address_family.py", + "name": "plugins/sub_plugins/grpc/pb/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/bgp_global.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "name": "plugins/doc_fragments", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action/bgp_neighbor_address_family.py", + "name": "plugins/doc_fragments/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "183557f42150c3888baca407c30a651bb6d0c70a06ac55f409b271323dfcbacf", "format": 1 }, { - "name": "plugins/action/command.py", + "name": "plugins/doc_fragments/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/config.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "name": "plugins/lookup", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action/facts.py", + "name": "plugins/lookup/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/hostname.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "name": "plugins/filter", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/action/interface.py", + "name": "plugins/filter/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/interfaces.py", + "name": "plugins/test", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/test/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/l2_interfaces.py", + "name": "plugins/module_utils", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/common/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/l3_interfaces.py", + "name": "plugins/module_utils/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/lacp.py", + "name": "plugins/module_utils/network", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/lacp_interfaces.py", + "name": "plugins/module_utils/network/iosxr", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/rm_templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "25b8c064cd99853d76b014b92f3c76a338938acf94adb3a72fa542472406b942", "format": 1 }, { - "name": "plugins/action/lag_interfaces.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "f1e960a978c09f2a52b03c805161f233eb8ceae9410cec582fac8844654c34f1", "format": 1 }, { - "name": "plugins/action/lldp_global.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "ccb3f34513a75b6eb7f2935db597bea5be13fb3e4241c5fee2ba0b1b5ead559b", "format": 1 }, { - "name": "plugins/action/lldp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "ad569ba6de7f63168a5a8b6dff50abb5fb40e8329ba52c2412408526e22a5ca9", "format": 1 }, { - "name": "plugins/action/logging.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "fac890a98ecef634dd387d338339354b7dc258f4263a5d54d3941e4acc94a17f", "format": 1 }, { - "name": "plugins/action/logging_global.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "d4e7c9a631f91d84ba1224891fe4397e69b51ba23d06c4c3469e2f8ec6b1fc2e", "format": 1 }, { - "name": "plugins/action/netconf.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/ntp_global.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "ea3917736e2a559bd42a445aba19a6995ea8667f10175ffe97a08bf503c8fbd2", "format": 1 }, { - "name": "plugins/action/ospf_interfaces.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "876b6f3b7e30fee8a44bfebeab37157ea103bca3b352d0cdc70939ef2b8861eb", "format": 1 }, { - "name": "plugins/action/ospfv2.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "6ade3f90bab09cd4105e319c9c003b9d9fc7f5a5c75b507bd3f4ec1f3f8089f3", "format": 1 }, { - "name": "plugins/action/ospfv3.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "816f210592bb1df59561a09a6e8f8d785ec92aec48bcc5f0504b3dd47440cf58", "format": 1 }, { - "name": "plugins/action/prefix_lists.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/ping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "b790e08ba0a4c1a36274554607d74f62cb773680cd8a326075694d8eee4db64c", "format": 1 }, { - "name": "plugins/action/snmp_server.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "717412153f156fc55f24bfe0247c7fe5346271d070be519e33b466ab7f3bad49", "format": 1 }, { - "name": "plugins/action/static_routes.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "d486e4deec80e5b9ea169ffc09571cc1674c4dbe2029efff4ad3cb8fe683750a", "format": 1 }, { - "name": "plugins/action/system.py", + "name": "plugins/module_utils/network/iosxr/rm_templates/prefix_lists.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "5f3032f6828fe63605f2360f996d3981b6d0677758ff33e87fc60ad2dda1f151", "format": 1 }, { - "name": "plugins/action/user.py", + "name": "plugins/module_utils/network/iosxr/iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "chksum_sha256": "f6657f778058c2d8d464841539530043d63499640944be209a90bbd886c1d55e", "format": 1 }, { - "name": "plugins/action/__init__.py", + "name": "plugins/module_utils/network/iosxr/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/action/iosxr.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", + "name": "plugins/module_utils/network/iosxr/facts", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "plugins/cliconf", + "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/cliconf/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family/bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "b24aa48cc4250d0c35970a15b79a1ebc374b3fb85ffa93ce1da93d50770faf6c", "format": 1 }, { - "name": "plugins/cliconf/iosxr.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dca75545d92b507aab889d0645affb6cb475c73d853711432a9cd6b699042a47", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/doc_fragments", + "name": "plugins/module_utils/network/iosxr/facts/static_routes", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/doc_fragments/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/static_routes/static_routes.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "d0fa9a0327c99fbf0af8fe66e68927427e0550c651bd0c20d98a0867e64e4c17", "format": 1 }, { - "name": "plugins/doc_fragments/iosxr.py", + "name": "plugins/module_utils/network/iosxr/facts/static_routes/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fe277e38c39c54e0846e4fe1e9219389f0fb94c5fb9a89c1d67b59ae8f1e7945", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/filter", + "name": "plugins/module_utils/network/iosxr/facts/prefix_lists", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/filter/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/prefix_lists/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/inventory", + "name": "plugins/module_utils/network/iosxr/facts/prefix_lists/prefix_lists.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0f5787451ba55b8bbb7d7e7bce4d4b63362f83fe13c7f6df8bacd71c26cc9e6f", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/facts/hostname", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/inventory/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/hostname/hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "778551a6d5240dc85297041639ae94c4a4d6ec0d1781f44b2527081702e62fdc", "format": 1 }, { - "name": "plugins/module_utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/module_utils/network/iosxr/facts/hostname/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network", + "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces/lldp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f4b71b3d54842146e02ab84d93e0d2616790e7039db63b04a3f6ffc618b15bca", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/lacp", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/lacp/lacp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "080864178932c583b11f29ceec1d86ba31f0f4d4751dce9d4bcdb30a4136162e", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces/acl_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/lacp/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7759ff598b56bc07a99921ff4f94cd65b96ea927ddacf27c7ae00c237dc6c9ce", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acls", + "name": "plugins/module_utils/network/iosxr/facts/ospfv2", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acls/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/ospfv2/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/acls/acls.py", + "name": "plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0bb198af8188b36cb1235a3b0e1931f4910908076a5c8c3f5fd7d877cbc038d0", + "chksum_sha256": "21d2d34be3e88000fa4c64da457b2d85dc53800d3c45583ecc02842e31916163", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family", + "name": "plugins/module_utils/network/iosxr/facts/logging_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/logging_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py", + "name": "plugins/module_utils/network/iosxr/facts/logging_global/logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7898622dfbcb1b52e1c59ded366f3a0d50ccc408905c5ff386d0c46921dfc698", + "chksum_sha256": "50e7cebaa5d2b4073eb83908be1cdc2e616b90a76a3683fe4909ca55c9fe1e6a", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_global", + "name": "plugins/module_utils/network/iosxr/facts/ospfv3", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/ospfv3/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py", + "name": "plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b04c7c908016334f27d43bb55ef4c00db2e34560b274bd9609045fe036ff2067", + "chksum_sha256": "3d9f7585ec696598b8adfbeb1d46670ea49ef94e4811fd41dd5d62cb9574460d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family", + "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family/bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "76c598a854f41b6c0b661c3b53e5f4d57577d5fe5055f67f291d92b08b612192", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "defa9de45f7e6df9abf39717b436850e6b7c28bb5aeeb4a122becf2b6517786f", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/facts", + "name": "plugins/module_utils/network/iosxr/facts/legacy", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/facts/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/legacy/base.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "3eef25f6033d14eeac6bd15f29a4da63b9096c8acb1003688f66106100da3650", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/facts/facts.py", + "name": "plugins/module_utils/network/iosxr/facts/legacy/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "be8244aad794929184f824e21f498740f90b47f810cc1ed37cd07b37f8d596e3", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/hostname", + "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/hostname/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/hostname/hostname.py", + "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "87eada9722f328072f51f75820ced43c8024a3a195d275316144ecb833b8d8e2", + "chksum_sha256": "a92bb174bb343d43cc987bc2bef2c1a213be19c0b3fc775e1220d88961a1ab4e", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/interfaces", + "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/interfaces/interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces/ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "844e1316a16a3118600072fc9204757d95ad0ed3162501085d8bac30a6e11804", + "chksum_sha256": "d04195c95a2e1ff3a77ee404f87cd42fd9483514de5b3feece08a22bdfe77724", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces/acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb4dde21c82153180088a69ef605f74a7c55cfc213f95944d7b42fbe5b088d51", + "chksum_sha256": "1bbe7d9835d9c8d883a86444d77ea71c61bf0e9b5927bd4036c880b8b1e57e52", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/lldp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/lldp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces/l3_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/lldp_global/lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e46afb2541c2aaec2fc690973b351f23ffbc3f07624616e61a7d13d57cf3798f", + "chksum_sha256": "ec3fd5ec1b45f898ae1c2ff3d3e8d51351e2b1c3e8ab821a3848530eb623a538", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp", + "name": "plugins/module_utils/network/iosxr/facts/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/facts/snmp_server", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/snmp_server/snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "095dd110baacfacf73b1c5b46462eae782157028bfdf6609ddda26c5ce87ced3", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp/lacp.py", + "name": "plugins/module_utils/network/iosxr/facts/snmp_server/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1df22c3d2db184f20b2dd1183be8a0fea2866511c64d593dc9d05cd7a2bfd4cf", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces/lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "9f3737faee14179f8265f8f1c3a2039bb32de6e6c884161801d09179a813568e", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces/lacp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9531600850e779f65072369be05a2dc142aa10b044864a5aecf72b8305afe1d9", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/acls", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/acls/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces/lag_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/acls/acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3212b99c8dc4190c1bd4fdf5b31ab6a0d0d70125bbc8c6f7b3594bd5753cb480", + "chksum_sha256": "fb7c38fda930b446242c070d0708451b1230fec8bb7029dedde3fdb2c98c1ab3", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_global", + "name": "plugins/module_utils/network/iosxr/facts/ntp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/ntp_global/ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "daff309945181af4af9bd9e063bb6a8271236a5fe810d11b95adeb9b5ff1e636", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py", + "name": "plugins/module_utils/network/iosxr/facts/ntp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "726d75bf50157754ad8ca434e460b6f7c1d7b5bbeb67d40bc07db9e571ddd3dc", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces/lag_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "0de675b8a438054c38af32059948d99e9aa80584cac4d3a862096c5733f8b8d1", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces/lldp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1b762584a0f4d5b03103e4aa1d901bce30408fa11fce113cbc7941929490b852", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/logging_global", + "name": "plugins/module_utils/network/iosxr/facts/bgp_templates", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/logging_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_templates/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/logging_global/logging_global.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_templates/bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c5f27a3ff02a06978bf14912e0489587f9cbf17336065ed046ae66d020e98ea4", + "chksum_sha256": "ae637abb3b5e35bf8b0c7b9992af8918fe0dcd2086d99c193bc7242f765faa07", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ntp_global", + "name": "plugins/module_utils/network/iosxr/facts/interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ntp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "9a6f4b29fc202cb7c343598c50d0de15708207c98e723bea1333bf3451877ff2", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ntp_global/ntp_global.py", + "name": "plugins/module_utils/network/iosxr/facts/interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b801e133d8d321e12dc7289bf1ccd9992d1d7502e683a2cd5d62ef4463ae784b", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces", + "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces/ospf_interfaces.py", + "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "20b179841cf2cebbea24a8bda72e5edd74be5419bd476ca734567aa4499cbf52", + "chksum_sha256": "20944d6b40f8e0edb1fde36d862f69a34350dbe3a4277270dfd8b7fcaf8cac0e", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv2", + "name": "plugins/module_utils/network/iosxr/facts/bgp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv2/__init__.py", + "name": "plugins/module_utils/network/iosxr/facts/bgp_global/bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "edf76eb5396aa5b5fd6bdc185a974f51a6ceae7020fd28b5a3cd1fd1a2a99ef4", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/facts/bgp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv2/ospfv2.py", + "name": "plugins/module_utils/network/iosxr/facts/facts.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "41814b7565d7466df54c6a3163afd464f50ebadddc82be1d1fb82d117bb47ccb", + "chksum_sha256": "be87e4de33120eb7c34ddae26f81cce6b290a2031e890782af82ab5200bb953a", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv3", + "name": "plugins/module_utils/network/iosxr/argspec", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv3/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "cb06c342c63aebbc811d95083567b4a051d9aa5a2f8c2fa952931e7a90777e5d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ospfv3/ospfv3.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fda0edcc4ebdc1b2da68bc918fc9a72551c1f266dffe0999faab28934cca882d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ping", + "name": "plugins/module_utils/network/iosxr/argspec/static_routes", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ping/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/static_routes/static_routes.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "dc45db620ae60f0508046c12e231a33435e8d4b5433be6b778965e615173698d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/ping/ping.py", + "name": "plugins/module_utils/network/iosxr/argspec/static_routes/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3a9e672170633f82bf0c1323bc7431b6d88eff5f096c40fdfbed7f851d95ce7c", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { @@ -1149,479 +1317,521 @@ "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/snmp_server", + "name": "plugins/module_utils/network/iosxr/argspec/hostname", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/snmp_server/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/hostname/hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "87eada9722f328072f51f75820ced43c8024a3a195d275316144ecb833b8d8e2", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/snmp_server/snmp_server.py", + "name": "plugins/module_utils/network/iosxr/argspec/hostname/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e8abca564d7d892efe70b5aaa391567175176cd5494cd1238029deffcc4174d", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/static_routes", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/static_routes/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/static_routes/static_routes.py", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_interfaces/lldp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dc45db620ae60f0508046c12e231a33435e8d4b5433be6b778965e615173698d", + "chksum_sha256": "1b762584a0f4d5b03103e4aa1d901bce30408fa11fce113cbc7941929490b852", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/argspec/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/lacp/lacp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a5927bb24072718bf3589f203dc59f01a12d588543b2c1b6073cae257a01a2af", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/lacp/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config", + "name": "plugins/module_utils/network/iosxr/argspec/ospfv2", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acl_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/ospfv2/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/ospfv2/ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "41814b7565d7466df54c6a3163afd464f50ebadddc82be1d1fb82d117bb47ccb", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/logging_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acl_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/logging_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/logging_global/logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "26b0b473826e35e9f9ae20509e7c5f7bc00f095b3f487138b018a945291b0174", + "chksum_sha256": "c5f27a3ff02a06978bf14912e0489587f9cbf17336065ed046ae66d020e98ea4", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acls", + "name": "plugins/module_utils/network/iosxr/argspec/ospfv3", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acls/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/ospfv3/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/acls/acls.py", + "name": "plugins/module_utils/network/iosxr/argspec/ospfv3/ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "415b93951960261dd3456ec93a42319f264e3b901bd32dd37ee7ff0390478b31", + "chksum_sha256": "fda0edcc4ebdc1b2da68bc918fc9a72551c1f266dffe0999faab28934cca882d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_address_family", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "0cd93cff30a775adcc07eaf0c792817bfe1562d83777cd6d6956a81e01750739", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_address_family/bgp_address_family.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cf952b8205f5fb618712816947770ae4b88100b8a5206a5618b0403d2a17ad16", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_global", + "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py", + "name": "plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5051fd6b554a46f549c8d22ede3527d935641ab085b86435bc72fae697c86519", + "chksum_sha256": "3ea8177f270f8a430fa3e62d2589406a854d350b1c732cf8ca27643c102a1c68", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family", + "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family/bgp_neighbor_address_family.py", + "name": "plugins/module_utils/network/iosxr/argspec/ospf_interfaces/ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cd69a43075b1e4572a1bb830d8efc31ba218141246e16cf7154725bc608e2da6", + "chksum_sha256": "20b179841cf2cebbea24a8bda72e5edd74be5419bd476ca734567aa4499cbf52", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/hostname", + "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/hostname/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/hostname/hostname.py", + "name": "plugins/module_utils/network/iosxr/argspec/acl_interfaces/acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2baccb28e2ac374f4ff89eecd211fbfd3bb72b535ca95d424ce60f494eb47f5d", + "chksum_sha256": "7759ff598b56bc07a99921ff4f94cd65b96ea927ddacf27c7ae00c237dc6c9ce", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/interfaces/interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5ff0799596463e9ce7007e5aa2a859a9c5d4ae8c279a2359d3155c3c1141ef08", + "chksum_sha256": "c698527971eb9394265200984d070719a047cd3c3c1443ab385510e99d39f74b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l2_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/argspec/snmp_server", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l2_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/snmp_server/snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "6e8abca564d7d892efe70b5aaa391567175176cd5494cd1238029deffcc4174d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/snmp_server/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "099a829351ae42c5d2fd49d005cfc1a37fcb4139c9d39f02a1970b5292f77601", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l3_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/ping", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l3_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/ping/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/ping/ping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "893391da0d03d3b5f1fbca28b2e2a26cc04ff58b20dabb2397fac76932942340", + "chksum_sha256": "3a9e672170633f82bf0c1323bc7431b6d88eff5f096c40fdfbed7f851d95ce7c", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp", + "name": "plugins/module_utils/network/iosxr/argspec/facts", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/facts/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp/lacp.py", + "name": "plugins/module_utils/network/iosxr/argspec/facts/facts.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "96a0796cdae53faae00b33340e70a0ba48de53b235f6ca563b0281133acf4f81", + "chksum_sha256": "be8244aad794929184f824e21f498740f90b47f810cc1ed37cd07b37f8d596e3", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces/lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "9531600850e779f65072369be05a2dc142aa10b044864a5aecf72b8305afe1d9", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces/lacp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/lacp_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "72f8f047d8c9bc3795d281b6b3daf88886c6b12b5a0a4d30898daf923c92d4ec", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lag_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/acls", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lag_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/acls/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lag_interfaces/lag_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/acls/acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e81b0808b1dd9667a81e09a4c39a1d9d2ae30c9d4848385d5222a801c6b9a9dc", + "chksum_sha256": "0bb198af8188b36cb1235a3b0e1931f4910908076a5c8c3f5fd7d877cbc038d0", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_global", + "name": "plugins/module_utils/network/iosxr/argspec/ntp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/ntp_global/ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "b801e133d8d321e12dc7289bf1ccd9992d1d7502e683a2cd5d62ef4463ae784b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py", + "name": "plugins/module_utils/network/iosxr/argspec/ntp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d84a822e57ebe8065abbe6fae2a4e5ffff02f80b650ccbe7c0c24df535d750cd", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces/lag_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "3212b99c8dc4190c1bd4fdf5b31ab6a0d0d70125bbc8c6f7b3594bd5753cb480", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces/lldp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/lag_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d43c06ced71873fc30c4be7d4f919e2c14207452bb1a365620516cf746b9fbcf", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/logging_global", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_templates", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/logging_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_templates/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/logging_global/logging_global.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_templates/bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "76f0f80af410c23da0d183afdfcd4963427ac59a83661fb26cd6b6dce320c442", + "chksum_sha256": "83017eb412cf98eadb8eaefdf7460d6a39f7a634c36dd756b2634a02c8b73dab", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ntp_global", + "name": "plugins/module_utils/network/iosxr/argspec/interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ntp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/interfaces/interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "844e1316a16a3118600072fc9204757d95ad0ed3162501085d8bac30a6e11804", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ntp_global/ntp_global.py", + "name": "plugins/module_utils/network/iosxr/argspec/interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4795017ccd58af737eddbd6554da38a0ddb5573f32dcb098a9d702120c2e4f72", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces", + "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py", + "name": "plugins/module_utils/network/iosxr/argspec/l3_interfaces/l3_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b75e4e77ddc6c397561c1c39fa7aa6608606ba2d815b2fd75f0b8ec9004162b8", + "chksum_sha256": "e46afb2541c2aaec2fc690973b351f23ffbc3f07624616e61a7d13d57cf3798f", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv2", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv2/__init__.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "93b1c8d33c5d79a7efac59125f8af5ecca0009cf051810a1aac6234d38bdfaef", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py", + "name": "plugins/module_utils/network/iosxr/argspec/bgp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "531fb7ad8a7a997633095cb01ffc514865381c45d24e36d17eb553c391becf63", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv3", + "name": "plugins/module_utils/network/iosxr/config", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv3/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_address_family", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/config/bgp_address_family/bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "cf952b8205f5fb618712816947770ae4b88100b8a5206a5618b0403d2a17ad16", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9645e6c4ebb0c6737b9e83d032d2a991dd339628795ebd014c8f36173e89400a", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ping", + "name": "plugins/module_utils/network/iosxr/config/static_routes", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ping/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/static_routes/static_routes.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "4e18a21b3b395e6a88135b71f877f41b66e9aeff88c534b832f45419817a8de1", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/ping/ping.py", + "name": "plugins/module_utils/network/iosxr/config/static_routes/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1eaf14a95afbb7d3c5b5d6f8f80f79e6b95c299997261347b6da4814fe61059f", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { @@ -1646,1480 +1856,1522 @@ "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/snmp_server", + "name": "plugins/module_utils/network/iosxr/config/hostname", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/snmp_server/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/hostname/hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "2baccb28e2ac374f4ff89eecd211fbfd3bb72b535ca95d424ce60f494eb47f5d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py", + "name": "plugins/module_utils/network/iosxr/config/hostname/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95531b7d2865c92a10c0dea0f849b70cf3763059762dc5e72d4a8e73c04070ce", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/static_routes", + "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/static_routes/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/static_routes/static_routes.py", + "name": "plugins/module_utils/network/iosxr/config/lldp_interfaces/lldp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6d1d28eec060a90c9424fb9fdb4f9668ab120e567643f51bfd64215f292e00b8", + "chksum_sha256": "d43c06ced71873fc30c4be7d4f919e2c14207452bb1a365620516cf746b9fbcf", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/config/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/config/lacp/lacp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "5fb11d241da71d244fcc386e28fd4102d6b632c05f8f55f6259e8d9d72651048", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/module_utils/network/iosxr/config/lacp/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces", + "name": "plugins/module_utils/network/iosxr/config/ospfv2", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/ospfv2/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acl_interfaces/acl_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1bbe7d9835d9c8d883a86444d77ea71c61bf0e9b5927bd4036c880b8b1e57e52", + "chksum_sha256": "531fb7ad8a7a997633095cb01ffc514865381c45d24e36d17eb553c391becf63", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acls", + "name": "plugins/module_utils/network/iosxr/config/logging_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acls/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/logging_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/acls/acls.py", + "name": "plugins/module_utils/network/iosxr/config/logging_global/logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fb7c38fda930b446242c070d0708451b1230fec8bb7029dedde3fdb2c98c1ab3", + "chksum_sha256": "781ef51a098b082d8e3d5cde9be910382c6acf0506270063e604d04a7237129b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family", + "name": "plugins/module_utils/network/iosxr/config/ospfv3", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/ospfv3/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_address_family/bgp_address_family.py", + "name": "plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b24aa48cc4250d0c35970a15b79a1ebc374b3fb85ffa93ce1da93d50770faf6c", + "chksum_sha256": "b21b6481a508c8684ef679bb101893df292ff9b04af0b18b5cedaf3d2132ce3f", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_global", + "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family/bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "cd69a43075b1e4572a1bb830d8efc31ba218141246e16cf7154725bc608e2da6", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_global/bgp_global.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_neighbor_address_family/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "edf76eb5396aa5b5fd6bdc185a974f51a6ceae7020fd28b5a3cd1fd1a2a99ef4", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family", + "name": "plugins/module_utils/network/iosxr/config/l2_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/l2_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/bgp_neighbor_address_family/bgp_neighbor_address_family.py", + "name": "plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "76c598a854f41b6c0b661c3b53e5f4d57577d5fe5055f67f291d92b08b612192", + "chksum_sha256": "0a9eba4f5bf6d26f534ff9919152e939ce0cc21b8501a0d2df2b61b8890163ee", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/hostname", + "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/hostname/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/hostname/hostname.py", + "name": "plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "778551a6d5240dc85297041639ae94c4a4d6ec0d1781f44b2527081702e62fdc", + "chksum_sha256": "b75e4e77ddc6c397561c1c39fa7aa6608606ba2d815b2fd75f0b8ec9004162b8", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/interfaces", + "name": "plugins/module_utils/network/iosxr/config/acl_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/acl_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a9ed1c1a4179851afb79a4c098967f70546f8fc68b5aaa3af663909d20163a7f", + "chksum_sha256": "26b0b473826e35e9f9ae20509e7c5f7bc00f095b3f487138b018a945291b0174", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces", + "name": "plugins/module_utils/network/iosxr/config/lldp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/lldp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6d8a9af1ab24a3873a181cf70fc9f08c53793b704a0b10af201485d56dc8d8fc", + "chksum_sha256": "2b5809b893d79700a7ee8e10c0e36fc8c10ba66a4008abf07fc2e2548a360100", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces", + "name": "plugins/module_utils/network/iosxr/config/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/iosxr/config/snmp_server", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "e6aa8e4aaf697e464a933218032e82e3c0dc0f62308ba5d38c3d06ec154708af", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/snmp_server/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ac19c43889d3cf7ebeaf502e908344ac90ad36c17d114a404157536b638d38c0", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp", + "name": "plugins/module_utils/network/iosxr/config/ping", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/ping/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp/lacp.py", + "name": "plugins/module_utils/network/iosxr/config/ping/ping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "080864178932c583b11f29ceec1d86ba31f0f4d4751dce9d4bcdb30a4136162e", + "chksum_sha256": "7087eb892779e8640ca52189aedce205150066e1b661949130004359bf833f9b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces", + "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces/lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "72f8f047d8c9bc3795d281b6b3daf88886c6b12b5a0a4d30898daf923c92d4ec", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lacp_interfaces/lacp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/lacp_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f3737faee14179f8265f8f1c3a2039bb32de6e6c884161801d09179a813568e", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces", + "name": "plugins/module_utils/network/iosxr/config/acls", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/acls/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lag_interfaces/lag_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/acls/acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0de675b8a438054c38af32059948d99e9aa80584cac4d3a862096c5733f8b8d1", + "chksum_sha256": "1b6c923aacec2f03fd8efd5566f5eb388817dafbe91a709a17286cfba77acfbb", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/legacy", + "name": "plugins/module_utils/network/iosxr/config/ntp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/legacy/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/ntp_global/ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "4795017ccd58af737eddbd6554da38a0ddb5573f32dcb098a9d702120c2e4f72", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/legacy/base.py", + "name": "plugins/module_utils/network/iosxr/config/ntp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "83e7316ffb3eb2c5bf4f53529b78dc1d579babdc735a3b84cbd6df7577012d05", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_global", + "name": "plugins/module_utils/network/iosxr/config/lag_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/lag_interfaces/lag_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "e81b0808b1dd9667a81e09a4c39a1d9d2ae30c9d4848385d5222a801c6b9a9dc", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_global/lldp_global.py", + "name": "plugins/module_utils/network/iosxr/config/lag_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec3fd5ec1b45f898ae1c2ff3d3e8d51351e2b1c3e8ab821a3848530eb623a538", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces", + "name": "plugins/module_utils/network/iosxr/config/bgp_templates", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_templates/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/lldp_interfaces/lldp_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_templates/bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f4b71b3d54842146e02ab84d93e0d2616790e7039db63b04a3f6ffc618b15bca", + "chksum_sha256": "78761e9389083d5e2ad18725a37721ba994404b29e2f5fef0f83d5e626ed7eb7", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/logging_global", + "name": "plugins/module_utils/network/iosxr/config/interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/logging_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/interfaces/interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "119d56ea0c0849feb466022d5905927a19c96299fcb1164078eb7481b26b1d59", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/logging_global/logging_global.py", + "name": "plugins/module_utils/network/iosxr/config/interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "50e7cebaa5d2b4073eb83908be1cdc2e616b90a76a3683fe4909ca55c9fe1e6a", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ntp_global", + "name": "plugins/module_utils/network/iosxr/config/l3_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ntp_global/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/l3_interfaces/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ntp_global/ntp_global.py", + "name": "plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "daff309945181af4af9bd9e063bb6a8271236a5fe810d11b95adeb9b5ff1e636", + "chksum_sha256": "61ed9c696fa29d39b6efcb385d4d9e265370abf60a7b74116072c9e8cc715dfe", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces", + "name": "plugins/module_utils/network/iosxr/config/bgp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces/__init__.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "d9e3408e81e0d8e65e9c623ec4262089393937bd354fcd42d1fa6cb0bfb88f0b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospf_interfaces/ospf_interfaces.py", + "name": "plugins/module_utils/network/iosxr/config/bgp_global/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d04195c95a2e1ff3a77ee404f87cd42fd9483514de5b3feece08a22bdfe77724", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv2", + "name": "plugins/module_utils/network/iosxr/utils", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv2/__init__.py", + "name": "plugins/module_utils/network/iosxr/utils/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py", + "name": "plugins/module_utils/network/iosxr/utils/utils.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "abe035284ccfab4917e118814dfc87825e660dc0b256aacc60e0977306470bf4", + "chksum_sha256": "c445382425553068e00713ecd367720b9b4d4081558e4d8f5cb35c96d511fea9", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv3", + "name": "plugins/action", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv3/__init__.py", + "name": "plugins/action/bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py", + "name": "plugins/action/lacp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "41def6fe3a586951e1e6e337dd399ef28e2d8c199a3cd6ef083e48c38949e36f", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/prefix_lists", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/lag_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/prefix_lists/__init__.py", + "name": "plugins/action/user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/prefix_lists/prefix_lists.py", + "name": "plugins/action/interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0f5787451ba55b8bbb7d7e7bce4d4b63362f83fe13c7f6df8bacd71c26cc9e6f", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/snmp_server", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/bgp_address_family.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/snmp_server/__init__.py", + "name": "plugins/action/bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/snmp_server/snmp_server.py", + "name": "plugins/action/system.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "095dd110baacfacf73b1c5b46462eae782157028bfdf6609ddda26c5ce87ced3", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/static_routes", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/static_routes/__init__.py", + "name": "plugins/action/netconf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/static_routes/static_routes.py", + "name": "plugins/action/hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0fa9a0327c99fbf0af8fe66e68927427e0550c651bd0c20d98a0867e64e4c17", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/__init__.py", + "name": "plugins/action/lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/facts/facts.py", + "name": "plugins/action/logging.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "536ade1ead1d1f0d52df52f9a7d097519eaadc8ec5df2f3a327c9f9982ff969f", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/iosxr.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/ntp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/snmp_server.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/bgp", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/bgp/__init__.py", + "name": "plugins/action/interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/bgp/address_family.py", + "name": "plugins/action/ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7591f09988f03d98980a182547f72f2e93ca16a8ec60ff1ab5f3f24df3b16a78", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/bgp/neighbors.py", + "name": "plugins/action/bgp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3daf0de77eb65a5a470d98ff6a9e3c924b9fac635674c1cb5048bc480370bb99", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/bgp/process.py", + "name": "plugins/action/l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "af15497c29725bdaf112a314b8bfcb845c3e4ad555a36d5b9c4ccd7055a26e04", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/config/__init__.py", + "name": "plugins/action/command.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/cli/__init__.py", + "name": "plugins/action/acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/__init__.py", + "name": "plugins/action/ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/module.py", + "name": "plugins/action/config.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f51a0bc3512fffdfe9dc0275f4240e8ed86a9fc916a99ae7ed5f6d9895251ef", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/providers/providers.py", + "name": "plugins/action/acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "01fdfd289b307516bf3463b384cfa384928c91701a2b0b8120f0b5b926c67dea", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "plugins/action/l3_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/__init__.py", + "name": "plugins/action/ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/acl_interfaces.py", + "name": "plugins/action/lldp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6ade3f90bab09cd4105e319c9c003b9d9fc7f5a5c75b507bd3f4ec1f3f8089f3", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py", + "name": "plugins/action/logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d41e11ae947788fd345964ab01f5f40f156d27413e545d83f4217d12eab0fbe6", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_global.py", + "name": "plugins/action/prefix_lists.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eef89c29bcbb6e12353fdc7e9b4d1aaa5770eb223a14562ff94f46d94a215771", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/bgp_neighbor_address_family.py", + "name": "plugins/action/banner.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ccb3f34513a75b6eb7f2935db597bea5be13fb3e4241c5fee2ba0b1b5ead559b", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/hostname.py", + "name": "plugins/action/facts.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad569ba6de7f63168a5a8b6dff50abb5fb40e8329ba52c2412408526e22a5ca9", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/logging_global.py", + "name": "plugins/action/lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d486e4deec80e5b9ea169ffc09571cc1674c4dbe2029efff4ad3cb8fe683750a", + "chksum_sha256": "a03a1c33b41d1f37a93f576495b9755602337fe3b3014893847f232b37fd807d", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/ntp_global.py", + "name": "test-requirements.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fac890a98ecef634dd387d338339354b7dc258f4263a5d54d3941e4acc94a17f", + "chksum_sha256": "67ac8fa83eab8c43a702d5aa224225a1c5ff1e4de72df613c63cf60398e51058", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/ospf_interfaces.py", + "name": "tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/sanity", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.9.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "717412153f156fc55f24bfe0247c7fe5346271d070be519e33b466ab7f3bad49", + "chksum_sha256": "158e0096bade515d4b5ffdf147a7d68dc5533c6bb8facd1e079639e7e49d9cfb", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/ospfv2.py", + "name": "tests/sanity/ignore-2.13.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c7d243053b0a634863263852a6798bcfe9498b6a7fb98c4bab6aa442284bca55", + "chksum_sha256": "8cb3b8f8fe3db0b589c4b3949ddbf715c7faa8917bc28c7d83958164dc2e9678", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/ospfv3.py", + "name": "tests/sanity/ignore-2.11.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c5a5bf8da2cc8a49623459260917eae11575714a1be8c76c2f7c436bdf21332", + "chksum_sha256": "a78ebdfd69db8e98d3c61a6296c6b69e1a854edff052dc62a418ee0b4f0c2f48", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/ping.py", + "name": "tests/sanity/ignore-2.10.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b790e08ba0a4c1a36274554607d74f62cb773680cd8a326075694d8eee4db64c", + "chksum_sha256": "f5883f3880f187de0b2e7bcfd12f602d51ce7d2e5ce8b7950bf6be9b54625ea0", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/prefix_lists.py", + "name": "tests/sanity/ignore-2.14.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5f3032f6828fe63605f2360f996d3981b6d0677758ff33e87fc60ad2dda1f151", + "chksum_sha256": "e0874c9664e754bdf0781fc3ab4189276f92a38ed1ebd1c35c88063ee3b4badc", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/rm_templates/snmp_server.py", + "name": "tests/sanity/ignore-2.17.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d4e7c9a631f91d84ba1224891fe4397e69b51ba23d06c4c3469e2f8ec6b1fc2e", + "chksum_sha256": "4f6ecb77dad740fd70c0551acbed97a8df654127247051c541b091b07d1c415b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/utils", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/sanity/ignore-2.16.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4f6ecb77dad740fd70c0551acbed97a8df654127247051c541b091b07d1c415b", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/utils/__init__.py", + "name": "tests/sanity/ignore-2.12.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "02023c72751a2b4b25bba12df7722b2546c2be0af2a2279ccccb43845bbf27b7", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/utils/utils.py", + "name": "tests/sanity/ignore-2.15.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "63a337e7ce34c3eaa14868b9da7234f2ca872b3dfde1bd70daa3476b4b5e38b5", + "chksum_sha256": "e0874c9664e754bdf0781fc3ab4189276f92a38ed1ebd1c35c88063ee3b4badc", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/__init__.py", + "name": "tests/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/module_utils/network/iosxr/iosxr.py", + "name": "tests/config.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6cc7d8fbd272a15e454b0072ea9cc07ea98da90ebd522b48d8034f18e518f227", + "chksum_sha256": "de5087316490411841c67aa3307cfdd3acaea09875c9b4dee6852bca7c120764", "format": 1 }, { - "name": "plugins/module_utils/network/__init__.py", + "name": "tests/unit", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/requirements.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "49ba996dc4735c3463e9af561344346dfae14bcc1a68096ce78364b377f0df1f", "format": 1 }, { - "name": "plugins/module_utils/__init__.py", + "name": "tests/unit/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules", + "name": "tests/unit/mock", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/modules/__init__.py", + "name": "tests/unit/mock/vault_helper.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "55bd0e924dcc22d050612c944bff0ef745e51faac9260dce9b9b2018c4c8a661", + "format": 1 + }, + { + "name": "tests/unit/mock/__init__.py", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/iosxr_acl_interfaces.py", + "name": "tests/unit/mock/procenv.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "58f3a177aa3821b067fa9176fe424694942b4eba9c95e4037e56338d5475f666", + "chksum_sha256": "8355a91c013778f8b70896222e8223d67b743fd8ba2bf541f4ea4d7d460b01ef", "format": 1 }, { - "name": "plugins/modules/iosxr_acls.py", + "name": "tests/unit/mock/loader.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0f98019bef6553008b62d70c33d3d360dd8d553bbdd9d2d1faeea67b71be99e7", + "chksum_sha256": "2343d1f644250d4b616f0bf0a826fdee8fe306243d8412d44dd0e033352b262b", "format": 1 }, { - "name": "plugins/modules/iosxr_banner.py", + "name": "tests/unit/mock/yaml_helper.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1eafddd528fb04e7db045a173d85bca109d43f500bbfbd4ed6f994286becf434", + "chksum_sha256": "134eef238c83a9611799871b743e49e9bfbcd8bdddf2cc6a7bf69fd1000345b3", "format": 1 }, { - "name": "plugins/modules/iosxr_bgp.py", + "name": "tests/unit/mock/path.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "953c0ab93143831112570272f1cc82ce641ef0730c9db55e2417490948f6bd29", + "chksum_sha256": "cb57942afe0176fd422c5d6575f6b0bdbbd65d6293fe9709629b43febde81bef", "format": 1 }, { - "name": "plugins/modules/iosxr_bgp_address_family.py", + "name": "tests/unit/modules", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/modules/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "149e4838459d48c6f20f25162c52c4f9ece77b1ec0f116e1d01eeceac8b63de3", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/iosxr_bgp_global.py", + "name": "tests/unit/modules/conftest.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0f5b06894f165daeed41d742cea44176062524ab26ec9a63f6a536380211fb5", + "chksum_sha256": "e0ae70fa7c2a5e56d7f02a47c3602398cff60c8eb021772ac59a76df2a234048", "format": 1 }, { - "name": "plugins/modules/iosxr_bgp_neighbor_address_family.py", + "name": "tests/unit/modules/utils.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f18d7ef7fc2d8a1f3b29d71d5c7f92c20736ea4bfb811e13f1b954d741b91f9c", + "chksum_sha256": "28eb2c4f6e6e313a757a627b1f895640d085503b0c65cbca688e55d8679a45de", "format": 1 }, { - "name": "plugins/modules/iosxr_command.py", + "name": "tests/unit/modules/network", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/modules/network/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0faddd0235f6be9901ef7e182c0a5a7953b11f8e604807e9ea7f3f496e3ae1d9", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/iosxr_config.py", + "name": "tests/unit/modules/network/iosxr", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8ba493900c65a3c6e55aa465da2eea6d4758b743e3217365ef0a627a02fb2bdd", + "chksum_sha256": "f6c32855b7994966c3f0d9fe82b64d5da43c752733ad6d56ef317a9f589d484e", "format": 1 }, { - "name": "plugins/modules/iosxr_facts.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_lacp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5bf618cbd9f7d61ae741137f234c616e9ad469ebc8ac9e58afe4e74815370720", + "chksum_sha256": "2b12a50fc121b717616624ff7fc723da7e7b0763020c601f6e15efdaa882e14c", "format": 1 }, { - "name": "plugins/modules/iosxr_hostname.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_system.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2a3651b8708b41f2641c9fc7b458edb63442e5cfc7c42b192c99cd63fa1c0662", + "chksum_sha256": "18ca4af2bfd36878d3dcc62621e3ac8867ed6bd633cb0eb67b9a8c6cd042e827", "format": 1 }, { - "name": "plugins/modules/iosxr_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_templates.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "61bd3739b34e57dec1741fa4543109d03ebd7f4782c46ab0a8ebf58b0838633f", + "chksum_sha256": "06b203f1f68645ccb42a0209f60daefa26a2772027c6ec7d81ff0279ccdd2287", "format": 1 }, { - "name": "plugins/modules/iosxr_l2_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_prefix_lists.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a4f2e8ce763c265c0ffd3675f19b7cd7b8af4d5e6ed13994422ef80031b71566", + "chksum_sha256": "ac76602c2d3f50846008443db4ccfa0e6d860026c8a4fece9d1eb314826f6a27", "format": 1 }, { - "name": "plugins/modules/iosxr_l3_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aa957c82a430b7593e70bf32f84f59428c5a566dede8cb95acc63deb5cccb58a", + "chksum_sha256": "b0b8f75d7702691fda578c450ab02ae3b7a82ed7618b118eff602993dbe27678", "format": 1 }, { - "name": "plugins/modules/iosxr_lacp.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c64ba11c63a917c02c7385119f5434f924bce848e61760dc231d7df23ce5a3e1", + "chksum_sha256": "1a48bb138dd97608d6ed2fe493f87712a857546e88afde6d5a3e0e72e28ddd9b", "format": 1 }, { - "name": "plugins/modules/iosxr_lacp_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_config.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6c1035ebdccb9bbe4ff94db0ddad6a873958c6b73994fac67597907001d6e3b0", + "chksum_sha256": "f4c979c923fc77ac99724a0e652ca77888ee74c2f8620fb1f87622b8d77a6aea", "format": 1 }, { - "name": "plugins/modules/iosxr_lag_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fc5507ecbfe4e95c7fd41a08cdfd0765f654cbc9362d41879b2d71b9bfd0063f", + "chksum_sha256": "029def7ced9274ddb6ffa947069e9b7f4cb67a481822387cf0ed13b79b5f3632", "format": 1 }, { - "name": "plugins/modules/iosxr_lldp_global.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_lldp_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43b6e8f1df27c6a830ad0b0bafdb91a8fc22713e3f92e85fa8ac1486d06a7c05", + "chksum_sha256": "51ec0015ee4e9ad9303753f8ea77c9e4de1f1bd1108e5d3f45d878282e62ef2b", "format": 1 }, { - "name": "plugins/modules/iosxr_lldp_interfaces.py", + "name": "tests/unit/modules/network/iosxr/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fcb3b13cc37cd47f1e9ab53df61eed2ec50b273b84f4cf3e78fc31542cd809c5", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "plugins/modules/iosxr_logging.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_neighbor_address_family.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a44ff4de2f9960802b92561e541f0816ed6e04bdadf2c3bb0d65a1f117d737bf", + "chksum_sha256": "d79eaea2cf9e49a0f5459a044b8017451294cc841e1744632511511a2e7e2102", "format": 1 }, { - "name": "plugins/modules/iosxr_logging_global.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d5592dc79f6fec307f80d11fd388bc27c77b1dc17ae29c9d2d33661b227c8bc7", + "chksum_sha256": "40ffd132d0493144e4355bedf9abfeed11ac6856f166454f4e34469eace23dd6", "format": 1 }, { - "name": "plugins/modules/iosxr_netconf.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_snmp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e82057821034292044e1bf88de21e27e440ab0c733dabc12538937fffb0f92c6", + "chksum_sha256": "2f4639f4ce6651e4726f86fd0c52a432ce6a7398139f13531d7cf7f003923c3b", "format": 1 }, { - "name": "plugins/modules/iosxr_ntp_global.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_ntp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "51695cd2fa344f4b72f687b117436f78d358a8b66a7a3036579ddb10230ce528", + "chksum_sha256": "2f3f86a923d260fd853c936a01615c9626f63fe702759023143e80d2e169a24b", "format": 1 }, { - "name": "plugins/modules/iosxr_ospf_interfaces.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_command.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "617cd5f2f794fd9a7adb1b7f2512013202cade497e06e63579f7cb12d448cf5d", + "chksum_sha256": "f331cdaacfd4dae2f1efadeb247d7e38c8266cf3887c2550e6132f82c4afd9ea", "format": 1 }, { - "name": "plugins/modules/iosxr_ospfv2.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_utils.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f6564141a364141387a46618b0bd6eedadc39c47e78b24e4799095ba27bd6ed0", + "chksum_sha256": "4d83cdd234712c9b7e4335f30089919d5e22887f7868d6213f8247f64f8b44de", "format": 1 }, { - "name": "plugins/modules/iosxr_ospfv3.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8d6c1070563cc3a78db38ce4f224008625122bf7edef105978ed4245b6f618f3", + "chksum_sha256": "22382fff971a2ef07e1ab7cb5fd0be7be02b4ef61d4ae226edd9dc32a3d1b550", "format": 1 }, { - "name": "plugins/modules/iosxr_ping.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6ef89908231a1608a01697d48679fa84d68ec3c15b92578121f404f992f261cb", + "chksum_sha256": "87bcc3b439fe7a4d2166355b970e6bbd4ec1fd4dd11fecff65259938ed15fb4b", "format": 1 }, { - "name": "plugins/modules/iosxr_prefix_lists.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_lacp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1f99f4dd9a3ae3d8e8121e50538ca755fdb88b19aad73d69f9e1aa2be096ceb5", + "chksum_sha256": "3a62abd2facd0bdd05c83b5487b9e43bb14fb2b8a100202670f964b3cf928e6f", "format": 1 }, { - "name": "plugins/modules/iosxr_snmp_server.py", + "name": "tests/unit/modules/network/iosxr/test_hostname.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a60c01c9c7497f42119fb26b19f0a1d4c8ada9acbdef554230dd8252aaa7fa16", + "chksum_sha256": "674a5e683e09243e122946f5964cee3109ae4d909e192aee76cd78523ca4e480", "format": 1 }, { - "name": "plugins/modules/iosxr_static_routes.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_logging_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7e05c9442670dc8133125969d353338c57d1d17f0469686669704d3b16d85600", + "chksum_sha256": "cc84941d8983e27592dd930181b352a71f143a67aa30e0db98642cd1ba575691", "format": 1 }, { - "name": "plugins/modules/iosxr_system.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "466eb4b1e5b925cb14817ed562056cd81ce418f62607d22e7aebcd73a33bacc1", + "chksum_sha256": "4777b0df4a2e3ca72b179a9955d2d5ba8907f1b80e00f3be50699f3d8a90a61b", "format": 1 }, { - "name": "plugins/modules/iosxr_user.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_ping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1a0889a2b40128175c7faa6f21039cebf58e05bf1ad84f51831f04d19afa8e9e", + "chksum_sha256": "7b7870144513d4063568e7b3ae7b21b8e353b286252c43f7efcb3ff5f1b8e9fc", "format": 1 }, { - "name": "plugins/netconf", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/test_iosxr_n540.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "25af4a8b6f30f904cef024bfb673c553f73039ff3dc44dd31d4d5bdf5720e735", "format": 1 }, { - "name": "plugins/netconf/__init__.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_acls.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "7f5f7deb3c6e2835f74cf3eaac1f8fca7893e84117071dba2f235b42fbf681c7", "format": 1 }, { - "name": "plugins/netconf/iosxr.py", + "name": "tests/unit/modules/network/iosxr/test_iosxr_banner.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "200513666c1f6cc16bba0e8ad93ed4899aee9eb682e8de3f1ceb542b226bc4cb", + "chksum_sha256": "08ca981cb107565a78d51790ad4d9fdccf1f744b6ce5098ce101da34b0294fad", "format": 1 }, { - "name": "plugins/sub_plugins", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/test_iosxr_static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "789b96b3f9a9a76acd2cf9e2eb4a2743203b8baf72ea8872b64f095189ffb659", "format": 1 }, { - "name": "plugins/sub_plugins/grpc", + "name": "tests/unit/modules/network/iosxr/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "plugins/sub_plugins/grpc/pb", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/show_lldp", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4135607fe98acfedbef4f2d3305b4ade7e5e833130f049f310b68f32ce451c66", "format": 1 }, { - "name": "plugins/sub_plugins/grpc/pb/__init__.py", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_config_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "6fe81e446733fef4e3643a80042ab4111b9b0c927599c4b5972ecea4c18b4ffd", "format": 1 }, { - "name": "plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_l3_interface_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eaeba8ac57ca3c5972ae6508e4ac44cc68dc152fc81e812186b21f5ce5c34662", + "chksum_sha256": "50f889004120619f090c295fe5f40c5575c0a4feaed60a14d863d00bf25bd2a0", "format": 1 }, { - "name": "plugins/sub_plugins/grpc/__init__.py", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospfv3.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "8a6d31304503f7cd58289c7ab493bab726a003a69dbcfff3177f82e051180ff4", "format": 1 }, { - "name": "plugins/sub_plugins/grpc/iosxr.py", + "name": "tests/unit/modules/network/iosxr/fixtures/show_version", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1145f4aad99fa8bff8aede550661db31231d8674930e43f4c98e47031794109f", + "chksum_sha256": "089ab6658c475d1146f913b1cdee2671b46051958e2b7f562da626d327456726", "format": 1 }, { - "name": "plugins/terminal", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/show_processes_cpu___include_CPU_utilization", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c6eca4811fafb01f204de26b037fee16d63aca082ce05d57b9f0c52fb502ef66", "format": 1 }, { - "name": "plugins/terminal/__init__.py", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lldp_interfaces_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "1c4e458ac2250cfbfacd5b53e5937c792bdf09a36bf42c7d27cb5add93ffb693", "format": 1 }, { - "name": "plugins/terminal/iosxr.py", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_acl_interfaces_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "abdeee26cc0d81d4db0226a2563e979ee1ccc7104b84079cc49fe2189cafc3e4", + "chksum_sha256": "a5870ad2392bc344f5d7c254ecf5f1b5d317527c2efa346a55a3a73fb0ccd10e", "format": 1 }, { - "name": "tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lacp_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1ca4b510769bcfc42967e42d1b560e18908724b345676fb68e76571dfb84e847", "format": 1 }, { - "name": "tests/integration", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_static_routes_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6e148c74b09c0b22e87e8e55b815a0250281aa8daabde38b951b425cfbec2442", "format": 1 }, { - "name": "tests/integration/targets", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/show_lldp_neighbors_detail", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4135607fe98acfedbef4f2d3305b4ade7e5e833130f049f310b68f32ce451c66", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lldp_global_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cc8ece13d91edafdb680a275bf4c794d642f584b24963f75e91d399d26e90dce", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lacp_interfaces_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "04b1c2fbc56979e8df559dc3a499adaff452c0815be45fe4a0e2b1b74f740831", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/defaults/main.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/show_memory_summary", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "c0fedc43463c95b152254b43d741b62c704ffc82b2707b758d1294283384c4e0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/show_running-config", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "9442b8aa3e29caa5725d8968da29fa173e998d7c664c92b3ddd66a7aea76a71e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tasks/main.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_config_src.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "57d42d2e8e8b7a4b6cae566115ee42fecea077b525cace10cefc3b7dbd85f033", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_interface_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cafb0268e9f22c966719d76a2b7267d966ef98748f68cf3594ea55a3efd03945", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/show_version_brief", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e4eb1b26a35a3c5bcf1e45eab472c8d59ff0559cfbfe701cd60c17ee6d9d6957", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/fixtures", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/fixtures/parsed.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "85013bce86eea3299281d203601b99b8f56cc72e1ffe45075f6147bb5b090742", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/_populate.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr/show_running-config_hostname", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "25049f0c45154ecc9748bca191fbeb5239511e4a87cc68964b1899d9731f178b", + "chksum_sha256": "749f869982a235df56c1c7e404744c441340ff6da90dece0c8b83d63ff47e7af", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr/show_version__utility_head_-n_20", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e722e48cbcc3c0c9673c9e9a3ce674487102bc78bacfee2a11510e2039685529", + "chksum_sha256": "cc08220e9647a2a3d34640ffabc08fd34f9601e229ab7cdf5ce4224f62cc158b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/deleted.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/show_version___utility_head_-n_20", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e428186b1eddbc63e5395419d8183ba503bfb276767d1c1e7fff71da95af734d", + "chksum_sha256": "e4eb1b26a35a3c5bcf1e45eab472c8d59ff0559cfbfe701cd60c17ee6d9d6957", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/deleted_all.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_banner_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3fe49d80821c922d19f9db8e41eb9a60b6328f43791322450bf5d78899332dcf", + "chksum_sha256": "373fefe369cd647022df09438152a869d3c407cb05c51b3bd8214b81471d76e9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/empty_config.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/show_ipv6_interface", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ce73c16381b1f6d60eb2a28255e2c73d3e440383faf5b4c592be6a2a17ec4cf0", + "chksum_sha256": "151235002e58119649b79a98cbacb5ce155225e31aa0188dd8085ee0961feacf", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/gathered.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_interface_gathered.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "107424d86e345ce03603238560177493367356c6fa158092d8c272e20f8b3572", + "chksum_sha256": "06b46488db2b8cecffa505d7a8d7f3c0566df2beadef2fb795f3963e26bb1504", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/merged.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospfv2.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "646caf77a4a5a75a19987a0316b75e38bcdf89ee4cf21a2e7e6a0f2ff925eca0", + "chksum_sha256": "27b9a4a53478778c5781170c052ba66bcc09dcb40aab0709d28018f6cd332126", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/overridden.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_system_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e7dbd305d647109e42dac7d09473eab83bb832b522169b0d9ae7ae0a6a8e33d0", + "chksum_sha256": "18ae20e11b3f557435b212a739a50c59c95e4162dc13989695e6c14ae35e58f7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/parsed.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_acl_replace_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3e4615b224f5c3f3beb526a6112487ea2f90880deefa2eed6e7903c023dee300", + "chksum_sha256": "197b575ae7d14aeb340f84bcb05ca1e4c7f84786dec07881afb650cc75106c20", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/rendered.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/show_interfaces", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f86e8be0f7d1983eb2350200ecb588e258b5712eb5a6e027fbd540fb3664ebe9", + "chksum_sha256": "e37745f7a4d614d0aa5da44df8a0acaea5820a5900d65cabe9640ddcb7e6ccd1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/replaced.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_acls_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "47e2e6914d5891922ec91d009954863a86a6ce47df64b1db65d886ff8a9c7d0c", + "chksum_sha256": "7415a69cdd33bff4395ad90a4cf6a930082691564493b998844e499a5039d13d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/rtt.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_l2_interface_config.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ed9f2b98d464bf8603d35a074fe2d50eb66d3a2c595967f48de1264a2038dcab", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_acl_interfaces/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "1c18f829582b9ed3a84bc5226dfd05be9c736dc0c949d61f719c71284e747e1d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acl_interfaces/vars/main.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospf_interfaces.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c9c186e5b37c704de87faa743ec5ba48edef1722215a550914539801cc5f67fb", + "chksum_sha256": "c3e8a76362099f436fe64dbd9dfc6401c862dac9c7b36be4ec83b36d125be2b8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/defaults", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/defaults/main.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr/show_running-config_hostname", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_acls/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "749f869982a235df56c1c7e404744c441340ff6da90dece0c8b83d63ff47e7af", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tasks/cli.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr/show_version__utility_head_-n_20", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "ca53ef4a0ab10529e7d5df9fd669fae547be148b08ee7075141212ab90a1e929", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tasks/main.yaml", + "name": "tests/unit/modules/network/iosxr/fixtures/dir_7all", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_acls/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "c5e2c218c5731bee3f874af0bc5d5694a426ceba650efc03795a5739235f0120", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_user_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e387d5d8b668b1f290872aab2a3e8f8de3d4bdcb99906b8bbf618b950f0c60e9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lag_interface_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "25aaec36c88ca1c78bdae21f0a0e072929ce56e56f569967927ab6def72d972e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/fixtures/parsed.cfg", + "name": "tests/unit/modules/network/iosxr/test_iosxr_acl_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6edd326a3c4a5b18f2a041ef8e9313e870c9eff81940294307cc07a3ff90e5e5", + "chksum_sha256": "8ec7f7a7253a073da59b55053ac9d52714a9f6ddfe55966a4333730f9fe6a355", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/_populate_config.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr_netconf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fad593c0a30c05a9399505505e33bb99d75913b2ca333fa0f5d198ecb52d3fc6", + "chksum_sha256": "209aa02e404cf255e643c487b9c44442ed9b5e17ac62c5526c0c02825c6694d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/_remove_config.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr_facts.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "60a105434aaf3d04dde592ece9cdf1017cb0b3172120288810d97715fe2fd431", + "chksum_sha256": "b1949ff68f966a8319f8243b815ea48024ce7e72b3e98606155c205a40568280", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/deleted.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3f167ba03527e52c6b3236cf547eaad59e5c22cbb7378a1a90eb2a8ab736633e", + "chksum_sha256": "775a3f292dd11bbf06389c191e39f326f65655899f046cd2f9d0fc53c527b972", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/empty_config.yaml", + "name": "tests/unit/modules/network/iosxr/iosxr_module.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a3de6c6599cbd3a7950c303559545975838139e9c4b6899dc85727669925a168", + "chksum_sha256": "44fe73a4355f43b735971cdf2927a17ca35a317d8d3dcf7eba3679e42f827bf7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/gathered.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a582c68cd840533e05aaf3367b334d02dd74684b0af6a23269ff0b208bf06f5c", + "chksum_sha256": "980a9645e0fb54365d3ba45c0965ee1c82884870a8cb239bbf38ac0910450a42", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/merged.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "69c219c2446281fb3697154ddfb3a06e77f320193cd04d461a20b0362a4447e8", + "chksum_sha256": "fff7eae63c3d46e98264e6bdd9ab6c2009bd84bb53ff4a53575228f774a4036e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/overridden.yaml", + "name": "tests/unit/modules/network/iosxr/test_iosxr_lag_interfaces.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1e4d53cd354dc5e35745d702bd43dc67c57ed1548f94168f687b0cd380e30432", + "chksum_sha256": "e64ba104e28f652f4300a8e7c43d4aec50ab8bb28f8f97d5bde22099f8f20b6b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "25ae2d218ceb84438e1135380d5e3f55dbede18338f5c4826bf253fbb1b91545", + "name": "tests/unit/compat", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/rendered.yaml", + "name": "tests/unit/compat/unittest.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8ba58ba01382b709d04ad2b8b0f82c2d53d7a71a6a1a3bbfbd2b68b09de23dd8", + "chksum_sha256": "727203a3846be41893b78a4b77852a1658925e936fb19539551958a5d8e8fb81", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/replaced.yaml", + "name": "tests/unit/compat/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d324ad8894b55b2586831251fbedab24cb4924fb90a7bb9ebe42bf6e57437ff5", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/tests/cli/rtt.yaml", + "name": "tests/unit/compat/mock.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fed7af68aca997e00c7816b282d84fe5b3858ba27497fdfb1f3f87fd1ad7c268", + "chksum_sha256": "a4e0ca26e6e2982bc40db782db3a0d4950e8c5a749171c0da22c27c85acd23ea", "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/vars", + "name": "tests/integration", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_acls/vars/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a07cda33c597dd4e76d3b812b962e5718c936287134221c1fbe55ff3a3490d6e", + "name": "tests/integration/targets", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { @@ -3130,59 +3382,59 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/defaults", + "name": "tests/integration/targets/iosxr_banner/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_banner/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_banner/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aeaea690f4a27b4af77c33a24968cdc89de2ca73e590d9ec1db4b80842750bb7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/meta/main.yaml", + "name": "tests/integration/targets/iosxr_banner/tasks/netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "74e0fd06296ba78b354273f00e39a2cb9f77e8102eddc40deb284d83c52255ba", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tasks", + "name": "tests/integration/targets/iosxr_banner/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_banner/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "807018f4d8e18e1118fa950fc3350b83b654ce6b630e87065424e65b152aca4f", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", + "name": "tests/integration/targets/iosxr_banner/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tasks/netconf.yaml", + "name": "tests/integration/targets/iosxr_banner/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "313bcf1369b46a61642c00dbec74920ae97309388cf636bbba313b1721dfce74", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { @@ -3203,21 +3455,21 @@ "name": "tests/integration/targets/iosxr_banner/tests/cli/basic-login.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a7f422dfca46d7081eb41007f8e3446e880dab8910413ee84e5ea731b537fc85", + "chksum_sha256": "00656d9558735dc363fc4ba83a58620f10aa6ad82ab4554f00ed2655922f59bd", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml", + "name": "tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a5bed3a94529a0f50ea47fdb456dec64dd38aea8fe1f03d49e1a083ca986f504", + "chksum_sha256": "25e88c9b68237bdf23639108d7085f04bedec5592b86fb12467e7e3ba449ca2a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml", + "name": "tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d2083da2402c346c831d699296ab8d4fcb2dba44e2a422204c75603e19504ca9", + "chksum_sha256": "a63b5980f97093dfa1ff3c6f3730f2ca0eb3c011af4430267f16cccdc0234d72", "format": 1 }, { @@ -3231,672 +3483,840 @@ "name": "tests/integration/targets/iosxr_banner/tests/netconf/basic-login.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad57e7503922a16eca3f98a7b1b12268f77b920c5612ac0f9897ea7f3c651445", + "chksum_sha256": "d831f48454277a06c4809abc0d238b1963f16278853be6be3eee834b0bffd3ba", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml", + "name": "tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e1304a42375356d180295e70d510fe841cb4e458d20c0da795599b81932e5ea", + "chksum_sha256": "50f1c5622a99ec54a98a3b978dee91614909adcedf67378c13cd2f3cb09e48b7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml", + "name": "tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a9d91ba42aa119a054a555bc74e0f907fdc7fa9ceb4547ab3cb547739716bd1f", + "chksum_sha256": "52cb507d481aa76f0a7685583fa5c7828e6271804fe2a90b34fa7159c24eae54", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp", + "name": "tests/integration/targets/iosxr_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/defaults", + "name": "tests/integration/targets/iosxr_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/meta", + "name": "tests/integration/targets/iosxr_interfaces/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/meta/main.yaml", + "name": "tests/integration/targets/iosxr_interfaces/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/tasks", + "name": "tests/integration/targets/iosxr_interfaces/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "48799b5b3dfebf2565e7dc5aa8a37a5f6a4fc45c0ff1226adfdc3110817d3e31", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_bgp/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/tests", + "name": "tests/integration/targets/iosxr_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/tests/cli", + "name": "tests/integration/targets/iosxr_interfaces/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp/tests/cli/basic.yaml", + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "942640b885fdf8aff68138ac74c23e3866643bef399f625fbfab7fa8743242db", + "chksum_sha256": "44b35581001d7173e1b8f2fb5c3f8804692c59c87594ba3f4bdf1458cdd56256", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "26eb03219bcc0caba6d5b3be37a6bce7fa846c1e5ea6d2df9a5fba581597d7af", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/defaults", + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d1264641b82c36fe0d15026aa6bcf379dcde00c183ca8f1283a7e9db9880c50d", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4b561e6501b1861665d181d39f4882f6c99b610c359d7294443b5e37722edf6b", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9e989cbdc6bc0299a75483abb2bc9f771224d13dbdd084992fd71e6ef57f1a5a", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f6957f1a450e714240cdf34121eaf5099db25f1bda037680c8af357fef80839b", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2390ab9c8c2958dd0623138f888fa1db1e40d20023bb803e5a1fdc9906be8504", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "e7f495f2b2f098efc4830e55aecc165536ef8cacbf35fcefc030cfa3a6a5a345", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/meta", + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d3915314d2bb6a8c96a0f18c7cc4d1bdbb6a16e78a660baf7328ca5f6fc854a1", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9d90b33bba17d4d2ae74d79879e9163f0c413e1d4f076d7817c3a856e456e41f", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c2426117bdd1320e641684a463c4b947c1864f76710eda7ed9a36c06c1b3615f", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/meta/main.yaml", + "name": "tests/integration/targets/iosxr_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "628f1746159ca78d2b44a74e2309d2db9b380b5a8582fb2c0f0b92c3ba38e95f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tasks", + "name": "tests/integration/targets/iosxr_ntp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ntp_global/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1e9c0370fd822035db65a96ea1200873358ce2996d3ca3cec720fd1ee86012d1", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "73e48db0c23a63565816ea0d938e972a0a9daee404ea69b57fc39f403f1288ac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests", + "name": "tests/integration/targets/iosxr_ntp_global/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common", + "name": "tests/integration/targets/iosxr_ntp_global/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ntp_global/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_ntp_global/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b3130bb3936b59d324966976cb9028b960cefbeb74b0a4f57ee73f8b51f80e63", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_base_vrf.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a90dce5c848e047ee6b15a9875807caf3834be025a1a84a912f385f650b8b083", + "name": "tests/integration/targets/iosxr_ntp_global/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0912064fd6e2456af64546781d84b7e1463836226ef076f85276e67b9804fed2", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_config1.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0090f727c6e68f3abf6755ad0c74d65c0a406d5de0675985e5109432903f9680", + "chksum_sha256": "3116e5b1f3807158456527c7d2ec5c4ba73c2f53d75a464c9aa0257257279ef1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_vrf.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8f4218bdca10a45c9080e2f6b03a0143e44e984ba634245ccd1bf8ba62dbbca3", + "chksum_sha256": "12edb69044ee3a03f3bba8317b8d590ab8f7cb428e0b6047c6e86acbf91cfa23", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "03ffdfe82c9b009133361192299521b9457798b577daa4aee23d17cdffc2d78e", + "chksum_sha256": "c8999671a348fba3821b25049396c8971fe8a24a577d5d704c8c220c81d0ecf8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9ff639e39ecc88528745c050f97fd0192efeec27230a6073001e29c5af17293a", + "chksum_sha256": "07b3031d563cd5f7a06f39a5e4edb6f5b3334d8dd70070337cec600a6355b08f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "14c0028b5d36b2482930e55607a441ae5e913ebf74e07cd5c086bb72e2a15b2d", + "chksum_sha256": "fd90f3a750d4f51a1d947cd1952156f4b8245d1d09d4741d57b882a9ee302c2f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d6eea25c602c2e11df4f7138d2d4836e224a971a6c3c971562d444b18724fe8a", + "chksum_sha256": "4c551ac7c741dcae87dfa4237c9c2387202c54e86e04d9140b8d7684d3560fb2", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7ef8a2b601776d796e19b13b6a7d7f7e8c91da5c876488ce935e47976908dc4e", + "chksum_sha256": "5ecf37c4d4f8799590d36debba286353a94b76fc0f89929f5cef6cf762337fe3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/overridden.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0b7c84c2fb381806cbfc487a06b97ec8dff7f6e3533c44a2876d1b934b644e7d", + "chksum_sha256": "3ed2c59015cb8f315b1a7d5475e42fa855009b2e5d26f656eb6f80eaacf718da", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/parsed.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6756cc71ee7f4b36a79a2a9adc5d58b3f7ba4752d4bc7d0532adf8b203d01952", + "chksum_sha256": "aa640d9b74a58c56f1bff39b0d710b0f9e072c59d1029e8028071ad927e83119", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f0831e2ebf2b374d0528523f153d63aa05c51c9427cd1d978e6bb1b3541fb30e", + "chksum_sha256": "37b4fdb1a797393df3d182478993235633244c539af30725013db77cec0d1178", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/replaced.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d2d812affc5ccd626806375d3324a9354d0bce0db2eeca99dc2142cb80f6534d", + "chksum_sha256": "be949100104e75250b3f92b5f02d93e8a471631a4ef398d2c24d2030c1b3a57a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/vars", + "name": "tests/integration/targets/iosxr_ntp_global/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_address_family/vars/main.yaml", + "name": "tests/integration/targets/iosxr_ntp_global/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0afc6b42287dd3380bccf43815067aa662d4e3ea573c31bf16d78fa37d6ee429", + "chksum_sha256": "33b4175617133438627a3921128a558f7c3cfd5e70b930808c06634e4fe3cbc1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global", + "name": "tests/integration/targets/iosxr_logging_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/defaults", + "name": "tests/integration/targets/iosxr_logging_global/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/defaults/main.yml", + "name": "tests/integration/targets/iosxr_logging_global/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/meta", + "name": "tests/integration/targets/iosxr_logging_global/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "73e48db0c23a63565816ea0d938e972a0a9daee404ea69b57fc39f403f1288ac", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_logging_global/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/meta/main.yml", + "name": "tests/integration/targets/iosxr_logging_global/meta/main.yml", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tasks", + "name": "tests/integration/targets/iosxr_logging_global/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c6e99a90b2d484e73a317de66debf8e7a3f4d2f9c89bcffc955210d2854f1acf", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_bgp_global/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_logging_global/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests", + "name": "tests/integration/targets/iosxr_logging_global/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common", + "name": "tests/integration/targets/iosxr_logging_global/tests/common", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "69b28ec7e3b77375e263157ffdbc2e5c7dea56353f9a906f0efdab44aaba2efe", + "chksum_sha256": "6b79a9c0fb64ffb5ea3b2499161f3d284af835a1e17ff12cbfe838a09a936573", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_af.yml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d225cb9e1c413befc498bed1759effe731146fb93a8275cc5f28a9fb6cd62733", + "chksum_sha256": "279dfdbc6e8e658f0034995198e414253f0a512c6590a311da073cae0a52d15b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "440bfeb84250bf23909bdcd3aae2b659217411c7f02615e375c461087bc33627", + "chksum_sha256": "8149279cc0a1da197893f2b231b99e89d35f72f7eca43c0ded62a1f7938af73e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_vrf.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "73cebb0d68942b9cebc4449c12ecdbf9d07ad5ab0375875f6b2dd9a03bd87ca8", + "chksum_sha256": "2b6b32698c946e6caf83b8d756358cf0fe146dcdf81efd2b020ce595eba38bd4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "03ffdfe82c9b009133361192299521b9457798b577daa4aee23d17cdffc2d78e", + "chksum_sha256": "8e2c26f79a8f6cc6611dd48d408df870cc43853b8d8dd9ebe0af83465119b0df", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_replaced_af.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "d72b330e428d01f36ce0ba454497558efb2aaa4a3d2f4423378d93febb7025a4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0fa5a58884c54913bb3233265309e71f17a41edebbb6e521712db35088bddcc8", + "chksum_sha256": "e9111575d03ca3e8cae1744708bc4329dd05fdd40ab5468d722198a6728b1dac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted_af.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7c45590bfc752fc39a81b8b358968e75e75335e4c3d6449f6a8ca051999fd2ea", + "chksum_sha256": "909a21409e28a252b2c0d6fccf1e6c0e2cb51d710665aa7c0cafc11d6679a727", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted_af_with_vrf.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a04a3326feb2ff3aa7d9895fba630bba0d39c7e0ac0335c378d6c9c726dea9a7", + "chksum_sha256": "02dd8a9273d456e158f8810372ee5f70c1b4ea56d70cfa11eb6dab8f9023b558", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5dd7dce83c0f85059155d19b0844f40613a98e42f0718a0fa319c1bfafc0b775", + "chksum_sha256": "10bb238d21d24df6fe4e476d542492839c1943430ea17c6cf9275eb4790da423", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_logging_global/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0d3f42e30ecfd27dca2f459e67fcb29aa7eb221087dff2125a4b50e24de047c9", + "chksum_sha256": "32b4a5eb23f7544ff53968c2f2f714963b86c198caa83facbb6e36be9cb85d49", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/merged.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6c983c5b8e7bdc4997dfda6709c7d4a8c719b507c82b73041b3159cca9d6a039", + "name": "tests/integration/targets/iosxr_logging_global/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/parsed.yaml", + "name": "tests/integration/targets/iosxr_logging_global/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2ada9252d595d233bb3b7e2a01900965416d147291a2ac3b443c70c9478cad60", + "chksum_sha256": "4a069b29e331858b268f0a2ab9ace19d5bf793703a8b5c452ac8724a6570506e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/purged.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2cce29019f0726c03e53a2daa42ff31d962e2df7b0bcb6b6a75cb120950ff68c", + "name": "tests/integration/targets/iosxr_ospfv3", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/rendered.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "05d664f2d11d59132b41ab8f93edcb49d06d8f827796db4c9dab60549b4166b3", + "name": "tests/integration/targets/iosxr_ospfv3/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f546228a7589ea71390a9b84d6fde8cffcbdfc66f291082612accc649396fdc5", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/tests/common/replaced_af.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1adc26fbed5ebfa1eebe6013b93d3341c85b9e55a579bb5615cbf02e5a650536", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/vars", + "name": "tests/integration/targets/iosxr_ospfv3/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_global/vars/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "451e9169f09617231fd523f97e60c4daf60eb9bf0f9ae591a042c2ed6df9e923", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family", + "name": "tests/integration/targets/iosxr_ospfv3/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/defaults", + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "46bf472822cc2a45ce47c1ac6c8059fc5f228be53f0ee692765832aa1541f811", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b353f038fe3608efaa4fe240c2490e4d96479df9fac05c5e65b382b2b5eb45e5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/meta/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "b74c20ce7b08e53ee2f6ad55e8964e7d763329b130c8a57f5962395f1daf2a13", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks", + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "771f96cd83c9a893ed5ea4eb2d25b331fa2728f8399f0fb2327327a2eea69eb8", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fe864b51e70814be13bf52e56f90108c6f6f874ddf23fc9c229019215bab349f", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0432f28e01aa6fcf74a9f27e1d245b6e7368bdf7c4e6cada6911becc1a5d8cd6", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "296f132a73194b9b2d134f6cba1b69da8f2e1f3345c4cf5952c8fe686e1eac91", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "97c41a9ab68d27a209106c1f47557a5659ca2e8914fdef8e29514b208c8c771b", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "38ac896b32ffc759f2b4e498126f827b96d1cb0cec61a9c8e1669aee7d68af1c", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "820c9d8378bc3893f82eef7b74466761336b9e7acf36c99a76ab549c03fefab0", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "959f73cb330969c6963963b3a9c6ced291c02803d8b43e0d280691e1abb94a88", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c6e99a90b2d484e73a317de66debf8e7a3f4d2f9c89bcffc955210d2854f1acf", + "chksum_sha256": "717d5351bebea57a2f0ccd874a2517595c2dda6c4ca8cb3c6de7c0902aa14b75", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv3/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv3/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "fa66fb8ce0cc80369445c497f68d5e087540f12ad98f96f181e99c7500e5f232", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests", + "name": "tests/integration/targets/iosxr_acl_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common", + "name": "tests/integration/targets/iosxr_acl_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_acl_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f559ed5b722bfebecf0cb6a696f9bbcb6ec56cf63c25e47be07bf9478e556e4e", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_base_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a6c17c3999a6aa6f3d39720a51223d01ceba114a4e704ed27bec76342cd0abe0", + "chksum_sha256": "cdac5ecec5537510649ea64ca19a23351ebc7e9783ff4fe4f220079ed2c37bf7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acl_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "018ace52485c2b1609f5d7d8893cfe0b99b5204eecee7eea3d3b634d614a1e1e", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_vrf_base_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/deleted_all.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9d94b9491a045f06789eaaa96222a72a7dd8f65c48d45d88dba16fac049fd704", + "chksum_sha256": "3fe49d80821c922d19f9db8e41eb9a60b6328f43791322450bf5d78899332dcf", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_vrf_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "19489912900216d55b30d715921bf8e1edad2d1945ce967383c9b10bf045aa1e", + "chksum_sha256": "6950308b0007d4bd83a9207819818cafea411ea68e0e0d16cd0b142257082729", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c455861f770ac7341d3e29ba6804ffdd075bd6fac56f4e5f07b494eb12aa6cc7", + "chksum_sha256": "e428186b1eddbc63e5395419d8183ba503bfb276767d1c1e7fff71da95af734d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_route_policy.cfg", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0357901519ac8ac68f6c7059838c4cec150ef91418cbe8f82efc4c0d43f6fa9c", + "chksum_sha256": "107424d86e345ce03603238560177493367356c6fa158092d8c272e20f8b3572", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "faf8165e1aa4827820ee0e9a0ff2c418cf23c682592ada66b626266facf9d1b9", + "chksum_sha256": "ce73c16381b1f6d60eb2a28255e2c73d3e440383faf5b4c592be6a2a17ec4cf0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb4ab173f008550df0cc48f83ecb505db4299ee8a9f026dff12c5af63d14b7fb", + "chksum_sha256": "ed9f2b98d464bf8603d35a074fe2d50eb66d3a2c595967f48de1264a2038dcab", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/_populate.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9c36f82fabc3726780c6dcef3a0fa8d4d7fa7d019fef1d97e076b8fe18a443fa", + "chksum_sha256": "25049f0c45154ecc9748bca191fbeb5239511e4a87cc68964b1899d9731f178b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "80bdc3eb58879b59242b45b0227e215f0c14772fb790850a5c4614c1d040852d", + "chksum_sha256": "646caf77a4a5a75a19987a0316b75e38bcdf89ee4cf21a2e7e6a0f2ff925eca0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/overridden.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "70746bef62da91f4d74143ebbaee0b443f901bda32a4f1e5a841b32d4c6f6f66", + "chksum_sha256": "e7dbd305d647109e42dac7d09473eab83bb832b522169b0d9ae7ae0a6a8e33d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/parsed.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "312204dc90b5c1572a58a7a44d7590f6da0274af0a9ac9102c9c1e762694d64f", + "chksum_sha256": "85013bce86eea3299281d203601b99b8f56cc72e1ffe45075f6147bb5b090742", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "52cb77efeb2277f2766261efd23be1b385eb0a279a4858a160fbb23e6790f898", + "chksum_sha256": "47e2e6914d5891922ec91d009954863a86a6ce47df64b1db65d886ff8a9c7d0c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/replaced.yaml", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cb254762f05493022cfab5268eb344f0aa9c5f62129bd422903006e890d1f01f", + "chksum_sha256": "3e4615b224f5c3f3beb526a6112487ea2f90880deefa2eed6e7903c023dee300", "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/vars", + "name": "tests/integration/targets/iosxr_acl_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f86e8be0f7d1983eb2350200ecb588e258b5712eb5a6e027fbd540fb3664ebe9", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acl_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/vars/main.yml", + "name": "tests/integration/targets/iosxr_acl_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f9a9d7ca96d490c22c02070c8c68ba92103e69f4a072341a141d204d7173fe9f", + "chksum_sha256": "c9c186e5b37c704de87faa743ec5ba48edef1722215a550914539801cc5f67fb", "format": 1 }, { @@ -3907,17 +4327,24 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_cliconf/defaults", + "name": "tests/integration/targets/iosxr_cliconf/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_cliconf/defaults/main.yml", + "name": "tests/integration/targets/iosxr_cliconf/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_cliconf/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53", "format": 1 }, { @@ -3935,24 +4362,17 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_cliconf/tasks", + "name": "tests/integration/targets/iosxr_cliconf/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_cliconf/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1e9c0370fd822035db65a96ea1200873358ce2996d3ca3cec720fd1ee86012d1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_cliconf/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_cliconf/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { @@ -3973,7 +4393,7 @@ "name": "tests/integration/targets/iosxr_cliconf/tests/common/commit_conf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7c24c9ef4b92e19dd55b62fa76963ffa500f00c63b7171b0b05697e79237b8ed", + "chksum_sha256": "e046c0d2eca053f31eafa4cedf5e98bb17332b8266cb6c88f0c2370ab7237d7e", "format": 1 }, { @@ -3991,493 +4411,486 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_command", + "name": "tests/integration/targets/iosxr_prefix_lists", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/defaults", + "name": "tests/integration/targets/iosxr_prefix_lists/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_command/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/meta/main.yml", + "name": "tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tasks", + "name": "tests/integration/targets/iosxr_prefix_lists/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0aac63b29763012e54ed5210fb629f370224236f18e88c466861147dbdbeba56", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_command/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests", + "name": "tests/integration/targets/iosxr_prefix_lists/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/bad_operator.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9d53587f24caf85f74a90aa38d629e1821967b99c42a52603745a2536000bc64", + "chksum_sha256": "351ab25b2412eee119ffee510ebe0b70b40b13e8111e0c4b2b5c519bdda51634", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/cli_command.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "36008ced825f92916c9c1a8063d7d3af07a89cc64d6692a28d825eb1c6a020be", + "chksum_sha256": "00f68885674a79797fd718487a3df7e70af4782785456212e76c50cf85495517", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/contains.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d9716e753ba5366a03ac74d4787a8cc31547382904b1316605503d481afb1b7", + "chksum_sha256": "f40f0a57eb589df2ee64a1628873874408bf7504b5620c6b275450116f81dae0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/invalid.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "985f58c4989f203f257c68725a9877e3ee3b5f4783af27429698e9a335d40605", + "chksum_sha256": "0b1cc12f4914b97b943e06edd3ffa0a27d298e50fdde3170dd1257a1c9fdf07c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/output.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "53ebb6e7f4ab53c74c9baa8d4f0bb7b62453e6cdd0e974df88dc334d573aaf6f", + "chksum_sha256": "98eb3a3642a23b70e1b74c890a478169edcb4a079cb75d158fceb89da2e9a16c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/prompt.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c2d2d6c07d37bbd84190440034126fc5d74de4e55e824813974e059a9413ec2", + "chksum_sha256": "a43a99763a924f63fec89ac15da6a0e52887599d1f3c8c22df8e5b083fdf9f38", "format": 1 }, { - "name": "tests/integration/targets/iosxr_command/tests/cli/timeout.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "96843e537eee47517c5049885b84061a141b2eeba5680c11c5b66693d7be09b5", + "chksum_sha256": "293a473418d1ab4abe4b92f1ad395d0798f956c6e81b60b8a9c96ef6423702b9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "faa07f9fa788bf1fe18e07fb1d06f797b05da7a822318916f969975dfaac5478", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/defaults", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "6124272ed18483b35ecc3e79e5dc7a97fb53f4cd02ad193d1d860f408711fd5b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "35f8c72cfa440d55ad5148e38ef607e05bbb6cd1632a6ac7425d351ac301680b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/fixtures/config_add_interface.txt", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab5bf303021e5250cd67b0f4ad25b8127b74dd2d8630266a382d9ab2aa4c248b", + "chksum_sha256": "0cd46bf6eb4382f30d13e184852377422958a6f882a49dd694b3a82709265ac8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/fixtures/config_del_interface.txt", + "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "087d7655b24ffcd3191a5cab8015486b1da1488345f6e7617b0523f575b0400c", + "chksum_sha256": "2bc68f81719327ba9af3add49753b86806a773ae4d1dd82cc28b1d082056aa25", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/meta", + "name": "tests/integration/targets/iosxr_prefix_lists/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/meta/main.yml", + "name": "tests/integration/targets/iosxr_prefix_lists/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "056300e86e33d8bd4c6a91441a5aebdb0f1c0aac51930895ad3862211ead4b78", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tasks", + "name": "tests/integration/targets/iosxr_ospf_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "807018f4d8e18e1118fa950fc3350b83b654ce6b630e87065424e65b152aca4f", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tasks/cli_config.yaml", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "17a346028387be99d112363c69c95c5f9ad0befbdca636f22c8ea25d4675f1ce", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3ba11d0a6ecc4c096ca24c09fc0f707954d3dc64ac8964ea17901fe60887213a", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tasks/redirection.yaml", + "name": "tests/integration/targets/iosxr_ospf_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospf_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4c41c17a21d9975b70cd72b287d8d8a5220ab9c184115ee2237617b160ce146e", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/change_prefix_set.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "91a0239cde35ce8e75ad24c8f9c853014cd0c7a5554171ee3b0ad50cc8ed67f5", + "chksum_sha256": "b4377cdd354c797bde70b1ab79c25b8126309a735c3e52ada4dd3cf2c61db4c3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/config.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fed860520ec0b19850744af6be1c77939335d4a09539bf563d0c15aa6afc84ef", + "chksum_sha256": "a06cf74352024ffccea204ef3822fe08618aba04915148c8736f6387331f3662", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/configuration.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fd4692dc95cf561f544f8f680c9046add01c85c6fb83c17db2690cb854d3bb8", + "chksum_sha256": "40b9f6860fef89f7797529730ca794a03fef91355da74053086820283a821df5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/init_prefix_set.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "92dec92ecf095d1c33c493f4769541caa745787d80e498d6ae81decc93351e0a", + "chksum_sha256": "52c1f9bebbf6821f0b098ff9cbcdb8a1b30b1044a88f3b89e8fb8e76ea9b37c8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "83c3226c2070afbe01cde658ec7852261ac925abed96766989888c70a2f8bc92", + "chksum_sha256": "b92b9c34db1ed38368a5daa18ab827267e694b837a278a42224c5652f0f3d876", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy_change.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95c74f6778f25c6385437de97ec5ffbbef5414ed42115d8b7ee276fe5d7fdd64", + "chksum_sha256": "6627fdd69a02636b86a4d138377f7e54897986e3f16878ff6a55e573eeac3793", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy_clean.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "baa2f889363d8827d04378ac81e1516d840d64a721e4cc8284c937390206904c", + "chksum_sha256": "b9a8c7d0bff4202802918716797b5c1a831da98ca2bebe674f77d3e13de6b1f6", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "96c0644d6833fa509126bfa843bb259b9c9963e2e53d5fee080bb3cdece99de7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/templates/defaults/config.j2", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c67459067166baed6059b02907fb2692e34868270185b09fcd9f5d7c3ec013d0", + "chksum_sha256": "4ea507d63e8a9cff4eb0a1fc7dbb6a4bf4e85fe8bf3f0075dbbc6e3505648d69", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c1cd77375707ee0397f1efbd07a4f7fdfcfbec26c86042f65c7f29f3cca9a9c3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli", + "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "50f480556a54480a5cff156bcb4a8fad88e60404f4ca0ffd94df379667fd7bac", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospf_interfaces/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/backup.yaml", + "name": "tests/integration/targets/iosxr_ospf_interfaces/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e89b8bf2ae0c1dd3d859a77494f6f89abfccbfb1e6be30c2d5d17d3296b0cb8b", + "chksum_sha256": "d11bd78a2d74e8dc46a2880b54b3500e2f88cc4e3e6fd42a249138556e94964a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/comment-too-long.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3620ac43ca5135f0c0a49e2aeba5ab73a4c2704554d27c87ee4284f87f784bfc", + "name": "tests/integration/targets/iosxr_ospf_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/comment.yaml", + "name": "tests/integration/targets/iosxr_ospf_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1880bcdadc904a2cb1d98478fc780763371648a392c6e383eb2102d26bff1ba1", + "chksum_sha256": "934f6f7a277e34f616d5459e1989f9e0faeaf4e0a61444289abfaf37ee120659", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/commit_confirmed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9653c9ff2afc35783f116961cb926bb5f1943c963d05125998cf71c2d18bc182", + "name": "tests/integration/targets/iosxr_snmp_server", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/commit_label.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "873e365af69c26af8ed84b963e8f670dfbf86dca68811b164b1465417160070a", + "name": "tests/integration/targets/iosxr_snmp_server/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/extcommunity_set_config.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cb9f1df2b57e8364e823fb60276e322bd994be2df12b42a7cfddb461bb3e0dc0", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/misplaced_sublevel.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55ebc624d7356f89f6c2bb32d13aceff80e8df04d57c28f463023a7aca814ee3", + "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/prefix_set_remark.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "0fb66964d634451765de4922678ada90649e02acb0bc6f5b5ab6c723a506bc1d", + "name": "tests/integration/targets/iosxr_snmp_server/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/replace_config.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/meta/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "520231e3fab8fd0eed892322eb5e630667f32730b89f1a06e01c22a72d33ff45", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/route_policy.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "604f5b5f96027a1c3e5768650bdfd7687d1fed0a5045a3e5b9805dddd5fae6a7", + "name": "tests/integration/targets/iosxr_snmp_server/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/src_basic.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5cd6945ede088394c6599ee3b5f2aeddc0c3ed856db44fd8864a626576b79c38", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/src_invalid.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ceaff4b3620df90e8208f020adfa3d1b12ca9bef955fd8e01ef5f0395b4fdcd1", + "name": "tests/integration/targets/iosxr_snmp_server/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/src_match_none.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "21a37a276566385dcce522dd5b49dbcc7615ee5ef44b197b753875c469efa34a", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81d687e492374044859a0efcfa6dc922fb526648b8631faf70b621ae6742489d", + "chksum_sha256": "c84f687a0d23e760666157720b95281a7e02562f1304efbb9c904f542c7ef969", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_block.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "45be4aed01d01d3a88065e21b231390a90c01575db70fe99bc373d253a483945", + "chksum_sha256": "ae3ae2d79689b84f4e7d6094ce2e78a4ff7e4ab351b50893aa2ffbb47377e75d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_exact.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e18cbd1b58ce8368d11e0948fc75860f2b21e4092c74129d894fb7e4fa46dda1", + "chksum_sha256": "4d26d4eb07781e55845119a7c3513bc94bd975804d6a5e2f86a63086bffaea4a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_strict.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "33a343c4930c4bd86c2f660177d059bdf6c44e52b4224ecd7e8ade878687544a", + "chksum_sha256": "d365f215fa2285f64eaffc334997ac4ba381ba0fe72d1f0ddcfecac8b076eda0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_strict_mul_parents.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8e641ad89ffb073b8597de019fae0ac2a48482a6a33ff9a3cadd97f364100c70", + "chksum_sha256": "d537c09198b49b391f157eba859faa21d25fe4e4db79228887b12586b2207ef7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "98194ad2b27b0a9722de6305af5d2446201c488a21e52d33f31b82f51dcb9dbc", + "chksum_sha256": "92a61d453a67eba0f68f754f46ae9ef6b90567ad40e8555fd46868a595bef998", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_after.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "75053a4dca4669bd74e8c0edca7056cd31c40751cba6379774c337e466203cd6", + "chksum_sha256": "a4e26c01ab8c4e0f46bbacc76fc290c380ef19ae68f2f3e48db74c3f3e0554f8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_before.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "19a5a9e3043bd0b74fd7e71956374e204626d4346262c0c4cd3d9c579bb89f87", + "chksum_sha256": "51190a6fdbc4b50898f72ccb49c0e3f7c8856ed9483e53bffbae15805d583c7c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_nonidempotent.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4b629cb3f6c037494f307266e968320063f5533907d7b2b73a2f4c0cb8b91508", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_config/tests/cli_config", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "a38d54a4fd46f4c94df79af4550ad013eb6cf28a11f2ddab930527a035c6349a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli_config/cli_backup.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6c6e65aa217139078a0e172b54fc00eb2cfe51f2079cb7d9b0a5d9c5d2a74ca6", + "chksum_sha256": "990985bc43befcb4befb0737e5dc22784856b95aa04a8139dee5020628aca31d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/cli_config/cli_basic.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "256bd79f69876e184c69f562b22d1954e91f78e0386e273f4f11c5cf74b1d350", + "chksum_sha256": "81d07f1d66f078236899a5e835c4d53479004393bfb1ca80caccd1afa0cdea90", "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/redirection", + "name": "tests/integration/targets/iosxr_snmp_server/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_config/tests/redirection/shortname.yaml", + "name": "tests/integration/targets/iosxr_snmp_server/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c82a2cf83917d7934e758a867235e53629945aa1739c3101bbf61adfb9f248cb", + "chksum_sha256": "0f9c668532272c0b616e70d3d77dae2fb25871e3d07b04cc8702b25f51ec4ab1", "format": 1 }, { @@ -4488,17 +4901,24 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/defaults", + "name": "tests/integration/targets/iosxr_facts/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_facts/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_facts/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aeaea690f4a27b4af77c33a24968cdc89de2ca73e590d9ec1db4b80842750bb7", "format": 1 }, { @@ -4516,24 +4936,17 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/tasks", + "name": "tests/integration/targets/iosxr_facts/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "807018f4d8e18e1118fa950fc3350b83b654ce6b630e87065424e65b152aca4f", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_facts/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_facts/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { @@ -4551,17 +4964,17 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/tests/cli/all_facts.yaml", + "name": "tests/integration/targets/iosxr_facts/tests/cli/not_hardware.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "09ddaf160ad114c35a1a1abee7ec06230e2c0c1c20a7e465aa479d25ec892e3a", + "chksum_sha256": "d45c23f2fed05fea77e4d6081381f243f895035b72a52be4a28d46215dd9026a", "format": 1 }, { "name": "tests/integration/targets/iosxr_facts/tests/cli/default_facts.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0be082fb51475905e5de0f2824e4d297c7af0cad00d98d063cde1a7d866b4b67", + "chksum_sha256": "1db28925de61b31d4d1494430b130beb85579fe7f3ac582b05ef26ced8161c28", "format": 1 }, { @@ -4572,493 +4985,458 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_facts/tests/cli/not_hardware.yaml", + "name": "tests/integration/targets/iosxr_facts/tests/cli/all_facts.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d45c23f2fed05fea77e4d6081381f243f895035b72a52be4a28d46215dd9026a", + "chksum_sha256": "09ddaf160ad114c35a1a1abee7ec06230e2c0c1c20a7e465aa479d25ec892e3a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname", + "name": "tests/integration/targets/iosxr_bgp_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/defaults", + "name": "tests/integration/targets/iosxr_bgp_address_family/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/defaults/main.yml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/meta", + "name": "tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_bgp_address_family/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/meta/main.yml", + "name": "tests/integration/targets/iosxr_bgp_address_family/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tasks", + "name": "tests/integration/targets/iosxr_bgp_address_family/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1e9c0370fd822035db65a96ea1200873358ce2996d3ca3cec720fd1ee86012d1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_hostname/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1b0de89ec88a4c3c844244ea9b8a24ef5d12fe4ec4932c525b720742d77334fd", + "chksum_sha256": "03ffdfe82c9b009133361192299521b9457798b577daa4aee23d17cdffc2d78e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b3905393cfeb5a880d6f501a9813b52d787c771504efb07291ea4bdf91a83457", + "chksum_sha256": "9ff639e39ecc88528745c050f97fd0192efeec27230a6073001e29c5af17293a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "33bb48f812aef67e24ce8cffc06916f7f8adbb8977853170aeb32dd150bf334e", + "chksum_sha256": "d6eea25c602c2e11df4f7138d2d4836e224a971a6c3c971562d444b18724fe8a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_config1.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0c727923bf03a87bd59efc3eb98d414cf99ea84ac3748d32412b7eee33996553", + "chksum_sha256": "0090f727c6e68f3abf6755ad0c74d65c0a406d5de0675985e5109432903f9680", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a89c158ee6a5732379e2b446d1d6e307cb116b5a4f602e32781b5e11598f3c9a", + "chksum_sha256": "14c0028b5d36b2482930e55607a441ae5e913ebf74e07cd5c086bb72e2a15b2d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_base_vrf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "348ce984e68aabc275d61e8143b23c6cc59765f2510b073a4c611fa62254a4b7", + "chksum_sha256": "a90dce5c848e047ee6b15a9875807caf3834be025a1a84a912f385f650b8b083", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e2591c3d8f9408a6d1879a028da5491a9275c44601b28d5d1341818ecab434a0", + "chksum_sha256": "7ef8a2b601776d796e19b13b6a7d7f7e8c91da5c876488ce935e47976908dc4e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/parsed.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "823462a54fe9b7f711ce0331124bd72c3c4029547fd7d1c2e5bd1da25582cebf", + "chksum_sha256": "0b7c84c2fb381806cbfc487a06b97ec8dff7f6e3533c44a2876d1b934b644e7d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fb084918ff5f04f5da804437d0287f888c6b225be719b39e7599e4d2928890d", + "chksum_sha256": "b3130bb3936b59d324966976cb9028b960cefbeb74b0a4f57ee73f8b51f80e63", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0912064fd6e2456af64546781d84b7e1463836226ef076f85276e67b9804fed2", "format": 1 }, { - "name": "tests/integration/targets/iosxr_hostname/vars/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/_populate_vrf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8fb0722d13cbb07c9e9d85b76efbdae857bfdd1801b6aa0501a52946e6b6d588", + "chksum_sha256": "8f4218bdca10a45c9080e2f6b03a0143e44e984ba634245ccd1bf8ba62dbbca3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d2d812affc5ccd626806375d3324a9354d0bce0db2eeca99dc2142cb80f6534d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6756cc71ee7f4b36a79a2a9adc5d58b3f7ba4752d4bc7d0532adf8b203d01952", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "f0831e2ebf2b374d0528523f153d63aa05c51c9427cd1d978e6bb1b3541fb30e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/meta", + "name": "tests/integration/targets/iosxr_bgp_address_family/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/meta/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_address_family/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "chksum_sha256": "0afc6b42287dd3380bccf43815067aa662d4e3ea573c31bf16d78fa37d6ee429", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tasks", + "name": "tests/integration/targets/iosxr_bgp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_bgp_global/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "73e48db0c23a63565816ea0d938e972a0a9daee404ea69b57fc39f403f1288ac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests", + "name": "tests/integration/targets/iosxr_bgp_global/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_global/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_bgp_global/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_bgp_global/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e7f495f2b2f098efc4830e55aecc165536ef8cacbf35fcefc030cfa3a6a5a345", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_deleted.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "d1264641b82c36fe0d15026aa6bcf379dcde00c183ca8f1283a7e9db9880c50d", + "name": "tests/integration/targets/iosxr_bgp_global/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_overridden.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "26eb03219bcc0caba6d5b3be37a6bce7fa846c1e5ea6d2df9a5fba581597d7af", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_replaced_af.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2390ab9c8c2958dd0623138f888fa1db1e40d20023bb803e5a1fdc9906be8504", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2c119e950d370936c6553cec8bca96f5273ccdd42079e4fc9cc3c9e794db431c", + "chksum_sha256": "03ffdfe82c9b009133361192299521b9457798b577daa4aee23d17cdffc2d78e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9e989cbdc6bc0299a75483abb2bc9f771224d13dbdd084992fd71e6ef57f1a5a", + "chksum_sha256": "0fa5a58884c54913bb3233265309e71f17a41edebbb6e521712db35088bddcc8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4b561e6501b1861665d181d39f4882f6c99b610c359d7294443b5e37722edf6b", + "chksum_sha256": "0d3f42e30ecfd27dca2f459e67fcb29aa7eb221087dff2125a4b50e24de047c9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f6957f1a450e714240cdf34121eaf5099db25f1bda037680c8af357fef80839b", + "chksum_sha256": "5dd7dce83c0f85059155d19b0844f40613a98e42f0718a0fa319c1bfafc0b775", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/replaced_af.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9d90b33bba17d4d2ae74d79879e9163f0c413e1d4f076d7817c3a856e456e41f", + "chksum_sha256": "1adc26fbed5ebfa1eebe6013b93d3341c85b9e55a579bb5615cbf02e5a650536", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_af.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c2426117bdd1320e641684a463c4b947c1864f76710eda7ed9a36c06c1b3615f", + "chksum_sha256": "d225cb9e1c413befc498bed1759effe731146fb93a8275cc5f28a9fb6cd62733", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted_af_with_vrf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d3915314d2bb6a8c96a0f18c7cc4d1bdbb6a16e78a660baf7328ca5f6fc854a1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_interfaces/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "a04a3326feb2ff3aa7d9895fba630bba0d39c7e0ac0335c378d6c9c726dea9a7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f7fdead009e0aed7a107e5b3e45a1abc267282513f6df533d811ea076f06b55a", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l2_interfaces", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l2_interfaces/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "6c983c5b8e7bdc4997dfda6709c7d4a8c719b507c82b73041b3159cca9d6a039", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l2_interfaces/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "69b28ec7e3b77375e263157ffdbc2e5c7dea56353f9a906f0efdab44aaba2efe", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/meta/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "chksum_sha256": "73d93464c7e118949c3a6da1e915242a227681ab6ba766d5de54953c3cd6dd9b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/_populate_vrf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "73cebb0d68942b9cebc4449c12ecdbf9d07ad5ab0375875f6b2dd9a03bd87ca8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "63d9fa98fdd8596f997fa6c705bf0ac62ad1f9d958b656b0c4b29f5ee7c2e3d3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2ada9252d595d233bb3b7e2a01900965416d147291a2ac3b443c70c9478cad60", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/purged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2cce29019f0726c03e53a2daa42ff31d962e2df7b0bcb6b6a75cb120950ff68c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "26b4e7ee16aab6f1a3a11e5b8dcd55412e8afba623415469b2aa057b23126745", + "chksum_sha256": "05d664f2d11d59132b41ab8f93edcb49d06d8f827796db4c9dab60549b4166b3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/tests/common/deleted_af.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "86dfa2d949109a946c52fca30228bdf700908e44f122a528c64d6952f5d45a78", + "chksum_sha256": "7c45590bfc752fc39a81b8b358968e75e75335e4c3d6449f6a8ca051999fd2ea", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e83f8b9fae249e12646929bd73e327c7a521b0ebb35ff88c88c7c4dfae42d6bc", + "name": "tests/integration/targets/iosxr_bgp_global/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_bgp_global/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aab6b3f1c213ecd9fb08d4e72c411202b67316a2ae084f35d5d995db007fa521", + "chksum_sha256": "744a98c76b992e1adb641f9f1770a9d7aafe06e4c75ae8a26c889b6fd99b376f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/empty_config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "a4d9508554b3caf42a189031a45bbe918f8d87ab46b49670f824f45e84f1f73b", + "name": "tests/integration/targets/iosxr_ping", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/gathered.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "133cc3a327728f918408d45c77742cd31e4cc17537871f0d02674a5a48c394c7", + "name": "tests/integration/targets/iosxr_ping/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_ping/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "18a4c9c8fa0b4717435de1c5b0c06e1bcc37099d4e1e2f50cd52755b5382d90f", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_ping/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6fe6eb03f29c398aa91c6e6ed5e4217906e3391b35d4dc53d484d54143ee696d", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "92b7fbbe9e9092cfb3b5b4a90a3dbed8afa19d09b5052e6b454a76d5f5b10ea6", + "name": "tests/integration/targets/iosxr_ping/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_ping/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ca461ff84f99d15126252d878ef50b92ce916783f8cb6ff91f2e2342144dcd7a", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/replaced.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8735a17ccab3ecd1af096f3d1c722e7db3b0ae5c7e48667aba20f9ec6b155d08", + "name": "tests/integration/targets/iosxr_ping/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/vars", + "name": "tests/integration/targets/iosxr_ping/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_ping/tests/cli/ping.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fa1cd95a5be96272dba366e9ce1da85907adb37c5e8ee9b9b5b3843d9884b8ab", + "chksum_sha256": "5c196cce06bc05f3315cddb3f355cb0b4d6417314c420e64d3af66765d697551", "format": 1 }, { @@ -5069,17 +5447,24 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/defaults", + "name": "tests/integration/targets/iosxr_l3_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { @@ -5097,24 +5482,17 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tasks", + "name": "tests/integration/targets/iosxr_l3_interfaces/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_l3_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { @@ -5132,94 +5510,94 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9aae7589fd152283c827668756aa807df73d6b0e3b02a39329aa5adb982a34aa", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5b02fe37e4efac9a20e9480b4f9268dacac3fb2c1ed7b07b897606d06b353f53", + "chksum_sha256": "8c4d2b031234ceb533507d437a610a5d19f6dc3b4622650baf62a06d21c864e1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cea9a33ea739964862b47059bb71915e721d9153f0ae11f448eb2aa0f3e63555", + "chksum_sha256": "dc7ca7650fea2420e7d244a0042773bcb8b71f6102996f7317d971038011f69e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b3f8243f481c25ef2f173728786b5f83c7fb47ce1b68451d165945878531aa7a", + "chksum_sha256": "a24591a78ea4cd2fedffa114fa012bf8f93071c26adf6e8810415f2c4121b18c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a482d8e5be782f7f315f9c46649113b7c092a0a5f004f403597f778d1fe2da4c", + "chksum_sha256": "13f8f39d5a62294c86bcb4d28e2d5ab0f307e32cfdd5b9790ba4d48b6f8b363d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a24591a78ea4cd2fedffa114fa012bf8f93071c26adf6e8810415f2c4121b18c", + "chksum_sha256": "6a05e793c4dee9a71aa7360480ff679ff1ac5901b01b5b8b847f0ee8919daa53", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "095901b21b65b80757b6edecf291e5d172998fb253be7c6d7e97a9ac9e9ae4ed", + "chksum_sha256": "9c6bcba044debf2f522bd4cc8acc2be21c0534b4429bf491b01c7c4c4d6ba1e4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0d1bfd662e801d1c8290e824f8eadbfb1698b9990bbc214810594e78f542dde", + "chksum_sha256": "cea9a33ea739964862b47059bb71915e721d9153f0ae11f448eb2aa0f3e63555", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bc77cdc0619731de05e266fbe87e561a6936c6748074de9229ce2bc8c6639af0", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2012e92a9c0896356f0e74af36986c6f11b2e88c3d3f33eddd25202b5eff5450", + "chksum_sha256": "5b02fe37e4efac9a20e9480b4f9268dacac3fb2c1ed7b07b897606d06b353f53", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ac4d19dd0c70447823eab99d6b2c5f1007985f20bd560c8275ac1ae2f8bef43b", + "chksum_sha256": "59dc8c2804a3b783878bb6af8d7c390e7ecd8c78e024aae5d329d253ae0439f0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0ddae6fdd0c4b8f27dfa91075506a04588e4ccd4903c4c7f05855a8f540f160", + "chksum_sha256": "2012e92a9c0896356f0e74af36986c6f11b2e88c3d3f33eddd25202b5eff5450", "format": 1 }, { - "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_l3_interfaces/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13f8f39d5a62294c86bcb4d28e2d5ab0f307e32cfdd5b9790ba4d48b6f8b363d", + "chksum_sha256": "ac4d19dd0c70447823eab99d6b2c5f1007985f20bd560c8275ac1ae2f8bef43b", "format": 1 }, { @@ -5233,798 +5611,798 @@ "name": "tests/integration/targets/iosxr_l3_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a15baf460706b8582ac802d4392e3037101cc9a9bc6a73cc8a9edbae8226e1ab", + "chksum_sha256": "a7439fd1d36352ee12daaf2487b7e6c8c013a1f0fb366cf6e3900bfeb0580ec9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp", + "name": "tests/integration/targets/iosxr_acls", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/defaults", + "name": "tests/integration/targets/iosxr_acls/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_acls/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_acls/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "name": "tests/integration/targets/iosxr_acls/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_acls/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests", + "name": "tests/integration/targets/iosxr_acls/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli", + "name": "tests/integration/targets/iosxr_acls/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_acls/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "60a105434aaf3d04dde592ece9cdf1017cb0b3172120288810d97715fe2fd431", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_acls/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b053b09f9388c7f6208c51e8b9e53867bd6352bf37c9688f28b02ab348ed3767", + "chksum_sha256": "3f167ba03527e52c6b3236cf547eaad59e5c22cbb7378a1a90eb2a8ab736633e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/_populate.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fe0b5773fcd48afa2ba50bdb1cc2318f5d4dc3d46362db64195210f5ff26acf2", + "chksum_sha256": "a582c68cd840533e05aaf3367b334d02dd74684b0af6a23269ff0b208bf06f5c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "93f1a75fd2d40c2d5b43a04650b66fd0d98e638e951373de1fbe2f5e22b79ce8", + "chksum_sha256": "a3de6c6599cbd3a7950c303559545975838139e9c4b6899dc85727669925a168", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "66d389919e87982a7de0c3a90adfb49bb46d953079385a160b96eade8ab816d0", + "chksum_sha256": "fed7af68aca997e00c7816b282d84fe5b3858ba27497fdfb1f3f87fd1ad7c268", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d208dc3d0e8a9a35951844e6a916db895790ccda6bd7bb550b824a7eb4477b30", + "chksum_sha256": "69c219c2446281fb3697154ddfb3a06e77f320193cd04d461a20b0362a4447e8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ba2306dde118373ceb847e377f4d6017846446a5d4f20350f3dab7ef76ed6c9a", + "chksum_sha256": "1e4d53cd354dc5e35745d702bd43dc67c57ed1548f94168f687b0cd380e30432", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b8a5a0ab330416618101c508230864f1c4d2956b5d3babe9e74ac3c295439a3c", + "chksum_sha256": "fad593c0a30c05a9399505505e33bb99d75913b2ca333fa0f5d198ecb52d3fc6", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_acls/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c9445f3494ae6fab46f8a866ba98cccfa586ddf8b3c467ca3e6da1a757d83e7b", + "chksum_sha256": "6edd326a3c4a5b18f2a041ef8e9313e870c9eff81940294307cc07a3ff90e5e5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3f35e7101f1490cb9fb6467b196a0b527dd72ef2a8d72925ec6567770bd58832", + "chksum_sha256": "d324ad8894b55b2586831251fbedab24cb4924fb90a7bb9ebe42bf6e57437ff5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "26c4083f5bd77b0b8a4a7866d3a93116bb2f0a0e9a3620beb2651b37cd2eabbb", + "chksum_sha256": "25ae2d218ceb84438e1135380d5e3f55dbede18338f5c4826bf253fbb1b91545", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_acls/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1539a41e787502ec7781cbcb2c00157799a196ce6da851d0565b96d14db4059b", + "chksum_sha256": "8ba58ba01382b709d04ad2b8b0f82c2d53d7a71a6a1a3bbfbd2b68b09de23dd8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/vars", + "name": "tests/integration/targets/iosxr_acls/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp/vars/main.yaml", + "name": "tests/integration/targets/iosxr_acls/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "28efea0049957f8eb23160dce61b09a38b89b1fa61bc53f4f53b7f809b4eebd1", + "chksum_sha256": "a07cda33c597dd4e76d3b812b962e5718c936287134221c1fbe55ff3a3490d6e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces", + "name": "tests/integration/targets/iosxr_system", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/defaults", + "name": "tests/integration/targets/iosxr_system/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_system/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_system/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "226f3a6bf7002dddaa01371fffd0478b580563bdd21ca7212f2d768935f5be13", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_system/tasks/netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "2ec33b881eaf97c9bfd901055dc833ab4f2e49f22f124da655fb04ada98dc14e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests", + "name": "tests/integration/targets/iosxr_system/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_system/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_system/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_system/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81e585cfbf29f1293be9881382ce419c6a2b0cbf9c1f87be057a241de2f44f98", + "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/_populate.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "2b84773b00c039d32e50e18779dfd48fc98e4f0012351d6d6c1ecbd740d25936", + "name": "tests/integration/targets/iosxr_system/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/_remove_config.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ec8d829135a6074a8ad75ee76a2a1a4079e03325d92c0e830515cbf90f31eb6f", + "name": "tests/integration/targets/iosxr_system/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_system/tests/cli/set_lookup_source.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "be06b4f3cb25a95c6d1950c4919025c1cb15e114624d59b18c0eaa5a7d79b52f", + "chksum_sha256": "754a7df244f40b48ec9ff6d792154255135fd7b9be267890a273eff7ad9e9799", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_system/tests/cli/set_domain_name.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "14d91239138aa32bb7f451a89aefff422136e57427583623a172747eb5814453", + "chksum_sha256": "9076279454f7438bf2047b19f82ddffc2fe20c0e4d4e7ebfdd9e71d0b9ba408b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_system/tests/cli/set_name_servers.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d6ba2253349b074129effa793f31923b22ae2448ce58a9549023db855839460d", + "chksum_sha256": "71122c961b8e1745598abef3fab16c200697475242a403da4a724d91a709ced8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_system/tests/cli/set_domain_list.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e7cf195c2dfadb34e7393d4c74acbbfcb568899d7461c2bb6b4fa5acbc48b70", + "chksum_sha256": "2d754474af95b48e0e6357e87a0133cca7ad10883053223f12df8c5c049b8393", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_system/tests/cli/set_hostname.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a8d21a0b454b78c9643c6d1c47de95eafb44e9199b1a8bca7588c0d9c91cca02", + "chksum_sha256": "2897acaae31a983f24ec8d6f97a95190092a82f7af610ca8a18a3d7bc2805e75", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "417f4d3094f95606aac731b14ae567a97c7b703114b88423cb677e0f6b2cc06c", + "name": "tests/integration/targets/iosxr_system/tests/netconf", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9dad2238d7ee4b8fb78919028c1bb64ba29d4e2088f53ecf5fa99ea9c5e29c87", + "chksum_sha256": "d018618970e16e1784aaf8e1e1af0fe66be828e75ac88630726d2cb687f77e9c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "717d1fb8c96130db8d6288c45c7c8dc46222d03917bf77b322b871ffcafd3a99", + "chksum_sha256": "ac4ac4212045c4d53698a46f935b4f7755174a0a59311ee6abfd47503af63425", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f5bdefcaae69fa3cffe08302fb9dc9f706c3fd00edd4d2c86d032983d66bedbf", + "chksum_sha256": "5ef987744cf3dad479a759862ff62b6bf3149a5fb8e0933ff023a92405af3146", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lacp_interfaces/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_lacp_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "29a8acf3766df1e54abe6a3dadfc393571647722393b132444952162b30a60ae", + "chksum_sha256": "72a77a732b1e7f734d27236d5339fe22dd7e4239f3bf8364df87140313fca83f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_system/tests/netconf/set_hostname.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f13d423556dcce1658d29446113c6e4da7fbe03defa9517c210b86100ddaba26", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/defaults", + "name": "tests/integration/targets/iosxr_lacp", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/defaults/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_lag_interfaces/tasks", + "name": "tests/integration/targets/iosxr_lacp/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_lacp/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lacp/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests", + "name": "tests/integration/targets/iosxr_lacp/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli", + "name": "tests/integration/targets/iosxr_lacp/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lacp/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_lacp/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "161c4405c145118f98f3efc7f81cd20f53fd4eca7c0604a2e06824676426191b", + "chksum_sha256": "93f1a75fd2d40c2d5b43a04650b66fd0d98e638e951373de1fbe2f5e22b79ce8", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "64195a6619101530f2cd471d76d6dbfea7ab3165c4f2763346f3c7ce3162077b", + "chksum_sha256": "66d389919e87982a7de0c3a90adfb49bb46d953079385a160b96eade8ab816d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bd4e56a2a6fc4c69833fbdf6b198e6b2cc36e62ae656d53286ff5a1e22189951", + "chksum_sha256": "ba2306dde118373ceb847e377f4d6017846446a5d4f20350f3dab7ef76ed6c9a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4662bfa7d0b5cf776e2fbaedb8b5302d292f0454cacdea054518fd1e337d9fef", + "chksum_sha256": "d208dc3d0e8a9a35951844e6a916db895790ccda6bd7bb550b824a7eb4477b30", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f847af0e5e79e0763bed170eb13e60c0cb994688d0b70f14d0ac7bd371ab1d1d", + "chksum_sha256": "1539a41e787502ec7781cbcb2c00157799a196ce6da851d0565b96d14db4059b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/_populate.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4077106b1998d758480ba741ca583bcea9685e8d9df81838902a74f5da0b4e4f", + "chksum_sha256": "fe0b5773fcd48afa2ba50bdb1cc2318f5d4dc3d46362db64195210f5ff26acf2", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "75580d3b17d3e54d3542f54410a63f647fd78e4e1167a42b01095baf6681164d", + "chksum_sha256": "b8a5a0ab330416618101c508230864f1c4d2956b5d3babe9e74ac3c295439a3c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/overridden.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "05b0d34519c01bd8145069ef131b8c42b2d948fb308f4bd50c8d5cae88b6e285", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b815ed33546d40ccc361d9255a0b79a50a034a48262a0e9d92fea684e83938c", + "chksum_sha256": "b053b09f9388c7f6208c51e8b9e53867bd6352bf37c9688f28b02ab348ed3767", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f9e3fec02b4ecb3c5316ec824369cfea049c05a0b2a95443a63d6afdac4d4bd", + "chksum_sha256": "26c4083f5bd77b0b8a4a7866d3a93116bb2f0a0e9a3620beb2651b37cd2eabbb", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0e74e052ae15e52a8d70aa1788ea86e4a2ca5287a18231c67c4fb8b65e3fc63f", + "chksum_sha256": "c9445f3494ae6fab46f8a866ba98cccfa586ddf8b3c467ca3e6da1a757d83e7b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_lacp/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "44b26adc92992ebff6de4aa4d43b0ccd72c5efb44b09416469866ca3eda28180", + "chksum_sha256": "3f35e7101f1490cb9fb6467b196a0b527dd72ef2a8d72925ec6567770bd58832", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/vars", + "name": "tests/integration/targets/iosxr_lacp/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lag_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_lacp/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e2e959c351c31c2016e6bb08f5f6ebad88c3e8bf6525d6f67c5d64e998fa9d82", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_lldp_global", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "28efea0049957f8eb23160dce61b09a38b89b1fa61bc53f4f53b7f809b4eebd1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/defaults", + "name": "tests/integration/targets/iosxr_ospfv2", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/defaults/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_lldp_global/tasks", + "name": "tests/integration/targets/iosxr_ospfv2/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests", + "name": "tests/integration/targets/iosxr_ospfv2/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli", + "name": "tests/integration/targets/iosxr_ospfv2/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_ospfv2/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc8ece13d91edafdb680a275bf4c794d642f584b24963f75e91d399d26e90dce", + "chksum_sha256": "58dd8f904e17dfd4fffd6a6e1e3a4d5387fa38bde6454ae2c5a53a34d058eca3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/_populate.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad57db9e94ca2aadfd2f45b32c2e81e8e1704d7d5a195ce520512c16821edda5", + "chksum_sha256": "bc3a8aadf532ef7cd6f55ca3fcc220ad1a1597d43b8927da151c3f8b6b3ab4f4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95e5e93bdf0c29777aa2b210fd1cf1890625966262998e2661116ec817049717", + "chksum_sha256": "05982ef9644df8c28203ff858981fc5883a0c479fae9f391262eaf5dd2b976d4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e7f5a8b2f177d64272fc6a947921672ba402efae9f50df985f9b026c4ed26f59", + "chksum_sha256": "43bd5bb5c07bc5ce5ae41802cd97f60b7474505e994ad6e03d82b615f8bbc03f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c142d0fed11008b1a62e7486b30db686dba853439164655fafdef54909bc63bd", + "chksum_sha256": "88ca6319ff4d07831545abca9e5c0cfde8baa1013cbbcf73dd697ffad6ce0b79", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eb7802fd324a06c4462213a656f1cf305b31210533f51e9d741eb2d2493d289c", + "chksum_sha256": "fb1d0eb3798a289e286e8175801c5c1e4624e15cde7976d5afe06bc98f677658", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e49f9c535fa7caa99d4f479101a39f837189d97b785fb02af518895f2c0fe9f1", + "chksum_sha256": "95564208ef074169b8b022b09f16f311333ff57c4c8dc16ea7c0a049441fdf7a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fc1699dbbe7a8cbfdf21bf4f22fb223de156d8a7d23ca00d8f623a4bb3e7837", + "chksum_sha256": "249c1fec66619c9576dd1c47f0b9abcd5377d408dc6f33b101639b8962161bc1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8f1df41b44d45fac6172c094147565b4e877bb60cfae594134a6b1c43bca0f3b", + "chksum_sha256": "fc50952bf32ba9c19dc8ce51fd6a75f07328b80b00e3105f3bd746797d027501", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a9dcf714eef59cc87ef2c4f4f117074297213b19694e6a8cedbd50760f2b39b3", + "chksum_sha256": "c081530d7ea0a30fdfefe7b92a48f9d7570b66ade21694b8faa1857d3624cfd4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c23d2dbb51d7164eab5fed3e834136b9c58d8912110cde108a85f0e20e091aac", + "chksum_sha256": "b18aabdd28ded7ce5eaeb2fc8e20e3609e78091d172c9e4467e953cf15e3b2c6", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/vars", + "name": "tests/integration/targets/iosxr_ospfv2/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_global/vars/main.yaml", + "name": "tests/integration/targets/iosxr_ospfv2/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3a4ed71b399bcf1bbc0fd2978888ebf6d151bee360e2ab4d1c87fbe35198c936", + "chksum_sha256": "7200105e66871ab7b8ae409eacde75f173708b19fbc46b5dfd512816beb5c0fd", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces", + "name": "tests/integration/targets/iosxr_ospfv2/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_ospfv2/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "31050eb7af82aad96bdf748dc26f410fa56d0fc426e7a583ab9ea261e0a23000", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/defaults/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "name": "tests/integration/targets/iosxr_bgp_templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks", + "name": "tests/integration/targets/iosxr_bgp_templates/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "73e48db0c23a63565816ea0d938e972a0a9daee404ea69b57fc39f403f1288ac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests", + "name": "tests/integration/targets/iosxr_bgp_templates/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli", + "name": "tests/integration/targets/iosxr_bgp_templates/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_bgp_templates/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_bgp_templates/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_bgp_templates/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/fixtures/parsed.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "09906ee86cc2c5b1a515dafa190e3576def507f53ed9563c471db011ab76eb54", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/_populate.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fb4c8047c353cd10a83ff0a2f9eb2c3455e1b72e81165bfecb475a5969d11c1", + "chksum_sha256": "03ffdfe82c9b009133361192299521b9457798b577daa4aee23d17cdffc2d78e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "78ab712357d68b164ba677cffc2bc61cf9184dbe7eb616461b039880544c9d4f", + "chksum_sha256": "48d0d8085ccfdfbdf58b9b8ddb7159d979047292981053056aa4028091d6f8bf", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0bdd704c64456dc5bd746f258448a6c7c132cd3b2f06849f59bc8454e1b93189", + "chksum_sha256": "cfa2236ca0b46e39df7b3b571cee8c62dabba518ce4e518d0dafa7eb3a2600ec", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3c0a26973a1f425dcb788f4de6ffb431f0fb3cb439b285427e259545f81d6079", + "chksum_sha256": "3dc246fb3ff4a02172d4d73bf3c4f014ea0093abfd61810dcc85900e37d693e4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bac4a7214f9a2a43940bb7ea473ad5c479dfed034cb1f092169751886339a4ab", + "chksum_sha256": "5bde50a48af939d0c8b43a2da46351d1acedb5dd33c69b5b2ded9f4a613f04b7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4c33155ba2ec1dea7921b926e4baa656122f8bdf75ab4e39c85fba98e981d7f6", + "chksum_sha256": "797b55ca951af676c97415a0b258709a60f737dc9710f351380a10c9eacc5566", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2c10d1cc4272407919910b0b6c62badf94ef67f853fa1ac99a581603cc9ed7da", + "chksum_sha256": "90d0a8d5622c81922045271d739a7cb2dfcadfa85af7468cac5b06e8b365440a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e2d359d45a561dcc99db2945a7e3de3c4e3564caaac19c643672331b7a2c26e0", + "chksum_sha256": "ff31325e71e86e7007d9b29d08c9f407956972156df495ac07024154d928513a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "095271b41184a0146f918498fb43a1d4808359cad386c08f3ff6ff8ae3991fc4", + "chksum_sha256": "6731146ad09a00a0ea8505b832cc08a897090e74ff69d2b5f37e3aec40689555", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aa7e3e3c95400ac64035e994ec52bc2663674bb98562dd66e70cd1a18cab813b", + "chksum_sha256": "0c48041607d4f3f9751372d34ec71b765e96d62f3d2a162c324a5ef048958c4c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e0d64d1e1033c62bbc4da61e6f2e49fb79ca27eba372a6c557a6fabc8b01548", + "chksum_sha256": "b943b447000b4e451ac3dc7544d79fe0691086f8eb2a4d34d1e248ad9934d378", "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/vars", + "name": "tests/integration/targets/iosxr_bgp_templates/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_lldp_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_templates/vars/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0dca88a635c4df7935a64b62dcc4e29afc8ea29e79c5a69790d9fa39248aa593", + "chksum_sha256": "74c848224ffad63d69ccdb5967ad262f67070521cc6e66d3e4a007f864e2971e", "format": 1 }, { @@ -6035,59 +6413,59 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/defaults", + "name": "tests/integration/targets/iosxr_logging/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_logging/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_logging/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "226f3a6bf7002dddaa01371fffd0478b580563bdd21ca7212f2d768935f5be13", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/meta/main.yaml", + "name": "tests/integration/targets/iosxr_logging/tasks/netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "fa9c4a9fe2092e91f2ea6b09ad81329cfee0b30084180265f361621d15caddfc", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/tasks", + "name": "tests/integration/targets/iosxr_logging/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_logging/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dbe24198b63b840f737a4cd64c7afcba1b1e592d1be4783c9c3f6dc058f56f60", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", + "name": "tests/integration/targets/iosxr_logging/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging/tasks/netconf.yaml", + "name": "tests/integration/targets/iosxr_logging/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4740ea295f07bc158aee9b3b971ebd5102112697440a6287802aef868498df68", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { @@ -6126,2628 +6504,2509 @@ "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global", + "name": "tests/integration/targets/iosxr_static_routes", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/defaults", + "name": "tests/integration/targets/iosxr_static_routes/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/defaults/main.yml", + "name": "tests/integration/targets/iosxr_static_routes/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "132a5c51daf268caea032e927c4d608384e0e212a9d2db31417238aa9e7f7d06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_logging_global/meta/main.yml", + "name": "tests/integration/targets/iosxr_static_routes/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "8c378f7a2ccabe54f2708379bb4258b6687e55d75f71f23690a7bf19a89895f5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tasks", + "name": "tests/integration/targets/iosxr_static_routes/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "c6e99a90b2d484e73a317de66debf8e7a3f4d2f9c89bcffc955210d2854f1acf", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_logging_global/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_static_routes/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests", + "name": "tests/integration/targets/iosxr_static_routes/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e9111575d03ca3e8cae1744708bc4329dd05fdd40ab5468d722198a6728b1dac", + "chksum_sha256": "db869687ce8a3c6f01b918be52a77e107f74116a43fe8fc9bcae14d5def7994b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "909a21409e28a252b2c0d6fccf1e6c0e2cb51d710665aa7c0cafc11d6679a727", + "chksum_sha256": "00937ba6bd39c8d9b9d57e9afafa09812ac1f9be681301623220ce59ad57de5d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6b79a9c0fb64ffb5ea3b2499161f3d284af835a1e17ff12cbfe838a09a936573", + "chksum_sha256": "f241eedfb974aee95dacdb64a7a2bd4120059f7854460bda9d3e4acf0d806fab", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "279dfdbc6e8e658f0034995198e414253f0a512c6590a311da073cae0a52d15b", + "chksum_sha256": "83dc069647949b99a4cbf01a41fce4b29ef2eb0e420bf3f27b8b7e40de474542", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2b6b32698c946e6caf83b8d756358cf0fe146dcdf81efd2b020ce595eba38bd4", + "chksum_sha256": "9a63bcc02761c785c2d76ea2af8ec715510cab7a13e2cb65223a0b2dc105f290", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8149279cc0a1da197893f2b231b99e89d35f72f7eca43c0ded62a1f7938af73e", + "chksum_sha256": "9dd1cf36a11cfb51274f12498a802efb7767a084a8c55f431f777060da24c70e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8e2c26f79a8f6cc6611dd48d408df870cc43853b8d8dd9ebe0af83465119b0df", + "chksum_sha256": "43f8d39f847501b94cbd8af0deb64f4e30353fc524822f2b2ed585fac61e0b63", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/overridden.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/delete_specific.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d72b330e428d01f36ce0ba454497558efb2aaa4a3d2f4423378d93febb7025a4", + "chksum_sha256": "4f228479698428bdefd45f559f3bfe6413dc9f46f01c8ceb54a6474dbf16b5c9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/parsed.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "10bb238d21d24df6fe4e476d542492839c1943430ea17c6cf9275eb4790da423", + "chksum_sha256": "1735d21dcfcca3b2e613b10c51eb2a0ecaad2a6f6f44fc71baae6e3a8704c0ff", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "32b4a5eb23f7544ff53968c2f2f714963b86c198caa83facbb6e36be9cb85d49", + "chksum_sha256": "2feedb5681526e889cbf30419b57f28143f328d184b986a53fcd106a3014b490", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/tests/common/replaced.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "02dd8a9273d456e158f8810372ee5f70c1b4ea56d70cfa11eb6dab8f9023b558", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_logging_global/vars", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "f6db71c5ade8ac5f359f7bb484d517f21dd6c163ee24c64d281992184ee4c783", "format": 1 }, { - "name": "tests/integration/targets/iosxr_logging_global/vars/main.yaml", + "name": "tests/integration/targets/iosxr_static_routes/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4a069b29e331858b268f0a2ab9ace19d5bf793703a8b5c452ac8724a6570506e", + "chksum_sha256": "854e3935b164f2f04624c7fef6c59a8dca0808cd4d063a9da2f632f85f94dc3e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf", + "name": "tests/integration/targets/iosxr_static_routes/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/defaults", + "name": "tests/integration/targets/iosxr_static_routes/fixtures/parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6e148c74b09c0b22e87e8e55b815a0250281aa8daabde38b951b425cfbec2442", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_static_routes/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_static_routes/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "d2335eeeaa4ace8094a5daa3fa60d634693f9b07c483babba9e3c6c265d77508", "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/meta", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/meta/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_netconf/tasks", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e255a123b33ab7ed50a160bc1f2a8c674a10bba2fc436476bce6c88b5600fee2", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "73e48db0c23a63565816ea0d938e972a0a9daee404ea69b57fc39f403f1288ac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/tests", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/tests/cli", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_netconf/tests/cli/basic.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e68ba6599b56873a91e4b0002751395d61ce254351af0256b215d553229d0984", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/defaults", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/defaults/main.yml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_route_policy.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_ntp_global/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "0357901519ac8ac68f6c7059838c4cec150ef91418cbe8f82efc4c0d43f6fa9c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/meta/main.yml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "c455861f770ac7341d3e29ba6804ffdd075bd6fac56f4e5f07b494eb12aa6cc7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_vrf_base_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9d94b9491a045f06789eaaa96222a72a7dd8f65c48d45d88dba16fac049fd704", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c6e99a90b2d484e73a317de66debf8e7a3f4d2f9c89bcffc955210d2854f1acf", + "chksum_sha256": "faf8165e1aa4827820ee0e9a0ff2c418cf23c682592ada66b626266facf9d1b9", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "9c36f82fabc3726780c6dcef3a0fa8d4d7fa7d019fef1d97e076b8fe18a443fa", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bb4ab173f008550df0cc48f83ecb505db4299ee8a9f026dff12c5af63d14b7fb", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_base_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a6c17c3999a6aa6f3d39720a51223d01ceba114a4e704ed27bec76342cd0abe0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5ecf37c4d4f8799590d36debba286353a94b76fc0f89929f5cef6cf762337fe3", + "chksum_sha256": "80bdc3eb58879b59242b45b0227e215f0c14772fb790850a5c4614c1d040852d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3ed2c59015cb8f315b1a7d5475e42fa855009b2e5d26f656eb6f80eaacf718da", + "chksum_sha256": "70746bef62da91f4d74143ebbaee0b443f901bda32a4f1e5a841b32d4c6f6f66", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3116e5b1f3807158456527c7d2ec5c4ba73c2f53d75a464c9aa0257257279ef1", + "chksum_sha256": "f559ed5b722bfebecf0cb6a696f9bbcb6ec56cf63c25e47be07bf9478e556e4e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/deleted.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "12edb69044ee3a03f3bba8317b8d590ab8f7cb428e0b6047c6e86acbf91cfa23", + "chksum_sha256": "018ace52485c2b1609f5d7d8893cfe0b99b5204eecee7eea3d3b634d614a1e1e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/_populate_vrf_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "07b3031d563cd5f7a06f39a5e4edb6f5b3334d8dd70070337cec600a6355b08f", + "chksum_sha256": "19489912900216d55b30d715921bf8e1edad2d1945ce967383c9b10bf045aa1e", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/gathered.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c8999671a348fba3821b25049396c8971fe8a24a577d5d704c8c220c81d0ecf8", + "chksum_sha256": "cb254762f05493022cfab5268eb344f0aa9c5f62129bd422903006e890d1f01f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fd90f3a750d4f51a1d947cd1952156f4b8245d1d09d4741d57b882a9ee302c2f", + "chksum_sha256": "312204dc90b5c1572a58a7a44d7590f6da0274af0a9ac9102c9c1e762694d64f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/overridden.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4c551ac7c741dcae87dfa4237c9c2387202c54e86e04d9140b8d7684d3560fb2", + "chksum_sha256": "52cb77efeb2277f2766261efd23be1b385eb0a279a4858a160fbb23e6790f898", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "37b4fdb1a797393df3d182478993235633244c539af30725013db77cec0d1178", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_bgp_neighbor_address_family/vars/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "be949100104e75250b3f92b5f02d93e8a471631a4ef398d2c24d2030c1b3a57a", + "chksum_sha256": "f9a9d7ca96d490c22c02070c8c68ba92103e69f4a072341a141d204d7173fe9f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/tests/common/replaced.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "aa640d9b74a58c56f1bff39b0d710b0f9e072c59d1029e8028071ad927e83119", + "name": "tests/integration/targets/prepare_iosxr_tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/vars", + "name": "tests/integration/targets/prepare_iosxr_tests/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ntp_global/vars/main.yaml", + "name": "tests/integration/targets/prepare_iosxr_tests/tasks/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "33b4175617133438627a3921128a558f7c3cfd5e70b930808c06634e4fe3cbc1", + "chksum_sha256": "31ae6f9228a0fabc3db6d87215aa04e1cb642f5b96cf95d40056dba6ddfcbae0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces", + "name": "tests/integration/targets/prepare_iosxr_tests/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/defaults", + "name": "tests/integration/targets/prepare_iosxr_tests/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "851860fe2ed1258710d7fcf89ac5b7d8c3c87755e89ca56fdd79bea022eb2b92", + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_iosxr_tests/templates", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/defaults/main.yaml", + "name": "tests/integration/targets/prepare_iosxr_tests/templates/config.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "a21d7b66f513ecb424fd6e23df9f0737c855281f3a5d0be6c856a0d2ce7af23b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/fixtures", + "name": "tests/integration/targets/iosxr_l2_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_l2_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_l2_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d11bd78a2d74e8dc46a2880b54b3500e2f88cc4e3e6fd42a249138556e94964a", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks", + "name": "tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_l2_interfaces/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_l2_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "96c0644d6833fa509126bfa843bb259b9c9963e2e53d5fee080bb3cdece99de7", + "chksum_sha256": "50d4197872d8d2199638a7049cfcaac7c3d9332ccdc4b432d84ab9eac3fe0899", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4377cdd354c797bde70b1ab79c25b8126309a735c3e52ada4dd3cf2c61db4c3", + "chksum_sha256": "b908ec71d04a400c46745f5f6aa67edc06711a6fa409bb6ed2570d7b7bbc7f88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a06cf74352024ffccea204ef3822fe08618aba04915148c8736f6387331f3662", + "chksum_sha256": "133cc3a327728f918408d45c77742cd31e4cc17537871f0d02674a5a48c394c7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "52c1f9bebbf6821f0b098ff9cbcdb8a1b30b1044a88f3b89e8fb8e76ea9b37c8", + "chksum_sha256": "a4d9508554b3caf42a189031a45bbe918f8d87ab46b49670f824f45e84f1f73b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "40b9f6860fef89f7797529730ca794a03fef91355da74053086820283a821df5", + "chksum_sha256": "18a4c9c8fa0b4717435de1c5b0c06e1bcc37099d4e1e2f50cd52755b5382d90f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6627fdd69a02636b86a4d138377f7e54897986e3f16878ff6a55e573eeac3793", + "chksum_sha256": "9b651c37d64cbc8d8ce70ebbf64f9edf9f32ec1b9986713f8e786bb8dd1a5b93", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b9a8c7d0bff4202802918716797b5c1a831da98ca2bebe674f77d3e13de6b1f6", + "chksum_sha256": "86dfa2d949109a946c52fca30228bdf700908e44f122a528c64d6952f5d45a78", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1cd77375707ee0397f1efbd07a4f7fdfcfbec26c86042f65c7f29f3cca9a9c3", + "chksum_sha256": "26b4e7ee16aab6f1a3a11e5b8dcd55412e8afba623415469b2aa057b23126745", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "50f480556a54480a5cff156bcb4a8fad88e60404f4ca0ffd94df379667fd7bac", + "chksum_sha256": "8735a17ccab3ecd1af096f3d1c722e7db3b0ae5c7e48667aba20f9ec6b155d08", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4ea507d63e8a9cff4eb0a1fc7dbb6a4bf4e85fe8bf3f0075dbbc6e3505648d69", + "chksum_sha256": "9eb5c038a48458b36702ea94d1bc8172511a8eadeec71fe922d406cfebf4b5c7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b92b9c34db1ed38368a5daa18ab827267e694b837a278a42224c5652f0f3d876", + "chksum_sha256": "ca461ff84f99d15126252d878ef50b92ce916783f8cb6ff91f2e2342144dcd7a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/vars", + "name": "tests/integration/targets/iosxr_l2_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospf_interfaces/vars/main.yaml", + "name": "tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "934f6f7a277e34f616d5459e1989f9e0faeaf4e0a61444289abfaf37ee120659", + "chksum_sha256": "c659daf4218da5a2de29b769dc1250d37a6a80151c93a58fb3958289f5d8d59f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2", + "name": "tests/integration/targets/iosxr_lag_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/defaults", + "name": "tests/integration/targets/iosxr_lag_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_ospfv2/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7200105e66871ab7b8ae409eacde75f173708b19fbc46b5dfd512816beb5c0fd", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tasks", + "name": "tests/integration/targets/iosxr_lag_interfaces/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_ospfv2/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "249c1fec66619c9576dd1c47f0b9abcd5377d408dc6f33b101639b8962161bc1", + "chksum_sha256": "bd4e56a2a6fc4c69833fbdf6b198e6b2cc36e62ae656d53286ff5a1e22189951", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "58dd8f904e17dfd4fffd6a6e1e3a4d5387fa38bde6454ae2c5a53a34d058eca3", + "chksum_sha256": "4662bfa7d0b5cf776e2fbaedb8b5302d292f0454cacdea054518fd1e337d9fef", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bc3a8aadf532ef7cd6f55ca3fcc220ad1a1597d43b8927da151c3f8b6b3ab4f4", + "chksum_sha256": "4077106b1998d758480ba741ca583bcea9685e8d9df81838902a74f5da0b4e4f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43bd5bb5c07bc5ce5ae41802cd97f60b7474505e994ad6e03d82b615f8bbc03f", + "chksum_sha256": "f847af0e5e79e0763bed170eb13e60c0cb994688d0b70f14d0ac7bd371ab1d1d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "05982ef9644df8c28203ff858981fc5883a0c479fae9f391262eaf5dd2b976d4", + "chksum_sha256": "44b26adc92992ebff6de4aa4d43b0ccd72c5efb44b09416469866ca3eda28180", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fb1d0eb3798a289e286e8175801c5c1e4624e15cde7976d5afe06bc98f677658", + "chksum_sha256": "75580d3b17d3e54d3542f54410a63f647fd78e4e1167a42b01095baf6681164d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95564208ef074169b8b022b09f16f311333ff57c4c8dc16ea7c0a049441fdf7a", + "chksum_sha256": "05b0d34519c01bd8145069ef131b8c42b2d948fb308f4bd50c8d5cae88b6e285", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c081530d7ea0a30fdfefe7b92a48f9d7570b66ade21694b8faa1857d3624cfd4", + "chksum_sha256": "64195a6619101530f2cd471d76d6dbfea7ab3165c4f2763346f3c7ce3162077b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b18aabdd28ded7ce5eaeb2fc8e20e3609e78091d172c9e4467e953cf15e3b2c6", + "chksum_sha256": "161c4405c145118f98f3efc7f81cd20f53fd4eca7c0604a2e06824676426191b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fc50952bf32ba9c19dc8ce51fd6a75f07328b80b00e3105f3bd746797d027501", + "chksum_sha256": "0e74e052ae15e52a8d70aa1788ea86e4a2ca5287a18231c67c4fb8b65e3fc63f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "88ca6319ff4d07831545abca9e5c0cfde8baa1013cbbcf73dd697ffad6ce0b79", + "chksum_sha256": "9b815ed33546d40ccc361d9255a0b79a50a034a48262a0e9d92fea684e83938c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/vars", + "name": "tests/integration/targets/iosxr_lag_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9f9e3fec02b4ecb3c5316ec824369cfea049c05a0b2a95443a63d6afdac4d4bd", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lag_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv2/vars/main.yaml", + "name": "tests/integration/targets/iosxr_lag_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "31050eb7af82aad96bdf748dc26f410fa56d0fc426e7a583ab9ea261e0a23000", + "chksum_sha256": "e2e959c351c31c2016e6bb08f5f6ebad88c3e8bf6525d6f67c5d64e998fa9d82", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3", + "name": "tests/integration/targets/iosxr_command", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/defaults", + "name": "tests/integration/targets/iosxr_command/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_command/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/fixtures", + "name": "tests/integration/targets/iosxr_command/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2dbe0b4a48613e36db6dc24d1cc5587a9339d560c7be5fb830643a5e9a97f6db", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_command/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_command/meta/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "717d5351bebea57a2f0ccd874a2517595c2dda6c4ca8cb3c6de7c0902aa14b75", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tasks", + "name": "tests/integration/targets/iosxr_command/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_ospfv3/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_command/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests", + "name": "tests/integration/targets/iosxr_command/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli", + "name": "tests/integration/targets/iosxr_command/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/prompt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "97c41a9ab68d27a209106c1f47557a5659ca2e8914fdef8e29514b208c8c771b", + "chksum_sha256": "1c2d2d6c07d37bbd84190440034126fc5d74de4e55e824813974e059a9413ec2", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/invalid.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "46bf472822cc2a45ce47c1ac6c8059fc5f228be53f0ee692765832aa1541f811", + "chksum_sha256": "985f58c4989f203f257c68725a9877e3ee3b5f4783af27429698e9a335d40605", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/contains.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3868e7338c957b993dc0c75d57c8b0d8163da1024f25c1449a3416f3688c44ee", + "chksum_sha256": "7d9716e753ba5366a03ac74d4787a8cc31547382904b1316605503d481afb1b7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/bad_operator.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "771f96cd83c9a893ed5ea4eb2d25b331fa2728f8399f0fb2327327a2eea69eb8", + "chksum_sha256": "9d53587f24caf85f74a90aa38d629e1821967b99c42a52603745a2536000bc64", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/output.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b74c20ce7b08e53ee2f6ad55e8964e7d763329b130c8a57f5962395f1daf2a13", + "chksum_sha256": "53ebb6e7f4ab53c74c9baa8d4f0bb7b62453e6cdd0e974df88dc334d573aaf6f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/timeout.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0432f28e01aa6fcf74a9f27e1d245b6e7368bdf7c4e6cada6911becc1a5d8cd6", + "chksum_sha256": "96843e537eee47517c5049885b84061a141b2eeba5680c11c5b66693d7be09b5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_command/tests/cli/cli_command.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "296f132a73194b9b2d134f6cba1b69da8f2e1f3345c4cf5952c8fe686e1eac91", + "chksum_sha256": "36008ced825f92916c9c1a8063d7d3af07a89cc64d6692a28d825eb1c6a020be", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "820c9d8378bc3893f82eef7b74466761336b9e7acf36c99a76ab549c03fefab0", + "name": "tests/integration/targets/iosxr_netconf", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/rendered.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "959f73cb330969c6963963b3a9c6ced291c02803d8b43e0d280691e1abb94a88", + "name": "tests/integration/targets/iosxr_netconf/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_netconf/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "38ac896b32ffc759f2b4e498126f827b96d1cb0cec61a9c8e1669aee7d68af1c", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_netconf/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fe864b51e70814be13bf52e56f90108c6f6f874ddf23fc9c229019215bab349f", + "chksum_sha256": "19f48e1c0e26a39016c6e5d4b89a0cb15fdaa31aa34a29e64f7e595e3c1fe967", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/vars", + "name": "tests/integration/targets/iosxr_netconf/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ospfv3/vars/main.yaml", + "name": "tests/integration/targets/iosxr_netconf/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c4aba6eec7b51359a3fee25b2909806dcb3d618ca09f641e74fb227c1bb8275f", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_ping", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/defaults", + "name": "tests/integration/targets/iosxr_netconf/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_netconf/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tasks", + "name": "tests/integration/targets/iosxr_netconf/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", + "name": "tests/integration/targets/iosxr_netconf/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_netconf/tests/cli/basic.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "e68ba6599b56873a91e4b0002751395d61ce254351af0256b215d553229d0984", "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tests", + "name": "tests/integration/targets/iosxr_lldp_global", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tests/cli", + "name": "tests/integration/targets/iosxr_lldp_global/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_ping/tests/cli/ping.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5c196cce06bc05f3315cddb3f355cb0b4d6417314c420e64d3af66765d697551", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_prefix_lists", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_prefix_lists/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tasks", + "name": "tests/integration/targets/iosxr_lldp_global/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_prefix_lists/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_prefix_lists/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli", + "name": "tests/integration/targets/iosxr_lldp_global/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/fixtures", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6124272ed18483b35ecc3e79e5dc7a97fb53f4cd02ad193d1d860f408711fd5b", + "chksum_sha256": "95e5e93bdf0c29777aa2b210fd1cf1890625966262998e2661116ec817049717", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "faa07f9fa788bf1fe18e07fb1d06f797b05da7a822318916f969975dfaac5478", + "chksum_sha256": "e7f5a8b2f177d64272fc6a947921672ba402efae9f50df985f9b026c4ed26f59", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "351ab25b2412eee119ffee510ebe0b70b40b13e8111e0c4b2b5c519bdda51634", + "chksum_sha256": "eb7802fd324a06c4462213a656f1cf305b31210533f51e9d741eb2d2493d289c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "00f68885674a79797fd718487a3df7e70af4782785456212e76c50cf85495517", + "chksum_sha256": "c142d0fed11008b1a62e7486b30db686dba853439164655fafdef54909bc63bd", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0b1cc12f4914b97b943e06edd3ffa0a27d298e50fdde3170dd1257a1c9fdf07c", + "chksum_sha256": "c23d2dbb51d7164eab5fed3e834136b9c58d8912110cde108a85f0e20e091aac", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/_populate.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f40f0a57eb589df2ee64a1628873874408bf7504b5620c6b275450116f81dae0", + "chksum_sha256": "ad57db9e94ca2aadfd2f45b32c2e81e8e1704d7d5a195ce520512c16821edda5", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a43a99763a924f63fec89ac15da6a0e52887599d1f3c8c22df8e5b083fdf9f38", + "chksum_sha256": "e49f9c535fa7caa99d4f479101a39f837189d97b785fb02af518895f2c0fe9f1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/overridden.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "293a473418d1ab4abe4b92f1ad395d0798f956c6e81b60b8a9c96ef6423702b9", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0cd46bf6eb4382f30d13e184852377422958a6f882a49dd694b3a82709265ac8", + "chksum_sha256": "cc8ece13d91edafdb680a275bf4c794d642f584b24963f75e91d399d26e90dce", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2bc68f81719327ba9af3add49753b86806a773ae4d1dd82cc28b1d082056aa25", + "chksum_sha256": "a9dcf714eef59cc87ef2c4f4f117074297213b19694e6a8cedbd50760f2b39b3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "35f8c72cfa440d55ad5148e38ef607e05bbb6cd1632a6ac7425d351ac301680b", + "chksum_sha256": "1fc1699dbbe7a8cbfdf21bf4f22fb223de156d8a7d23ca00d8f623a4bb3e7837", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "98eb3a3642a23b70e1b74c890a478169edcb4a079cb75d158fceb89da2e9a16c", + "chksum_sha256": "8f1df41b44d45fac6172c094147565b4e877bb60cfae594134a6b1c43bca0f3b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/vars", + "name": "tests/integration/targets/iosxr_lldp_global/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_prefix_lists/vars/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_global/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "056300e86e33d8bd4c6a91441a5aebdb0f1c0aac51930895ad3862211ead4b78", + "chksum_sha256": "3a4ed71b399bcf1bbc0fd2978888ebf6d151bee360e2ab4d1c87fbe35198c936", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke", + "name": "tests/integration/targets/iosxr_lldp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/defaults", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/meta", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lldp_interfaces/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/meta/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tasks", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "9e6ed3edf43704d8fb4d6afd89b39e51ba63353d55dfa8a427089e5e3ce4042a", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", + "chksum_sha256": "78ab712357d68b164ba677cffc2bc61cf9184dbe7eb616461b039880544c9d4f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tasks/netconf.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "97ecc439f17c2339526fb640f64872fb05450efdd41c6757b594bd52396fd76c", + "chksum_sha256": "0bdd704c64456dc5bd746f258448a6c7c132cd3b2f06849f59bc8454e1b93189", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bac4a7214f9a2a43940bb7ea473ad5c479dfed034cb1f092169751886339a4ab", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3c0a26973a1f425dcb788f4de6ffb431f0fb3cb439b285427e259545f81d6079", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests/cli/caching.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e1dba81f68c64f197ee9bf87378ce1306b01740319f063a555bc3ed23ede1a01", + "chksum_sha256": "6e0d64d1e1033c62bbc4da61e6f2e49fb79ca27eba372a6c557a6fabc8b01548", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests/cli/common_config.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/_populate.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1090b517c30bb3086c8e82909cafae786ef234aa5e49db4073cd7ed94a1339be", + "chksum_sha256": "1fb4c8047c353cd10a83ff0a2f9eb2c3455e1b72e81165bfecb475a5969d11c1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests/netconf", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4c33155ba2ec1dea7921b926e4baa656122f8bdf75ab4e39c85fba98e981d7f6", "format": 1 }, { - "name": "tests/integration/targets/iosxr_smoke/tests/netconf/common_netconf.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "101eb3edf7114ed0a02320acc9b5a3d91add238079336f8e6a020bead66924d0", + "chksum_sha256": "2c10d1cc4272407919910b0b6c62badf94ef67f853fa1ac99a581603cc9ed7da", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/fixtures/parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "09906ee86cc2c5b1a515dafa190e3576def507f53ed9563c471db011ab76eb54", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/defaults/main.yml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", + "chksum_sha256": "aa7e3e3c95400ac64035e994ec52bc2663674bb98562dd66e70cd1a18cab813b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e2d359d45a561dcc99db2945a7e3de3c4e3564caaac19c643672331b7a2c26e0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/meta/main.yml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/tests/cli/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "095271b41184a0146f918498fb43a1d4808359cad386c08f3ff6ff8ae3991fc4", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tasks", + "name": "tests/integration/targets/iosxr_lldp_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1e9c0370fd822035db65a96ea1200873358ce2996d3ca3cec720fd1ee86012d1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_snmp_server/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lldp_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", + "chksum_sha256": "0dca88a635c4df7935a64b62dcc4e29afc8ea29e79c5a69790d9fa39248aa593", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests", + "name": "tests/integration/targets/iosxr_smoke", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common", + "name": "tests/integration/targets/iosxr_smoke/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_parsed.cfg", + "name": "tests/integration/targets/iosxr_smoke/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a4e26c01ab8c4e0f46bbacc76fc290c380ef19ae68f2f3e48db74c3f3e0554f8", + "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_smoke/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "51190a6fdbc4b50898f72ccb49c0e3f7c8856ed9483e53bffbae15805d583c7c", + "chksum_sha256": "40afb148ddcbe35a254f1ce45c8ba687b3b892aab717f66681c6be8bde22e308", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_smoke/tasks/netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c84f687a0d23e760666157720b95281a7e02562f1304efbb9c904f542c7ef969", + "chksum_sha256": "4ad5dae3d18e72e98b8a55fdd73f3b01d51db09ebb761501da3b84d54a36a945", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/deleted.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "ae3ae2d79689b84f4e7d6094ce2e78a4ff7e4ab351b50893aa2ffbb47377e75d", + "name": "tests/integration/targets/iosxr_smoke/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/empty_config.yaml", + "name": "tests/integration/targets/iosxr_smoke/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d365f215fa2285f64eaffc334997ac4ba381ba0fe72d1f0ddcfecac8b076eda0", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/gathered.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4d26d4eb07781e55845119a7c3513bc94bd975804d6a5e2f86a63086bffaea4a", + "name": "tests/integration/targets/iosxr_smoke/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/merged.yaml", + "name": "tests/integration/targets/iosxr_smoke/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d537c09198b49b391f157eba859faa21d25fe4e4db79228887b12586b2207ef7", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/overridden.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "92a61d453a67eba0f68f754f46ae9ef6b90567ad40e8555fd46868a595bef998", + "name": "tests/integration/targets/iosxr_smoke/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/parsed.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "990985bc43befcb4befb0737e5dc22784856b95aa04a8139dee5020628aca31d", + "name": "tests/integration/targets/iosxr_smoke/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/rendered.yaml", + "name": "tests/integration/targets/iosxr_smoke/tests/cli/common_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81d07f1d66f078236899a5e835c4d53479004393bfb1ca80caccd1afa0cdea90", + "chksum_sha256": "1090b517c30bb3086c8e82909cafae786ef234aa5e49db4073cd7ed94a1339be", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/tests/common/replaced.yaml", + "name": "tests/integration/targets/iosxr_smoke/tests/cli/caching.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a38d54a4fd46f4c94df79af4550ad013eb6cf28a11f2ddab930527a035c6349a", + "chksum_sha256": "e1dba81f68c64f197ee9bf87378ce1306b01740319f063a555bc3ed23ede1a01", "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/vars", + "name": "tests/integration/targets/iosxr_smoke/tests/netconf", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_snmp_server/vars/main.yaml", + "name": "tests/integration/targets/iosxr_smoke/tests/netconf/common_netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0f9c668532272c0b616e70d3d77dae2fb25871e3d07b04cc8702b25f51ec4ab1", + "chksum_sha256": "101eb3edf7114ed0a02320acc9b5a3d91add238079336f8e6a020bead66924d0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes", + "name": "tests/integration/targets/iosxr_lacp_interfaces", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/defaults", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_static_routes/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/fixtures/parsed.cfg", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e148c74b09c0b22e87e8e55b815a0250281aa8daabde38b951b425cfbec2442", + "chksum_sha256": "84d6592471825e4bcaa55452b39c090fd8c05d17695f8ace236d00772df9af88", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tasks", + "name": "tests/integration/targets/iosxr_lacp_interfaces/defaults", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tasks/cli.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "706ed5b9d308bf3ebf807a4a67f2f2d36fab52fbf1db2599c56911ffd36caa99", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_static_routes/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1f2494ffa73842d0da2f38e4744624c2aa88ee473d24e33d626e7cb28b2d822", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/_populate_config.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1735d21dcfcca3b2e613b10c51eb2a0ecaad2a6f6f44fc71baae6e3a8704c0ff", + "chksum_sha256": "ec8d829135a6074a8ad75ee76a2a1a4079e03325d92c0e830515cbf90f31eb6f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/_remove_config.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "db869687ce8a3c6f01b918be52a77e107f74116a43fe8fc9bcae14d5def7994b", + "chksum_sha256": "be06b4f3cb25a95c6d1950c4919025c1cb15e114624d59b18c0eaa5a7d79b52f", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/deleted.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "00937ba6bd39c8d9b9d57e9afafa09812ac1f9be681301623220ce59ad57de5d", + "chksum_sha256": "d6ba2253349b074129effa793f31923b22ae2448ce58a9549023db855839460d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/empty_config.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "83dc069647949b99a4cbf01a41fce4b29ef2eb0e420bf3f27b8b7e40de474542", + "chksum_sha256": "14d91239138aa32bb7f451a89aefff422136e57427583623a172747eb5814453", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/gathered.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/rtt.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f241eedfb974aee95dacdb64a7a2bd4120059f7854460bda9d3e4acf0d806fab", + "chksum_sha256": "f5bdefcaae69fa3cffe08302fb9dc9f706c3fd00edd4d2c86d032983d66bedbf", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/merged.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/_populate.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9dd1cf36a11cfb51274f12498a802efb7767a084a8c55f431f777060da24c70e", + "chksum_sha256": "2b84773b00c039d32e50e18779dfd48fc98e4f0012351d6d6c1ecbd740d25936", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/overridden.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43f8d39f847501b94cbd8af0deb64f4e30353fc524822f2b2ed585fac61e0b63", + "chksum_sha256": "6e7cf195c2dfadb34e7393d4c74acbbfcb568899d7461c2bb6b4fa5acbc48b70", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/parsed.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/overridden.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f6db71c5ade8ac5f359f7bb484d517f21dd6c163ee24c64d281992184ee4c783", + "chksum_sha256": "a8d21a0b454b78c9643c6d1c47de95eafb44e9199b1a8bca7588c0d9c91cca02", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/rendered.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/fixtures/parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "854e3935b164f2f04624c7fef6c59a8dca0808cd4d063a9da2f632f85f94dc3e", + "chksum_sha256": "81e585cfbf29f1293be9881382ce419c6a2b0cbf9c1f87be057a241de2f44f98", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/replaced.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/replaced.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2feedb5681526e889cbf30419b57f28143f328d184b986a53fcd106a3014b490", + "chksum_sha256": "717d1fb8c96130db8d6288c45c7c8dc46222d03917bf77b322b871ffcafd3a99", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/tests/cli/rtt.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9a63bcc02761c785c2d76ea2af8ec715510cab7a13e2cb65223a0b2dc105f290", + "chksum_sha256": "417f4d3094f95606aac731b14ae567a97c7b703114b88423cb677e0f6b2cc06c", "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/vars", + "name": "tests/integration/targets/iosxr_lacp_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9dad2238d7ee4b8fb78919028c1bb64ba29d4e2088f53ecf5fa99ea9c5e29c87", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_lacp_interfaces/vars", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_static_routes/vars/main.yaml", + "name": "tests/integration/targets/iosxr_lacp_interfaces/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d2335eeeaa4ace8094a5daa3fa60d634693f9b07c483babba9e3c6c265d77508", + "chksum_sha256": "29a8acf3766df1e54abe6a3dadfc393571647722393b132444952162b30a60ae", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system", + "name": "tests/integration/targets/iosxr_config", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/defaults", + "name": "tests/integration/targets/iosxr_config/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_config/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b6cec8117492a3110c2e9066aa77a54abd2b9774cea08d60eb42b01c51c3e032", + "chksum_sha256": "3ba11d0a6ecc4c096ca24c09fc0f707954d3dc64ac8964ea17901fe60887213a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_config/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aeaea690f4a27b4af77c33a24968cdc89de2ca73e590d9ec1db4b80842750bb7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/meta/main.yml", + "name": "tests/integration/targets/iosxr_config/tasks/cli_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", + "chksum_sha256": "c2b1c324c2399a7589d2fd4a7ed9b201f8a8299424924277b67298903db1d3cd", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tasks", + "name": "tests/integration/targets/iosxr_config/tasks/redirection.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4dda061736323dd09fa0832d73a74f4dec4a7c4665357ad20c914f15778cf99f", + "format": 1 + }, + { + "name": "tests/integration/targets/iosxr_config/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_config/meta/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dbe24198b63b840f737a4cd64c7afcba1b1e592d1be4783c9c3f6dc058f56f60", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tasks/main.yaml", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", + "name": "tests/integration/targets/iosxr_config/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tasks/netconf.yaml", + "name": "tests/integration/targets/iosxr_config/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "44cb8a399ae906e6a53713cf6dc2ee6a36d466099d66024cedb7a79a40155b35", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests", + "name": "tests/integration/targets/iosxr_config/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli", + "name": "tests/integration/targets/iosxr_config/tests/cli", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli/set_domain_list.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_before.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2d754474af95b48e0e6357e87a0133cca7ad10883053223f12df8c5c049b8393", + "chksum_sha256": "19a5a9e3043bd0b74fd7e71956374e204626d4346262c0c4cd3d9c579bb89f87", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli/set_domain_name.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_after.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9076279454f7438bf2047b19f82ddffc2fe20c0e4d4e7ebfdd9e71d0b9ba408b", + "chksum_sha256": "75053a4dca4669bd74e8c0edca7056cd31c40751cba6379774c337e466203cd6", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli/set_hostname.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_strict.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2897acaae31a983f24ec8d6f97a95190092a82f7af610ca8a18a3d7bc2805e75", + "chksum_sha256": "33a343c4930c4bd86c2f660177d059bdf6c44e52b4224ecd7e8ade878687544a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli/set_lookup_source.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/extcommunity_set_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "754a7df244f40b48ec9ff6d792154255135fd7b9be267890a273eff7ad9e9799", + "chksum_sha256": "cb9f1df2b57e8364e823fb60276e322bd994be2df12b42a7cfddb461bb3e0dc0", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/cli/set_name_servers.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/commit_label.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "71122c961b8e1745598abef3fab16c200697475242a403da4a724d91a709ced8", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_system/tests/netconf", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "873e365af69c26af8ed84b963e8f670dfbf86dca68811b164b1465417160070a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/commit_confirmed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f87bfdf19d2b78cd02b4b93cfbcfcc04412eaceca0e02b1ad3d42bf47479109b", + "chksum_sha256": "9653c9ff2afc35783f116961cb926bb5f1943c963d05125998cf71c2d18bc182", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/src_match_none.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b03f3ce596e6beb0cf69292fa19db37aecec7384a25af8221ed950ed8b6d4422", + "chksum_sha256": "21a37a276566385dcce522dd5b49dbcc7615ee5ef44b197b753875c469efa34a", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/netconf/set_hostname.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_block.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f13d423556dcce1658d29446113c6e4da7fbe03defa9517c210b86100ddaba26", + "chksum_sha256": "45be4aed01d01d3a88065e21b231390a90c01575db70fe99bc373d253a483945", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel_nonidempotent.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b2f63597c28d4380d48df68f011cb0535a847117674c714f047a1e561cd75882", + "chksum_sha256": "4b629cb3f6c037494f307266e968320063f5533907d7b2b73a2f4c0cb8b91508", "format": 1 }, { - "name": "tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/toplevel.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "789c38796adae0c786cf82f8d92e5feefc6e7ea56a708e794757019811ec7bd8", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/defaults", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "98194ad2b27b0a9722de6305af5d2446201c488a21e52d33f31b82f51dcb9dbc", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/defaults/main.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_strict_mul_parents.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/files", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "8e641ad89ffb073b8597de019fae0ac2a48482a6a33ff9a3cadd97f364100c70", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/files/private", + "name": "tests/integration/targets/iosxr_config/tests/cli/comment.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "defce0b7196d17e47b5dd1ba865e6287590deb3638a980bcbc3cc2d2b9975060", + "chksum_sha256": "1880bcdadc904a2cb1d98478fc780763371648a392c6e383eb2102d26bff1ba1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/files/public.pub", + "name": "tests/integration/targets/iosxr_config/tests/cli/prefix_set_remark.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cd8730417146b7691724621b213a5c6aa5e5120829714a2f62334ee23f8c4c6f", + "chksum_sha256": "0fb66964d634451765de4922678ada90649e02acb0bc6f5b5ab6c723a506bc1d", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/files/public2.pub", + "name": "tests/integration/targets/iosxr_config/tests/cli/replace_block.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "314ca10b7e701d611d26112edca77074095fb252f57326c123671dc062816d16", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/meta", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "864b44dbf232d2e1d731ad33a2fb89523b94a21ebba2b8fa9cf1d87f53d4a4d3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/meta/main.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel_exact.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/tasks", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "e18cbd1b58ce8368d11e0948fc75860f2b21e4092c74129d894fb7e4fa46dda1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tasks/cli.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/comment-too-long.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "47f069f74dd2e77922071cdb30729e7604ed360f548abea9e7974f028b8bb4f7", + "chksum_sha256": "3620ac43ca5135f0c0a49e2aeba5ab73a4c2704554d27c87ee4284f87f784bfc", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tasks/main.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/src_basic.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", + "chksum_sha256": "5cd6945ede088394c6599ee3b5f2aeddc0c3ed856db44fd8864a626576b79c38", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tasks/netconf.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/route_policy.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c70db2bd33581fe069ce9828b964657e2129362d2a67bb80eeac90b35cdc3ab4", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/tests/cli", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "604f5b5f96027a1c3e5768650bdfd7687d1fed0a5045a3e5b9805dddd5fae6a7", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tests/cli/basic.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/backup.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0e5876713521246628445bdb96a184c1e60d03021606d7a36756530776b349e", - "format": 1 - }, - { - "name": "tests/integration/targets/iosxr_user/tests/common", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "e89b8bf2ae0c1dd3d859a77494f6f89abfccbfb1e6be30c2d5d17d3296b0cb8b", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tests/common/auth.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/src_invalid.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9224502c4840d7a5a882359cb039d3138bcfba2d2e65bdd087205bf8c9469645", + "chksum_sha256": "ceaff4b3620df90e8208f020adfa3d1b12ca9bef955fd8e01ef5f0395b4fdcd1", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tests/netconf", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_config/tests/cli/misplaced_sublevel.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "55ebc624d7356f89f6c2bb32d13aceff80e8df04d57c28f463023a7aca814ee3", "format": 1 }, { - "name": "tests/integration/targets/iosxr_user/tests/netconf/_basic.yaml", + "name": "tests/integration/targets/iosxr_config/tests/cli/replace_config.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ac6cb4e857731746f1144bdb918104837c945664663606e1b2789aa238a972df", + "chksum_sha256": "520231e3fab8fd0eed892322eb5e630667f32730b89f1a06e01c22a72d33ff45", "format": 1 }, { - "name": "tests/integration/targets/prepare_iosxr_tests", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_config/tests/cli/sublevel.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "81d687e492374044859a0efcfa6dc922fb526648b8631faf70b621ae6742489d", "format": 1 }, { - "name": "tests/integration/targets/prepare_iosxr_tests/tasks", + "name": "tests/integration/targets/iosxr_config/tests/redirection", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/prepare_iosxr_tests/tasks/main.yml", + "name": "tests/integration/targets/iosxr_config/tests/redirection/shortname.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "31ae6f9228a0fabc3db6d87215aa04e1cb642f5b96cf95d40056dba6ddfcbae0", + "chksum_sha256": "c82a2cf83917d7934e758a867235e53629945aa1739c3101bbf61adfb9f248cb", "format": 1 }, { - "name": "tests/integration/targets/prepare_iosxr_tests/templates", + "name": "tests/integration/targets/iosxr_config/tests/cli_config", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/integration/targets/prepare_iosxr_tests/templates/config.j2", + "name": "tests/integration/targets/iosxr_config/tests/cli_config/cli_backup.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a21d7b66f513ecb424fd6e23df9f0737c855281f3a5d0be6c856a0d2ce7af23b", + "chksum_sha256": "6c6e65aa217139078a0e172b54fc00eb2cfe51f2079cb7d9b0a5d9c5d2a74ca6", "format": 1 }, { - "name": "tests/integration/target-prefixes.network", + "name": "tests/integration/targets/iosxr_config/tests/cli_config/cli_basic.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d577d6580d29511474adecf53c2c66b66aced6b624c4f6c3781138d69870707a", + "chksum_sha256": "256bd79f69876e184c69f562b22d1954e91f78e0386e273f4f11c5cf74b1d350", "format": 1 }, { - "name": "tests/sanity", + "name": "tests/integration/targets/iosxr_config/fixtures", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/sanity/ignore-2.10.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "b80ddd033786bdf42ec60ea27d8912027aab5503b04d645cd6038e271b178550", - "format": 1 - }, - { - "name": "tests/sanity/ignore-2.11.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "8e29c0715a8c391f29c544ee835577ffcfb411f2db421a4c2fb30525fa1fd1dc", - "format": 1 - }, - { - "name": "tests/sanity/ignore-2.12.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1415fb1afea88fa612ce476b1fdbf7ec00f5de46f28ada2f12b4962d88eb8422", - "format": 1 - }, - { - "name": "tests/sanity/ignore-2.13.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4ca67fc6717983d1b834fea4abfc019106d27a024450a40efe4748212f2906d9", - "format": 1 - }, - { - "name": "tests/sanity/ignore-2.14.txt", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "bc2746ccbc638e7f25d37056252a4f750d9272506aadedc7fe7e7173662df5ab", - "format": 1 - }, - { - "name": "tests/sanity/ignore-2.15.txt", + "name": "tests/integration/targets/iosxr_config/fixtures/config_add_interface.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bc2746ccbc638e7f25d37056252a4f750d9272506aadedc7fe7e7173662df5ab", + "chksum_sha256": "ab5bf303021e5250cd67b0f4ad25b8127b74dd2d8630266a382d9ab2aa4c248b", "format": 1 }, { - "name": "tests/sanity/ignore-2.9.txt", + "name": "tests/integration/targets/iosxr_config/fixtures/config_del_interface.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f32fdcc2ce76309bd2f8a9e15568b9e3a0fbe1d339b4c8ba0c613318baafa4e9", + "chksum_sha256": "087d7655b24ffcd3191a5cab8015486b1da1488345f6e7617b0523f575b0400c", "format": 1 }, { - "name": "tests/unit", + "name": "tests/integration/targets/iosxr_config/templates", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/compat", + "name": "tests/integration/targets/iosxr_config/templates/basic", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/compat/__init__.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/init_prefix_set.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "92dec92ecf095d1c33c493f4769541caa745787d80e498d6ae81decc93351e0a", "format": 1 }, { - "name": "tests/unit/compat/builtins.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/configuration.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "04633fb05536d80aea8dd451d6413ec01cee493596750d8557ba3c389951597e", + "chksum_sha256": "1fd4692dc95cf561f544f8f680c9046add01c85c6fb83c17db2690cb854d3bb8", "format": 1 }, { - "name": "tests/unit/compat/mock.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy_change.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a4e0ca26e6e2982bc40db782db3a0d4950e8c5a749171c0da22c27c85acd23ea", + "chksum_sha256": "95c74f6778f25c6385437de97ec5ffbbef5414ed42115d8b7ee276fe5d7fdd64", "format": 1 }, { - "name": "tests/unit/compat/unittest.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy_clean.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "727203a3846be41893b78a4b77852a1658925e936fb19539551958a5d8e8fb81", - "format": 1 - }, - { - "name": "tests/unit/mock", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "chksum_sha256": "baa2f889363d8827d04378ac81e1516d840d64a721e4cc8284c937390206904c", "format": 1 }, { - "name": "tests/unit/mock/__init__.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/interface_config.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "3209d667d131c751b8cb1954bceec81eccb663a5e257b81b7394a9edcb9e0d70", "format": 1 }, { - "name": "tests/unit/mock/loader.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/config.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "657412953ce0db75de55e7f16e441d36c8c4fa31f2bf6299cc90051b61ab66ca", + "chksum_sha256": "fed860520ec0b19850744af6be1c77939335d4a09539bf563d0c15aa6afc84ef", "format": 1 }, { - "name": "tests/unit/mock/path.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/route_policy.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cb57942afe0176fd422c5d6575f6b0bdbbd65d6293fe9709629b43febde81bef", + "chksum_sha256": "83c3226c2070afbe01cde658ec7852261ac925abed96766989888c70a2f8bc92", "format": 1 }, { - "name": "tests/unit/mock/procenv.py", + "name": "tests/integration/targets/iosxr_config/templates/basic/change_prefix_set.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8355a91c013778f8b70896222e8223d67b743fd8ba2bf541f4ea4d7d460b01ef", + "chksum_sha256": "91a0239cde35ce8e75ad24c8f9c853014cd0c7a5554171ee3b0ad50cc8ed67f5", "format": 1 }, { - "name": "tests/unit/mock/vault_helper.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "55bd0e924dcc22d050612c944bff0ef745e51faac9260dce9b9b2018c4c8a661", + "name": "tests/integration/targets/iosxr_config/templates/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/mock/yaml_helper.py", + "name": "tests/integration/targets/iosxr_config/templates/defaults/config.j2", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "134eef238c83a9611799871b743e49e9bfbcd8bdddf2cc6a7bf69fd1000345b3", + "chksum_sha256": "c67459067166baed6059b02907fb2692e34868270185b09fcd9f5d7c3ec013d0", "format": 1 }, { - "name": "tests/unit/modules", + "name": "tests/integration/targets/iosxr_hostname", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network", + "name": "tests/integration/targets/iosxr_hostname/tasks", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_hostname/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "afc73a39f8a8861930e2a6a542ccd07426663ec0584b218987ef2b456d8c00d7", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_hostname/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2d3350be00fa2af0f217f369684578df724bcf9550402e7a54ef1b84f32dcb53", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf", + "name": "tests/integration/targets/iosxr_hostname/meta", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr", - "ftype": "dir", - "chksum_type": null, - "chksum_sha256": null, + "name": "tests/integration/targets/iosxr_hostname/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr/show_running-config_hostname", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "749f869982a235df56c1c7e404744c441340ff6da90dece0c8b83d63ff47e7af", + "name": "tests/integration/targets/iosxr_hostname/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf/iosxr/show_version__utility_head_-n_20", + "name": "tests/integration/targets/iosxr_hostname/defaults/main.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc08220e9647a2a3d34640ffabc08fd34f9601e229ab7cdf5ce4224f62cc158b", + "chksum_sha256": "7d754db246e92eda93bade9b741e09afdc7c5ba2754a4ea5d874f92a479b65d0", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540", + "name": "tests/integration/targets/iosxr_hostname/tests", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr", + "name": "tests/integration/targets/iosxr_hostname/tests/common", "ftype": "dir", "chksum_type": null, "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr/show_running-config_hostname", + "name": "tests/integration/targets/iosxr_hostname/tests/common/_remove_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "749f869982a235df56c1c7e404744c441340ff6da90dece0c8b83d63ff47e7af", + "chksum_sha256": "33bb48f812aef67e24ce8cffc06916f7f8adbb8977853170aeb32dd150bf334e", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/cliconf_ncs540/iosxr/show_version__utility_head_-n_20", + "name": "tests/integration/targets/iosxr_hostname/tests/common/deleted.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ca53ef4a0ab10529e7d5df9fd669fae547be148b08ee7075141212ab90a1e929", + "chksum_sha256": "0c727923bf03a87bd59efc3eb98d414cf99ea84ac3748d32412b7eee33996553", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/__init__.py", + "name": "tests/integration/targets/iosxr_hostname/tests/common/gathered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "348ce984e68aabc275d61e8143b23c6cc59765f2510b073a4c611fa62254a4b7", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/dir_7all", + "name": "tests/integration/targets/iosxr_hostname/tests/common/empty_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c5e2c218c5731bee3f874af0bc5d5694a426ceba650efc03795a5739235f0120", + "chksum_sha256": "a89c158ee6a5732379e2b446d1d6e307cb116b5a4f602e32781b5e11598f3c9a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_acl_interfaces_config.cfg", + "name": "tests/integration/targets/iosxr_hostname/tests/common/merged.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a5870ad2392bc344f5d7c254ecf5f1b5d317527c2efa346a55a3a73fb0ccd10e", + "chksum_sha256": "e2591c3d8f9408a6d1879a028da5491a9275c44601b28d5d1341818ecab434a0", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_acls_config.cfg", + "name": "tests/integration/targets/iosxr_hostname/tests/common/_parsed.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7415a69cdd33bff4395ad90a4cf6a930082691564493b998844e499a5039d13d", + "chksum_sha256": "1b0de89ec88a4c3c844244ea9b8a24ef5d12fe4ec4932c525b720742d77334fd", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_banner_config.cfg", + "name": "tests/integration/targets/iosxr_hostname/tests/common/_populate_config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "373fefe369cd647022df09438152a869d3c407cb05c51b3bd8214b81471d76e9", + "chksum_sha256": "b3905393cfeb5a880d6f501a9813b52d787c771504efb07291ea4bdf91a83457", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_config_config.cfg", + "name": "tests/integration/targets/iosxr_hostname/tests/common/parsed.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6fe81e446733fef4e3643a80042ab4111b9b0c927599c4b5972ecea4c18b4ffd", + "chksum_sha256": "823462a54fe9b7f711ce0331124bd72c3c4029547fd7d1c2e5bd1da25582cebf", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_config_src.cfg", + "name": "tests/integration/targets/iosxr_hostname/tests/common/rendered.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "57d42d2e8e8b7a4b6cae566115ee42fecea077b525cace10cefc3b7dbd85f033", + "chksum_sha256": "1fb084918ff5f04f5da804437d0287f888c6b225be719b39e7599e4d2928890d", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_interface_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "cafb0268e9f22c966719d76a2b7267d966ef98748f68cf3594ea55a3efd03945", + "name": "tests/integration/targets/iosxr_hostname/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_l2_interface_config.cfg", + "name": "tests/integration/targets/iosxr_hostname/vars/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c18f829582b9ed3a84bc5226dfd05be9c736dc0c949d61f719c71284e747e1d", + "chksum_sha256": "8fb0722d13cbb07c9e9d85b76efbdae857bfdd1801b6aa0501a52946e6b6d588", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_l3_interface_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "50f889004120619f090c295fe5f40c5575c0a4feaed60a14d863d00bf25bd2a0", + "name": "tests/integration/targets/iosxr_user", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lacp_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1ca4b510769bcfc42967e42d1b560e18908724b345676fb68e76571dfb84e847", + "name": "tests/integration/targets/iosxr_user/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lacp_interfaces_config.cfg", + "name": "tests/integration/targets/iosxr_user/tasks/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "04b1c2fbc56979e8df559dc3a499adaff452c0815be45fe4a0e2b1b74f740831", + "chksum_sha256": "303b9dff6309fcb32b8eb1e05d36298973519248849c1ddb442a6ce54e4ae491", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lag_interface_config.cfg", + "name": "tests/integration/targets/iosxr_user/tasks/cli.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "25aaec36c88ca1c78bdae21f0a0e072929ce56e56f569967927ab6def72d972e", + "chksum_sha256": "70521f927ee1761e08f277a254437be92c536918337892bcf0c5c0368957d99a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lldp_global_config.cfg", + "name": "tests/integration/targets/iosxr_user/tasks/netconf.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc8ece13d91edafdb680a275bf4c794d642f584b24963f75e91d399d26e90dce", + "chksum_sha256": "6650a55f6db383c6dea0285df827b038a5080894e176da4ff5ba05a71d8f007d", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_lldp_interfaces_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "1c4e458ac2250cfbfacd5b53e5937c792bdf09a36bf42c7d27cb5add93ffb693", + "name": "tests/integration/targets/iosxr_user/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospf_interfaces.cfg", + "name": "tests/integration/targets/iosxr_user/meta/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c3e8a76362099f436fe64dbd9dfc6401c862dac9c7b36be4ec83b36d125be2b8", + "chksum_sha256": "55144d29457d670189e343c566fbc6b465b90dbd9f2028efbb12d7fcc9f07b06", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospfv2.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "27b9a4a53478778c5781170c052ba66bcc09dcb40aab0709d28018f6cd332126", + "name": "tests/integration/targets/iosxr_user/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_ospfv3.cfg", + "name": "tests/integration/targets/iosxr_user/defaults/main.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a6d31304503f7cd58289c7ab493bab726a003a69dbcfff3177f82e051180ff4", + "chksum_sha256": "9894ee154c7a39aa7a1e65d027dfc12b8643e1a3df53d3c09bbab9eeb44a1cf1", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_static_routes_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "6e148c74b09c0b22e87e8e55b815a0250281aa8daabde38b951b425cfbec2442", + "name": "tests/integration/targets/iosxr_user/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_system_config.cfg", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "18ae20e11b3f557435b212a739a50c59c95e4162dc13989695e6c14ae35e58f7", + "name": "tests/integration/targets/iosxr_user/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/iosxr_user_config.cfg", + "name": "tests/integration/targets/iosxr_user/tests/cli/basic.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e387d5d8b668b1f290872aab2a3e8f8de3d4bdcb99906b8bbf618b950f0c60e9", + "chksum_sha256": "c0e5876713521246628445bdb96a184c1e60d03021606d7a36756530776b349e", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_interfaces", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e37745f7a4d614d0aa5da44df8a0acaea5820a5900d65cabe9640ddcb7e6ccd1", + "name": "tests/integration/targets/iosxr_user/tests/common", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_ipv6_interface", + "name": "tests/integration/targets/iosxr_user/tests/common/_auth.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "151235002e58119649b79a98cbacb5ce155225e31aa0188dd8085ee0961feacf", + "chksum_sha256": "00191a8605978a3eb0394bd610914da6e741774b1c863542f02e33e0c1684187", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_lldp", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "4135607fe98acfedbef4f2d3305b4ade7e5e833130f049f310b68f32ce451c66", + "name": "tests/integration/targets/iosxr_user/tests/netconf", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_lldp_neighbors_detail", + "name": "tests/integration/targets/iosxr_user/tests/netconf/basic.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4135607fe98acfedbef4f2d3305b4ade7e5e833130f049f310b68f32ce451c66", + "chksum_sha256": "9d98246d4804b3d836796e4bba10fe7ebf0fa0ecd3c991fb0e1273feba169520", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_memory_summary", + "name": "tests/integration/target-prefixes.network", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0fedc43463c95b152254b43d741b62c704ffc82b2707b758d1294283384c4e0", + "chksum_sha256": "d577d6580d29511474adecf53c2c66b66aced6b624c4f6c3781138d69870707a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_running-config", + "name": "tests/.gitignore", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9442b8aa3e29caa5725d8968da29fa173e998d7c664c92b3ddd66a7aea76a71e", + "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_version", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "089ab6658c475d1146f913b1cdee2671b46051958e2b7f562da626d327456726", + "name": "docs", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_version___utility_head_-n_20", + "name": "docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e4eb1b26a35a3c5bcf1e45eab472c8d59ff0559cfbfe701cd60c17ee6d9d6957", + "chksum_sha256": "6ac0f31d37234a72b543f93f7ac0a450f3dc4ae546bfa977161f2f15d2551f56", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/fixtures/show_version_brief", + "name": "docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e4eb1b26a35a3c5bcf1e45eab472c8d59ff0559cfbfe701cd60c17ee6d9d6957", + "chksum_sha256": "0b647afa59f64aeee6894c9088b7308974fc414e7e23e658026873a24b8a9249", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/__init__.py", + "name": "docs/cisco.iosxr.iosxr_system_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "2e984064df11389a31575a893fca5484dc0a7c5a46f2d633d92bfdd6a7363cf2", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/iosxr_module.py", + "name": "docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "80b5c99427b02e19ac899e3e9e59843f8684128b186c49556b67fb90d785703c", + "chksum_sha256": "3d4402f555478741555de21a719d386b18a93465ab53f9301eb225f6a0d9f3e4", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_hostname.py", + "name": "docs/cisco.iosxr.iosxr_hostname_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "674a5e683e09243e122946f5964cee3109ae4d909e192aee76cd78523ca4e480", + "chksum_sha256": "5e7b8fab433bbc77ff1728579757a6fa910da23694cc9df130ce78b4a1047efa", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr.py", + "name": "docs/cisco.iosxr.iosxr_netconf_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "775a3f292dd11bbf06389c191e39f326f65655899f046cd2f9d0fc53c527b972", + "chksum_sha256": "1c0d51a2477850b2fe3dacdf3a7a86e3a66d83491ee38884d3227bb0981eaf02", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_acl_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_ntp_global_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8ec7f7a7253a073da59b55053ac9d52714a9f6ddfe55966a4333730f9fe6a355", + "chksum_sha256": "21803ea95dc8bd9481c16547a13548692719410c79f470f354489ea69b05488b", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_acls.py", + "name": "docs/cisco.iosxr.iosxr_facts_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "571f0e291b3720cb86938678cbbba82af468a907617f64fe03692621a6530b15", + "chksum_sha256": "31f06265ded0f87434512141f0963fad1518d2e4df40e2e8b30d9f40cb2d75e3", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_banner.py", + "name": "docs/cisco.iosxr.iosxr_bgp_global_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9aa1b14300885ee82915819915969df7cd9ec85bc16947702defecd1880a577a", + "chksum_sha256": "52486dc2a51c8e9a5760ce0654d1693b6cc8ec80b5104a007947ec95fb8fac9a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_address_family.py", + "name": "docs/cisco.iosxr.iosxr_netconf.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1a48bb138dd97608d6ed2fe493f87712a857546e88afde6d5a3e0e72e28ddd9b", + "chksum_sha256": "0c190697f6cc86e85c2b5466ee2dfdf6e9d7eaa1ab5c6c2147fbd4fd0938b26a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py", + "name": "docs/cisco.iosxr.iosxr_bgp_templates_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "253f11f6a8026d3530b920df2b7c25acc29fdc5713baedc4355f5acb9df9371c", + "chksum_sha256": "5ca7c2b348e99ac02421edb09380bf101963bb79fda9e32e073669e25735bbf6", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_bgp_neighbor_address_family.py", + "name": "docs/__init__.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d79eaea2cf9e49a0f5459a044b8017451294cc841e1744632511511a2e7e2102", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_command.py", + "name": "docs/cisco.iosxr.iosxr_ospfv2_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "14eee0e68b9efb95a61f154571633603cf9ab8c1954ea2d204f6db4ccfb15cff", + "chksum_sha256": "16da0dca6fbf081710785720a1330ebc2479d82d5df650d9712db2a522e49588", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_config.py", + "name": "docs/cisco.iosxr.iosxr_cliconf.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1de5808b8b44ba025e91d8f63e16bf50346c7822d9b3df0f113b19fead122e2d", + "chksum_sha256": "bf973787bc7e3ac2a44b4e471927a7e6b2186420238ee9f27cbef8dae306866a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_facts.py", + "name": "docs/cisco.iosxr.iosxr_acls_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f6706928ab5b29ed7043caf0198d942a837e07b2b9dbeafa7b8f1cb5b53a411", + "chksum_sha256": "d4afc88d6043512adaffacbf40c44076ee62380e5422f43f4a0a2802aef4b604", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_logging_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06207e0066b68db74296721c50105092a5fdc5da3467e5e6c9a550872a1064cf", + "chksum_sha256": "b4a9a387516f3d29f7ef2d355413e6c9c0ea1ef8588fdfbd2d17aaa7285df542", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_snmp_server_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "80ef1345c8f81b18b39080df33432fadc2d8822a1b3406a359214b7ac96eda02", + "chksum_sha256": "fc4ff48b6712e8a8a3ad4aa28f231af4f1eb7d18d142f3a7a547ae8b061ef2ca", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_static_routes_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6c57d9430fcf71206de891310ada6369bc803741f6fa76b60b9653a1497dd00d", + "chksum_sha256": "17abfc815e8cac2fa27575cdfb234bcdcff2a44567e59c381428cd3dfccb3fad", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_lacp.py", + "name": "docs/cisco.iosxr.iosxr_config_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "173321ec4f6b4ce08c940957e1efcb379cf9b46eb980db971f66d3673464c420", + "chksum_sha256": "f36139e13012d02ddabb4b106ff5433ef077ca470939452787493bd525a18743", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_lacp_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_l3_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2b12a50fc121b717616624ff7fc723da7e7b0763020c601f6e15efdaa882e14c", + "chksum_sha256": "6001a54a3c3a4d44389bd470e1e82bc968dde9d7922793b93f4ec89456f4c24a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_lag_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e64ba104e28f652f4300a8e7c43d4aec50ab8bb28f8f97d5bde22099f8f20b6b", + "chksum_sha256": "70ef6ab2e8fd9ab59c0c45b853f816813fec388c87ff35629154fabfd54f40a3", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py", + "name": "docs/cisco.iosxr.iosxr_prefix_lists_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d8619413117d442219f8a5059d104bd69f76c63297f1d566e61c3fd1b81b6a8f", + "chksum_sha256": "ba764ceaf2356282fe17c4cf7df068ae3339d07df3d81c91fbc23fe5ad7951cb", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_lldp_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_lag_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "51ec0015ee4e9ad9303753f8ea77c9e4de1f1bd1108e5d3f45d878282e62ef2b", + "chksum_sha256": "1b6f3e0597d0625fb21bd166f2c1b409bd4d90872d920162c8d643df5d60ef92", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_logging_global.py", + "name": "docs/cisco.iosxr.iosxr_banner_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc84941d8983e27592dd930181b352a71f143a67aa30e0db98642cd1ba575691", + "chksum_sha256": "18e15247958616f04c733b6838245151c89899fed09a3f4b0146c1ddbd83a9bd", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_n540.py", + "name": "docs/cisco.iosxr.iosxr_l2_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "25af4a8b6f30f904cef024bfb673c553f73039ff3dc44dd31d4d5bdf5720e735", + "chksum_sha256": "e8e3f37f93dec6ab14536eeb00486c9836f73c76769ec1099ebd79c20b69f847", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_netconf.py", + "name": "docs/cisco.iosxr.iosxr_command_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dead94484316f04713e9adc49943f2a3cdbfa441f69ade35df93a156a93e1d39", + "chksum_sha256": "ef6d1d76c704c41ff290d36be0bb1bbd2bdd68d92e32678b0bbc57883a78749e", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_ntp_global.py", + "name": "docs/cisco.iosxr.iosxr_lldp_global_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f3f86a923d260fd853c936a01615c9626f63fe702759023143e80d2e169a24b", + "chksum_sha256": "ff7037fcf3fd8987c0e71216600f3949e1b11184082913afff8b72ac12bbc47a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py", + "name": "docs/cisco.iosxr.iosxr_acl_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f24e26ff6ca6a9b15c89545d137f254cfcc9564989773e1260103d0308499f3", + "chksum_sha256": "f7f7abe113adc1764008bc79eebf7ac78076880bcc0ebee420afb3b8321b3e2a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py", + "name": "docs/cisco.iosxr.iosxr_ping_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a65b6247166aad9c8819dd9754c423f3f2d46c48b81fc94107f56e95d780e48", + "chksum_sha256": "a3a86ad5aed7136b5e903410f4fbff2ebf126d6aed75957418e47f7ffb2cb604", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py", + "name": "docs/cisco.iosxr.iosxr_user_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "abe078651dcbb4e9684a1c0d9455c6cf28d16001fc98dfdbe5ba89dc158cb255", + "chksum_sha256": "911e6a05d509cfc18aed89a68d87f72bb7de50beae350ea2d0f237703868ea8f", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_ping.py", + "name": "docs/cisco.iosxr.iosxr_bgp_address_family_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7b7870144513d4063568e7b3ae7b21b8e353b286252c43f7efcb3ff5f1b8e9fc", + "chksum_sha256": "d5df98292dd7f929eb50b19b6297ba4860b740712f432c3d318a256cfb986e39", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_prefix_lists.py", + "name": "docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ac76602c2d3f50846008443db4ccfa0e6d860026c8a4fece9d1eb314826f6a27", + "chksum_sha256": "e7c12b32cef21b93bc8f868383bb30fdf93d9d5cf766ec60b49eb07f7f57abe1", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_snmp_server.py", + "name": "docs/cisco.iosxr.iosxr_logging_global_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f4639f4ce6651e4726f86fd0c52a432ce6a7398139f13531d7cf7f003923c3b", + "chksum_sha256": "f9098c2827c1a5ebb88d59295d37a2879bb5dc59ef83fbc0cc2204abc6b6032a", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_static_routes.py", + "name": "docs/cisco.iosxr.iosxr_lacp_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab69cc7a72dff131bfeb37b0e1e1d5e1e11f505f7447ce9eb7dd36607bce473f", + "chksum_sha256": "afc49ad783441204b9377be2ac4c983368b19289652ab0d867325d685fc9077b", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_system.py", + "name": "docs/cisco.iosxr.iosxr_ospfv3_module.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ba16239062a528722f4da037174072950ccdbd68986a7062a76c25bdeb16e006", + "chksum_sha256": "753bba432a6306fc9ae8c89d9718e3e0c58d054d5968408509c4a37fb881e5ae", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_user.py", + "name": ".isort.cfg", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "70644b817e87cfd6742daec18de2fb81559fc26c21fb3044a478754bd280e1b0", + "chksum_sha256": "5328af170b936cfea2a47b7155e4647a89662e559bc2664cfb93dbab968aaea4", "format": 1 }, { - "name": "tests/unit/modules/network/iosxr/test_iosxr_utils.py", + "name": "pyproject.toml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4d83cdd234712c9b7e4335f30089919d5e22887f7868d6213f8247f64f8b44de", + "chksum_sha256": "1cb6a45dfa2625123890b93ad7fdc156b063c16e8ae6dba11511a1d1986b0fcc", "format": 1 }, { - "name": "tests/unit/modules/network/__init__.py", + "name": "bindep.txt", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "8083c02374503e9616216aa195dcdeb6aaac7725e7640896d650699cedda309b", "format": 1 }, { - "name": "tests/unit/modules/__init__.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "name": "changelogs", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/conftest.py", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "e0ae70fa7c2a5e56d7f02a47c3602398cff60c8eb021772ac59a76df2a234048", + "name": "changelogs/fragments", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "tests/unit/modules/utils.py", + "name": "changelogs/fragments/.keep", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "28eb2c4f6e6e313a757a627b1f895640d085503b0c65cbca688e55d8679a45de", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "format": 1 }, { - "name": "tests/unit/__init__.py", + "name": "changelogs/config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "chksum_sha256": "e9313ae1bb365e94e03fc01e2c0bd2df437019a987f388ae98e8ec669d498984", "format": 1 }, { - "name": "tests/unit/requirements.txt", + "name": "changelogs/changelog.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "49ba996dc4735c3463e9af561344346dfae14bcc1a68096ce78364b377f0df1f", + "chksum_sha256": "795742b55284cd4cefb6a93d05c7c8e0f5abca0b69b5534a0d4c759c6c205d86", "format": 1 }, { - "name": "tests/.gitignore", + "name": "tox.ini", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600", + "chksum_sha256": "beb3313789623e5570d0871f6115ba563a0d92ea75e8e89cbd9f79045b4fe279", "format": 1 }, { - "name": ".gitignore", + "name": "CHANGELOG.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "445eae124a1f5bb47770dec970cb756d2b736e0e009182ea2175dd3f0d7b7317", + "chksum_sha256": "ad5482a0acf65d41f9a8301da8a300b656513dd7a88e472b54e5c70c402b4b32", "format": 1 }, { - "name": ".isort.cfg", + "name": ".gitignore", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5328af170b936cfea2a47b7155e4647a89662e559bc2664cfb93dbab968aaea4", + "chksum_sha256": "445eae124a1f5bb47770dec970cb756d2b736e0e009182ea2175dd3f0d7b7317", "format": 1 }, { "name": ".pre-commit-config.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "354f215038e44e24338f59dce65fd4d78e929f9d1ed3bf7cd29c372bf841f2ec", + "chksum_sha256": "80ef9ec70ebb46afce8478d35821ab901c609c1b588a7ed569f9c16864925dd5", "format": 1 }, { @@ -8758,73 +9017,66 @@ "format": 1 }, { - "name": ".yamllint", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "827ef9e031ecdcaf137be239d33ef93fcbbc3611cbb6b30b0e507d0e03373d0e", + "name": ".github", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": ".zuul.yaml", + "name": ".github/dependabot.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "98905acf2eec9aa791cbf5a9effe6e7402bfaa3d2d204c30013120e00668da6e", + "chksum_sha256": "11ceee3c57116e9fd08bc423414b1095ff002aa012d6fb325b1a7e24d7e28461", "format": 1 }, { - "name": "CHANGELOG.rst", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "eb5d5aa6fbb20e35b86f94f70e007fab3a01d2813525d807fd448e3a9f814cae", - "format": 1 - }, - { - "name": "LICENSE", - "ftype": "file", - "chksum_type": "sha256", - "chksum_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986", + "name": ".github/workflows", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, "format": 1 }, { - "name": "README.md", + "name": ".github/workflows/codecoverage.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b54ae926ade947d5eef8d201582ebb5ce82b70ee7c716ddb7ae444e413c6d4a4", + "chksum_sha256": "a56c8aba05b81d2e1d6575b37963f40df663387030de5eaac6f5c9dfd7af54f1", "format": 1 }, { - "name": "bindep.txt", + "name": ".github/workflows/ack.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43a7b907377bda820f3010b40272a64c2e118defdb3d362528d46ee5c2572b08", + "chksum_sha256": "24c6fbafaa69e3e3ee696f2cefa5120794b62cef7e870553dddce8b8af0a127c", "format": 1 }, { - "name": "pyproject.toml", + "name": ".github/workflows/release.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1cb6a45dfa2625123890b93ad7fdc156b063c16e8ae6dba11511a1d1986b0fcc", + "chksum_sha256": "c9b7dba505905600bbb9f0d8e9956b7cc20f80edfa742dfdae9395542f417aa1", "format": 1 }, { - "name": "requirements.txt", + "name": ".github/workflows/push.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "810f05c981acf588b14e14813acf53e2fd0f00b4428c7e9110104a19ff3088fe", + "chksum_sha256": "b93de6df12229238cd1602c455495a2aea451d19587dc5e5577494952ca0259e", "format": 1 }, { - "name": "test-requirements.txt", + "name": ".github/workflows/tests.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67ac8fa83eab8c43a702d5aa224225a1c5ff1e4de72df613c63cf60398e51058", + "chksum_sha256": "ee42432cfaad14365f08d6fc523b659b7a525adae305e7fe1a09f1f2b812853b", "format": 1 }, { - "name": "tox.ini", + "name": ".github/release-drafter.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "beb3313789623e5570d0871f6115ba563a0d92ea75e8e89cbd9f79045b4fe279", + "chksum_sha256": "7cbc785c8661033cd9dd7a60897484fce731cbe3dc124a689fc3e934b1d974fb", "format": 1 } ], diff --git a/ansible_collections/cisco/iosxr/MANIFEST.json b/ansible_collections/cisco/iosxr/MANIFEST.json index cae16817a..26ee696ab 100644 --- a/ansible_collections/cisco/iosxr/MANIFEST.json +++ b/ansible_collections/cisco/iosxr/MANIFEST.json @@ -2,7 +2,7 @@ "collection_info": { "namespace": "cisco", "name": "iosxr", - "version": "4.1.0", + "version": "6.1.1", "authors": [ "Ansible Network Community (ansible-network)" ], @@ -28,7 +28,7 @@ "name": "FILES.json", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "89e18d6ce876988bf9e44a8142bc125fdf9de006d338f1c6cbb9fd6fb44a6161", + "chksum_sha256": "c6842c6d4bd7595b6479ad71eacc2c175ee732d5cde0b2186886403a61789c05", "format": 1 }, "format": 1 diff --git a/ansible_collections/cisco/iosxr/README.md b/ansible_collections/cisco/iosxr/README.md index e9b59d957..e17005579 100644 --- a/ansible_collections/cisco/iosxr/README.md +++ b/ansible_collections/cisco/iosxr/README.md @@ -1,5 +1,7 @@ # Cisco IOSXR Collection [![CI](https://zuul-ci.org/gated.svg)](https://dashboard.zuul.ansible.com/t/ansible/project/github.com/ansible-collections/cisco.iosxr) <!--[![Codecov](https://img.shields.io/codecov/c/github/ansible-collections/vyos)](https://codecov.io/gh/ansible-collections/cisco.iosxr)--> +[![Codecov](https://codecov.io/gh/ansible-collections/cisco.iosxr/branch/main/graph/badge.svg)](https://codecov.io/gh/ansible-collections/cisco.iosxr) +[![CI](https://github.com/ansible-collections/cisco.iosxr/actions/workflows/tests.yml/badge.svg?branch=main&event=schedule)](https://github.com/ansible-collections/cisco.iosxr/actions/workflows/tests.yml) The Ansible Cisco IOSXR collection includes a variety of Ansible content to help automate the management of Cisco IOSXR network appliances. @@ -38,10 +40,10 @@ Name | Description [cisco.iosxr.iosxr_acl_interfaces](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_acl_interfaces_module.rst)|Resource module to configure ACL interfaces. [cisco.iosxr.iosxr_acls](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_acls_module.rst)|Resource module to configure ACLs. [cisco.iosxr.iosxr_banner](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_banner_module.rst)|Module to configure multiline banners. -[cisco.iosxr.iosxr_bgp](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_bgp_module.rst)|Module to configure BGP protocol settings. [cisco.iosxr.iosxr_bgp_address_family](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_bgp_address_family_module.rst)|Resource module to configure BGP Address family. [cisco.iosxr.iosxr_bgp_global](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_bgp_global_module.rst)|Resource module to configure BGP. [cisco.iosxr.iosxr_bgp_neighbor_address_family](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst)|Resource module to configure BGP Neighbor Address family. +[cisco.iosxr.iosxr_bgp_templates](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_bgp_templates_module.rst)|Manages BGP templates resource module. [cisco.iosxr.iosxr_command](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_command_module.rst)|Module to run commands on remote devices. [cisco.iosxr.iosxr_config](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_config_module.rst)|Module to manage configuration sections. [cisco.iosxr.iosxr_facts](https://github.com/ansible-collections/cisco.iosxr/blob/main/docs/cisco.iosxr.iosxr_facts_module.rst)|Module to collect facts from remote devices. diff --git a/ansible_collections/cisco/iosxr/bindep.txt b/ansible_collections/cisco/iosxr/bindep.txt index d4fbbad94..d8e3847de 100644 --- a/ansible_collections/cisco/iosxr/bindep.txt +++ b/ansible_collections/cisco/iosxr/bindep.txt @@ -2,10 +2,8 @@ # see https://docs.openstack.org/infra/bindep/ for additional information. gcc-c++ [doc test platform:rpm] -python3-devel [test platform:rpm] -python3 [test platform:rpm] libssh-devel [test platform:rpm] libffi-devel [test platform:rpm] openssl-devel [test platform:rpm] -python38-lxml [platform:centos-8 platform:rhel-8] +python3-lxml [platform:centos-8 platform:rhel-8] diff --git a/ansible_collections/cisco/iosxr/changelogs/changelog.yaml b/ansible_collections/cisco/iosxr/changelogs/changelog.yaml index b240582b9..6f1007dbb 100644 --- a/ansible_collections/cisco/iosxr/changelogs/changelog.yaml +++ b/ansible_collections/cisco/iosxr/changelogs/changelog.yaml @@ -528,3 +528,163 @@ releases: - fix_pre_commit.yaml - rm_base.yaml release_date: "2023-01-30" + 5.0.0: + changes: + bugfixes: + - Bgp_global, Bgp_neighbor_address_family, Bgp_address_family. Make all possible + option mutually exclusive. + - bgp_neighbor_address_family - mark ``soft_reconfiguration`` suboptions ``set``, + ``always``, and ``inheritance_disable`` as mutually exclusive. (https://github.com/ansible-collections/cisco.iosxr/issues/325) + - facts - fix ``ansible_net_model`` and ``ansible_net_seriulnum`` facts gathering + issue (https://github.com/ansible-collections/cisco.iosxr/issues/308) + major_changes: + - iosxr_l3_interfaces - fix issue in ipv4 address formatting. (https://github.com/ansible-collections/cisco.iosxr/issues/311). + minor_changes: + - bgp_global - Add ``no_prepend`` option and ``set`` and ``replace_as`` suboptions + under local_as option. (https://github.com/ansible-collections/cisco.iosxr/issues/336) + - bgp_global - Add ``password`` option and ``encrypted`` and ``inheritance_disable`` + suboptions. (https://github.com/ansible-collections/cisco.iosxr/issues/337) + - bgp_global - Add ``use`` option and ``neighbor_group`` and ``session_group`` + suboptions. (https://github.com/ansible-collections/cisco.iosxr/issues/312) + fragments: + - Bugfix_312.yaml + - Bugfix_325.yaml + - Bugfix_332.yaml + - Fix_integration_tests.yaml + - bugfix_336_337.yaml + - bugfix_facts.yaml + - bugfix_redirects.yaml + - bugix_l3_interface.yaml + - fix_galaxy.yaml + - fix_iosxr_config.yaml + - fix_upstream_tests.yaml + - revert_integration_tests.yaml + release_date: "2023-03-02" + 5.0.1: + changes: + bugfixes: + - Fixing L2 Interface recognition for resource modules. (https://github.com/ansible-collections/cisco.iosxr/issues/366) + - Iosxr_interfaces - Fix issue in interfaces with interface type. + doc_changes: + - Improve docs of static_routes Resource modules. + fragments: + - Bugfix_interfaces.yaml + - add_cleanup_script.yaml + - add_cleanup_script_l2.yaml + - add_cleanup_script_l3.yaml + - add_skip_label.yaml + - fix_docs_static_routes.yaml + - fix_integration_tests.yaml + - fix_l2_interfaces_resources.yml + - iosxr_add_skip_label.yaml + - revert_int_changes.yaml + - revert_intl2_l3_changes.yaml + release_date: "2023-04-03" + 5.0.2: + changes: + bugfixes: + - interfaces - Fix issue in ``overridden`` state of interfaces RM. (https://github.com/ansible-collections/cisco.iosxr/issues/377) + doc_changes: + - iosxr_bgp_global - add task output to module documentation examples. + fragments: + - fix_interfaces_overridden.yaml + - update_docs_with_examples.yaml + release_date: "2023-04-27" + 5.0.3: + changes: + bugfixes: + - Fixing Bundle-Ether/-POS recognition for resource modules. (https://github.com/ansible-collections/cisco.iosxr/issues/369) + - acls - Fix issue in ``replaced`` state of not replacing ace entries with remark + action. (https://github.com/ansible-collections/cisco.iosxr/issues/332) + - l3_interfaces - Fix issue in ``gather`` state of not gathering management + interface. (https://github.com/ansible-collections/cisco.iosxr/issues/381) + doc_changes: + - iosxr_interfaces - Fixed module documentation and examples. + - iosxr_l3_interfaces - Fixed module documentation and examples. + fragments: + - add_gha_periodic.yaml + - black.yaml + - bugfix_acl.yaml + - ci_codecov.yml + - fix_bundle_resources.yml + - fix_l3_interface.yaml + - healthcheck_pr_1.yml + release_date: "2023-05-29" + 6.0.0: + changes: + bugfixes: + - Add support to delete specific static route entry.(https://github.com/ansible-collections/cisco.iosxr/issues/375) + - l2_interfaces Fix issue in qvlan parsing.(https://github.com/ansible-collections/cisco.iosxr/issues/403) + deprecated_features: + - Deprecated iosxr_bgp module in favor of iosxr_bgp_global,iosxr_bgp_neighbor_address_family + and iosxr_bgp_address_family. + - iosxr_l2_interfaces - deprecate q_vlan with qvlan which allows vlans in str + format e.g "any" + doc_changes: + - iosxr_facts - Add ansible_net_cpu_utilization. + minor_changes: + - Add iosxr_bgp_templates module (https://github.com/ansible-collections/cisco.iosxr/issues/341). + - iosxr_facts - Add CPU utilization. + - iosxr_l2_interfaces - fix issue in supporting multiple iosxr version. (https://github.com/ansible-collections/cisco.iosxr/issues/379). + fragments: + - bgp_templates.yaml + - bugfix_l2_interface.yaml + - cpu_util.yaml + - delete_static_route.yaml + - fix_l2_interface.yaml + - fix_l2_interface_qvlan.yaml + - gha_release.yml + - remove_old_modules.yaml + modules: + - description: Manages BGP templates resource module. + name: iosxr_bgp_templates + namespace: "" + release_date: "2023-07-05" + 6.0.1: + changes: + bugfixes: + - Fix issue in deletion of ospf.(https://github.com/ansible-collections/cisco.iosxr/issues/425) + - Fix issue in facts gathering for Interfaces RM.(https://github.com/ansible-collections/cisco.iosxr/issues/417) + - Fix issue in lacp and lldp_global of local variable commands. + - Support overridden state in bgp_global,lacp and lldp_global module.(https://github.com/ansible-collections/cisco.iosxr/issues/386) + doc_changes: + - Fix grpc sub plugin documentation. + - Update ospf_interfaces examples + - Update ospfv2 examples + - Update ospfv3 examples + fragments: + - Fix_interface_facts.yaml + - codecov_pr.yml + - fix_ospfv3.yaml + - sub_plugin_doc.yml + - support_overridden.yaml + - update_ospfv2_docs.yaml + release_date: "2023-09-07" + 6.1.0: + changes: + doc_changes: + - Fix docs for prefix_lists RM. + - iosxr_acls - update examples and use YAML output in them for better readibility. + minor_changes: + - iosxr_config - Relax restrictions on I(src) parameter so it can be used more + like I(lines). (https://github.com/ansible-collections/cisco.iosxr/issues/343). + - iosxr_config Add updates option in return value(https://github.com/ansible-collections/cisco.iosxr/issues/438). + fragments: + - Fix_iosxr_user_tests.yaml + - acls.yaml + - fix_bindep.yaml + - fix_config_module.yaml + - fix_iosxr_config.yaml + - prefix_list_doc.yaml + release_date: "2023-10-30" + 6.1.1: + changes: + bugfixes: + - Fix issue in gathered state of interfaces and l3_interfaces RMs(https://github.com/ansible-collections/cisco.iosxr/issues/452, + https://github.com/ansible-collections/cisco.iosxr/issues/451) + fragments: + - bugfix_interfaces.yaml + - fix_acl_interfaces.yaml + - fix_python_version.yaml + - revert_pylibssh_depn.yaml + release_date: "2023-11-27" diff --git a/ansible_collections/cisco/iosxr/codecov.yml b/ansible_collections/cisco/iosxr/codecov.yml new file mode 100644 index 000000000..c77c91a90 --- /dev/null +++ b/ansible_collections/cisco/iosxr/codecov.yml @@ -0,0 +1,15 @@ +--- +codecov: + require_ci_to_pass: true +comment: + layout: " diff, flags, files" + behavior: default + require_changes: false + require_base: false + require_head: true +coverage: + status: + patch: false + project: + default: + threshold: 0.3% diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/__init__.py b/ansible_collections/cisco/iosxr/docs/__init__.py index e69de29bb..e69de29bb 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/__init__.py +++ b/ansible_collections/cisco/iosxr/docs/__init__.py diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acl_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acl_interfaces_module.rst index c61999008..34b2b30f0 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acl_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acl_interfaces_module.rst @@ -240,27 +240,26 @@ Examples - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: in - - name: acl_2 - direction: out - - afi: ipv6 - acls: - - name: acl6_1 - direction: in - - name: acl6_2 - direction: out - - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: out + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: in + - name: acl_2 + direction: out + - afi: ipv6 + acls: + - name: acl6_1 + direction: in + - name: acl6_2 + direction: out + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: out state: merged # After state: @@ -309,14 +308,14 @@ Examples - name: Update acl_interfaces configuration using merged cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_2 - direction: out - - name: acl_1 - direction: in + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_2 + direction: out + - name: acl_1 + direction: in state: merged # After state: @@ -363,15 +362,17 @@ Examples # ipv4 access-group acl_1 egress # ! - - name: Replace device configurations of listed interface with provided configurations + - name: >- + Replace device configurations of listed interface with provided + configurations cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv6 - acls: - - name: acl6_3 - direction: in + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv6 + acls: + - name: acl6_3 + direction: in state: replaced # After state: @@ -418,16 +419,16 @@ Examples - name: Overridde all interface ACL configuration with provided configuration cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_2 - direction: in - - afi: ipv6 - acls: - - name: acl6_3 - direction: out + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_2 + direction: in + - afi: ipv6 + acls: + - name: acl6_3 + direction: out state: overridden # After state: @@ -474,7 +475,7 @@ Examples - name: Delete all ACL attributes of GigabitEthernet0/0/0/1 cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 + - name: GigabitEthernet0/0/0/1 state: deleted # After state: @@ -674,14 +675,14 @@ Examples - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: in - - name: acl_2 - direction: out + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: in + - name: acl_2 + direction: out state: rendered # Task Output (redacted) diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acls_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acls_module.rst index faea089cd..32cf48121 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acls_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_acls_module.rst @@ -4026,100 +4026,210 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:07:45.767 UTC - # RP/0/RP0/CPU0:ios# + # RP/0/RP0/CPU0:ios#show access-lists afi-al + # Fri Sep 22 03:57:04.758 UTC + # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_acls: config: - - afi: ipv6 - acls: - - name: acl6_1 - aces: - - sequence: 10 - grant: deny - protocol: tcp - source: - prefix: 2001:db8:1234::/48 - port_protocol: - range: - start: ftp - end: telnet - destination: - any: true - protocol_options: - tcp: - syn: true - ttl: - range: - start: 180 - end: 250 - routing: true - authen: true - log: true - - - sequence: 20 - grant: permit - protocol: icmpv6 - source: - any: true - destination: - any: true - protocol_options: - icmpv6: - router_advertisement: true - precedence: network - destopts: true - - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 16 - remark: TEST_ACL_1_REMARK - - - sequence: 21 - grant: permit - protocol: tcp - source: - host: 192.0.2.10 - port_protocol: - range: - start: pop3 - end: 121 - destination: - address: 198.51.100.0 - wildcard_bits: 0.0.0.15 - protocol_options: - tcp: - rst: true - - - sequence: 23 - grant: deny - protocol: icmp - source: - any: true - destination: - prefix: 198.51.100.0/28 - protocol_options: - icmp: - reassembly_timeout: true - dscp: - lt: af12 - - - name: acl_2 - aces: - - sequence: 10 - remark: TEST_ACL_2_REMARK + - afi: ipv6 + acls: + - name: acl6_1 + aces: + - sequence: 10 + grant: deny + protocol: tcp + source: + prefix: '2001:db8:1234::/48' + port_protocol: + range: + start: ftp + end: telnet + destination: + any: true + protocol_options: + tcp: + syn: true + ttl: + range: + start: 180 + end: 250 + routing: true + authen: true + log: true + - sequence: 20 + grant: permit + protocol: icmpv6 + source: + any: true + destination: + any: true + protocol_options: + icmpv6: + router_advertisement: true + precedence: network + destopts: true + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 16 + remark: TEST_ACL_1_REMARK + - sequence: 21 + grant: permit + protocol: tcp + source: + host: 192.0.2.10 + port_protocol: + range: + start: pop3 + end: 121 + destination: + address: 198.51.100.0 + wildcard_bits: 0.0.0.15 + protocol_options: + tcp: + rst: true + - sequence: 23 + grant: deny + protocol: icmp + source: + any: true + destination: + prefix: 198.51.100.0/28 + protocol_options: + icmp: + reassembly_timeout: true + dscp: + lt: af12 + - name: acl_2 + aces: + - sequence: 10 + remark: TEST_ACL_2_REMARK state: merged + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # name: acl_1 + # afi: ipv4 + # + # commands: + # - ipv6 access-list acl6_1 + # - 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log + # - 20 permit icmpv6 any any router-advertisement precedence network destopts + # - ipv4 access-list acl_1 + # - 16 remark TEST_ACL_1_REMARK + # - 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst + # - 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 + # - ipv4 access-list acl_2 + # - 10 remark TEST_ACL_2_REMARK + # + # after: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # After state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Fri Sep 22 04:35:19.977 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -4134,9 +4244,10 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Fri Sep 22 04:37:33.542 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -4149,34 +4260,212 @@ Examples - name: Update existing ACEs cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 21 - source: - prefix: 198.51.100.32/28 - port_protocol: - range: - start: pop3 - end: 121 - protocol_options: - tcp: - syn: true + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 21 + source: + prefix: 198.51.100.32/28 + port_protocol: + range: + start: pop3 + end: 121 + protocol_options: + tcp: + syn: true + - sequence: 23 + protocol_options: + icmp: + router_advertisement: true + dscp: + eq: af23 - - sequence: 23 - protocol_options: - icmp: - router_advertisement: true - dscp: - eq: af23 + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - ipv4 access-list acl_1 + # - 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn + # - 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 + # after: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # sequence: 21 + # source: + # address: 198.51.100.32 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # wildcard_bits: 0.0.0.15 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # eq: af23 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # router_advertisement: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 # After state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:47:18.711 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Wed Sep 27 09:58:38.345 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn # 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 @@ -4191,9 +4480,10 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Fri Sep 22 05:38:36.205 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -4205,39 +4495,230 @@ Examples - name: Replace device configurations of listed ACL with provided configurations cisco.iosxr.iosxr_acls: + state: replaced config: - - afi: ipv4 - acls: - - name: acl_2 - aces: - - sequence: 11 - grant: permit - protocol: igmp - source: - host: 198.51.100.130 - destination: - any: true - ttl: - eq: 100 + - afi: ipv4 + acls: + - name: acl_2 + aces: + - sequence: 11 + grant: permit + protocol: igmp + source: + host: 198.51.100.130 + destination: + any: true + ttl: + eq: 100 + - sequence: 12 + grant: deny + source: + any: true + destination: + any: true + protocol: icmp - - sequence: 12 - grant: deny - source: - any: true - destination: - any: true - protocol: icmp - state: replaced + # Task Output + # ----------- + # before: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - ipv4 access-list acl_2 + # - no 10 + # - 11 permit igmp host 198.51.100.130 any ttl eq 100 + # - 12 deny icmp any any + # + # after: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: udp + # sequence: 10 + # source: + # address: 192.168.1.0 + # wildcard_bits: 0.0.0.255 + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: igmp + # sequence: 11 + # source: + # host: 198.51.100.130 + # ttl: + # eq: 100 + # - destination: + # any: true + # grant: deny + # protocol: icmp + # sequence: 12 + # source: + # any: true + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 # After state: # ------------- - - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 06:19:51.496 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Fri Sep 22 05:56:21.103 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK - # 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn - # 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 + # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst + # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 # ipv4 access-list acl_2 # 11 permit igmp host 198.51.100.130 any ttl eq 100 # 12 deny icmp any any @@ -4253,6 +4734,7 @@ Examples # RP/0/RP0/CPU0:ios#sh access-lists afi-all # Thu Feb 20 05:22:57.021 UTC # ipv4 access-list acl_1 + # 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -4265,29 +4747,141 @@ Examples - name: Overridde all ACLs configuration with provided configuration cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 10 - grant: permit - source: - any: true - destination: - any: true - protocol: tcp - - - name: acl_2 - aces: - - sequence: 20 - grant: permit - source: - any: true - destination: - any: true - protocol: igmp + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 10 + grant: permit + source: + any: true + destination: + any: true + protocol: tcp + - name: acl_2 + aces: + - sequence: 20 + grant: permit + source: + any: true + destination: + any: true + protocol: igmp state: overridden + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - no ipv6 access-list acl6_1 + # - ipv4 access-list acl_1 + # - no 16 + # - no 21 + # - no 23 + # - 10 permit tcp any any + # - ipv4 access-list acl_2 + # - no 10 + # - 20 permit igmp any any + # + # after: + # - acls: + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: tcp + # sequence: 10 + # source: + # any: true + # name: acl_1 + # - aces: + # - destination: + # any: true + # grant: permit + # protocol: igmp + # sequence: 20 + # source: + # any: true + # name: acl_2 + # afi: ipv4 + # After state: # ------------- @@ -4303,8 +4897,8 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -4318,11 +4912,135 @@ Examples - name: Delete a single ACL cisco.iosxr.iosxr_acls: config: - - afi: ipv6 - acls: - - name: acl6_1 + - afi: ipv6 + acls: + - name: acl6_1 state: deleted + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - no ipv6 access-list acl6_1 + # + # after: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + + # After state: # ------------- @@ -4340,8 +5058,8 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -4355,13 +5073,136 @@ Examples - name: Delete all ACLs under one AFI cisco.iosxr.iosxr_acls: config: - - afi: ipv4 + - afi: ipv4 state: deleted + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - no ipv4 access-list acl_1 + # - no ipv4 access-list acl_2 + # + # after: + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # After state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all + # RP/0/RP0/CPU0:ios#show access-lists afi-all # Thu Feb 20 05:22:57.021 UTC # ipv6 access-list acl6_1 # 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log @@ -4372,8 +5213,8 @@ Examples # Before state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all - # Thu Feb 20 05:22:57.021 UTC + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -4388,15 +5229,115 @@ Examples cisco.iosxr.iosxr_acls: state: deleted + + # Task Output + # ----------- + # + # before: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 + # + # commands: + # - no ipv4 access-list acl_1 + # - no ipv4 access-list acl_2 + # - no ipv6 access-list acl6_1 + # + # after: [] + # After state: # ------------- - # RP/0/RP0/CPU0:ios#sh access-lists afi-all + # RP/0/RP0/CPU0:ios#show access-lists afi-all # Thu Feb 20 05:07:45.767 UTC # RP/0/RP0/CPU0:ios# # Using gathered to gather ACL facts from the device + # RP/0/RP0/CPU0:ios#show access-lists afi-all + # Wed Sep 27 09:34:04.831 UTC + # ipv4 access-list acl_1 + # 16 remark TEST_ACL_1_REMARK + # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst + # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 + # ipv4 access-list acl_2 + # 10 remark TEST_ACL_2_REMARK + # ipv6 access-list acl6_1 + # 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log + # 20 permit icmpv6 any any router-advertisement precedence network destopts + - name: Gather ACL interfaces facts using gathered state cisco.iosxr.iosxr_acls: state: gathered @@ -4404,184 +5345,131 @@ Examples # Task Output (redacted) # ----------------------- # - - # "gathered": [ - # { - # "acls": [ - # { - # "aces": [ - # { - # "remark": "TEST_ACL_1_REMARK", - # "sequence": 16 - # }, - # { - # "destination": { - # "address": "198.51.100.0", - # "wildcard_bits": "0.0.0.15" - # }, - # "grant": "permit", - # "protocol": "tcp", - # "protocol_options": { - # "tcp": { - # "rst": true - # } - # }, - # "sequence": 21, - # "source": { - # "host": "192.0.2.10", - # "port_protocol": { - # "range": { - # "end": "121", - # "start": "pop3" - # } - # } - # } - # }, - # { - # "destination": { - # "address": "198.51.100.0", - # "wildcard_bits": "0.0.0.15" - # }, - # "dscp": { - # "lt": "af12" - # }, - # "grant": "deny", - # "protocol": "icmp", - # "protocol_options": { - # "icmp": { - # "reassembly_timeout": true - # } - # }, - # "sequence": 23, - # "source": { - # "any": true - # } - # } - # ], - # "name": "acl_1" - # }, - # { - # "aces": [ - # { - # "remark": "TEST_ACL_2_REMARK", - # "sequence": 10 - # } - # ], - # "name": "acl_2" - # } - # ], - # "afi": "ipv4" - # }, - # { - # "acls": [ - # { - # "aces": [ - # { - # "authen": true, - # "destination": { - # "any": true - # }, - # "grant": "deny", - # "log": true, - # "protocol": "tcp", - # "protocol_options": { - # "tcp": { - # "syn": true - # } - # }, - # "routing": true, - # "sequence": 10, - # "source": { - # "port_protocol": { - # "range": { - # "end": "telnet", - # "start": "ftp" - # } - # }, - # "prefix": "2001:db8:1234::/48" - # }, - # "ttl": { - # "range": { - # "end": 250, - # "start": 180 - # } - # } - # }, - # { - # "destination": { - # "any": true - # }, - # "destopts": true, - # "grant": "permit", - # "precedence": "network", - # "protocol": "icmpv6", - # "protocol_options": { - # "icmpv6": { - # "router_advertisement": true - # } - # }, - # "sequence": 20, - # "source": { - # "any": true - # } - # } - # ], - # "name": "acl6_1" - # } - # ], - # "afi": "ipv6" - # } - # ] + # gathered: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 # Using rendered - name: Render platform specific commands (without connecting to the device) cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_2 - aces: - - sequence: 11 - grant: permit - protocol: igmp - source: - host: 198.51.100.130 - destination: - any: true - ttl: - eq: 100 - - - sequence: 12 - grant: deny - source: - any: true - destination: - any: true - protocol: icmp + - afi: ipv4 + acls: + - name: acl_2 + aces: + - sequence: 11 + grant: permit + protocol: igmp + source: + host: 198.51.100.130 + destination: + any: true + ttl: + eq: 100 + - sequence: 12 + grant: deny + source: + any: true + destination: + any: true + protocol: icmp state: rendered # Task Output (redacted) # ----------------------- - # "rendered": [ - # "ipv4 access-list acl_2", - # "11 permit igmp host 198.51.100.130 any ttl eq 100", - # "12 deny icmp any any" + # rendered: + # - ipv4 access-list acl_2 + # - 11 permit igmp host 198.51.100.130 any ttl eq 100 + # - 12 deny icmp any any # Using parsed # parsed.cfg # ------------ - # # ipv4 access-list acl_1 - # 10 remark TEST_ACL_2_REMARK + # 16 remark TEST_ACL_1_REMARK + # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst + # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 # ipv4 access-list acl_2 - # 11 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log - # 21 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts + # 10 remark TEST_ACL_2_REMARK # ipv6 access-list acl6_1 # 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log - # 20 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts + # 20 permit icmpv6 any any router-advertisement precedence network destopts - name: Parse externally provided ACL config to agnostic model cisco.iosxr.iosxr_acls: @@ -4590,141 +5478,82 @@ Examples # Task Output (redacted) # ----------------------- - # "parsed": [ - # { - # "acls": [ - # { - # "aces": [ - # { - # "remark": "TEST_ACL_2_REMARK", - # "sequence": 10 - # } - # ], - # "name": "acl_1" - # }, - # { - # "aces": [ - # { - # "authen": true, - # "destination": { - # "any": true - # }, - # "grant": "deny", - # "log": true, - # "protocol": "tcp", - # "protocol_options": { - # "tcp": { - # "syn": true - # } - # }, - # "routing": true, - # "sequence": 11, - # "source": { - # "port_protocol": { - # "range": { - # "end": "telnet", - # "start": "ftp" - # } - # }, - # "prefix": "2001:db8:1234::/48" - # }, - # "ttl": { - # "range": { - # "end": 250, - # "start": 180 - # } - # } - # }, - # { - # "destination": { - # "any": true - # }, - # "destopts": true, - # "grant": "permit", - # "packet_length": { - # "eq": 576 - # }, - # "precedence": "network", - # "protocol": "icmpv6", - # "protocol_options": { - # "icmpv6": { - # "router_advertisement": true - # } - # }, - # "sequence": 21, - # "source": { - # "any": true - # } - # } - # ], - # "name": "acl_2" - # } - # ], - # "afi": "ipv4" - # }, - # { - # "acls": [ - # { - # "aces": [ - # { - # "authen": true, - # "destination": { - # "any": true - # }, - # "grant": "deny", - # "log": true, - # "protocol": "tcp", - # "protocol_options": { - # "tcp": { - # "syn": true - # } - # }, - # "routing": true, - # "sequence": 10, - # "source": { - # "port_protocol": { - # "range": { - # "end": "telnet", - # "start": "ftp" - # } - # }, - # "prefix": "2001:db8:1234::/48" - # }, - # "ttl": { - # "range": { - # "end": 250, - # "start": 180 - # } - # } - # }, - # { - # "destination": { - # "any": true - # }, - # "destopts": true, - # "grant": "permit", - # "packet_length": { - # "eq": 576 - # }, - # "precedence": "network", - # "protocol": "icmpv6", - # "protocol_options": { - # "icmpv6": { - # "router_advertisement": true - # } - # }, - # "sequence": 20, - # "source": { - # "any": true - # } - # } - # ], - # "name": "acl6_1" - # } - # ], - # "afi": "ipv6" - # } - # ] + # parsed: + # - acls: + # - aces: + # - remark: TEST_ACL_1_REMARK + # sequence: 16 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # grant: permit + # protocol: tcp + # protocol_options: + # tcp: + # rst: true + # sequence: 21 + # source: + # host: 192.0.2.10 + # port_protocol: + # range: + # end: '121' + # start: pop3 + # - destination: + # address: 198.51.100.0 + # wildcard_bits: 0.0.0.15 + # dscp: + # lt: af12 + # grant: deny + # protocol: icmp + # protocol_options: + # icmp: + # reassembly_timeout: true + # sequence: 23 + # source: + # any: true + # name: acl_1 + # - aces: + # - remark: TEST_ACL_2_REMARK + # sequence: 10 + # name: acl_2 + # afi: ipv4 + # - acls: + # - aces: + # - authen: true + # destination: + # any: true + # grant: deny + # log: true + # protocol: tcp + # protocol_options: + # tcp: + # syn: true + # routing: true + # sequence: 10 + # source: + # port_protocol: + # range: + # end: telnet + # start: ftp + # prefix: 2001:db8:1234::/48 + # ttl: + # range: + # end: 250 + # start: 180 + # - destination: + # any: true + # destopts: true + # grant: permit + # precedence: network + # protocol: icmpv6 + # protocol_options: + # icmpv6: + # router_advertisement: true + # sequence: 20 + # source: + # any: true + # name: acl6_1 + # afi: ipv6 @@ -4793,6 +5622,57 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['ipv6 access-list acl6_1', '10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log', '20 permit icmpv6 any any router-advertisement precedence network destopts', 'ipv4 access-list acl_1', '16 remark TEST_ACL_1_REMARK', '21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst', '23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12']</div> </td> </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['ipv6 access-list acl6_1', '10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log', '20 permit icmpv6 any any router-advertisement precedence network destopts']</div> + </td> + </tr> </table> <br/><br/> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_banner_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_banner_module.rst index 747571a97..46d105682 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_banner_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_banner_module.rst @@ -128,7 +128,7 @@ Examples - name: Configure banner from file cisco.iosxr.iosxr_banner: banner: motd - text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" + text: '{{ lookup(''file'', ''./config_partial/raw_banner.cfg'') }}' state: present diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_address_family_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_address_family_module.rst index 8ad152d3b..5a3ae6c65 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_address_family_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_address_family_module.rst @@ -2663,17 +2663,17 @@ Examples cisco.iosxr.iosxr_bgp_address_family: state: merged config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -2768,10 +2768,10 @@ Examples cisco.iosxr.iosxr_bgp_address_family: state: replaced config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 10 # Task output @@ -2845,10 +2845,10 @@ Examples cisco.iosxr.iosxr_bgp_address_family: state: overridden config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 10 @@ -2939,17 +2939,17 @@ Examples cisco.iosxr.iosxr_bgp_address_family: state: rendered config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -2979,21 +2979,21 @@ Examples # # Using gathered # ------------- - - name: Merge the provided configuration with the existing running configuration + - name: Gather existing running configuration cisco.iosxr.iosxr_bgp_address_family: state: gathered config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -3031,8 +3031,8 @@ Examples # # Using parsed # - #parsed.cfg - #------------ + # parsed.cfg + # ------------ # router bgp 65536 # bgp router-id 192.0.1.1 # address-family ipv4 unicast diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_global_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_global_module.rst index c29559a5e..382bd6659 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_global_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_global_module.rst @@ -3151,6 +3151,116 @@ Parameters <td class="elbow-placeholder"></td> <td colspan="5"> <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>no_prepend</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>replace_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>dual_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Dual-AS mode.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> <b>value</b> <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> <div style="font-size: small"> @@ -3461,6 +3571,64 @@ Parameters <td class="elbow-placeholder"></td> <td colspan="6"> <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>password</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Set a password.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>encrypted</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Specifies an ENCRYPTED password will follow.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent password from being inherited from parent.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="6"> + <div class="ansibleOptionAnchor" id="parameter-"></div> <b>receive_buffer_size</b> <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> <div style="font-size: small"> @@ -3990,6 +4158,60 @@ Parameters <div>Source of routing updates.Refer vendor document for valid values.</div> </td> </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="6"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>use</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Use a neighbor-group and session-group template.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>neighbor_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit configuration from a neighbor-group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>session_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit address-family independent config from a session-group</div> + </td> + </tr> + <tr> <td class="elbow-placeholder"></td> @@ -7433,6 +7655,121 @@ Parameters <td class="elbow-placeholder"></td> <td colspan="4"> <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>no_prepend</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>replace_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>dual_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Dual-AS mode.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> <b>value</b> <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> <div style="font-size: small"> @@ -7758,6 +8095,67 @@ Parameters <td class="elbow-placeholder"></td> <td colspan="5"> <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>password</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Set a password.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>encrypted</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Specifies an ENCRYPTED password will follow.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent password from being inherited from parent.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> <b>receive_buffer_size</b> <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> <div style="font-size: small"> @@ -8313,6 +8711,63 @@ Parameters <div>Source of routing updates.Refer vendor document for valid values.</div> </td> </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>use</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Use a neighbor-group and session-group template.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>neighbor_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit configuration from a neighbor-group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>session_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit address-family independent config from a session-group</div> + </td> + </tr> + <tr> <td class="elbow-placeholder"></td> @@ -8514,6 +8969,7 @@ Parameters <li>rendered</li> <li>parsed</li> <li>purged</li> + <li>overridden</li> </ul> </td> <td> @@ -8537,68 +8993,93 @@ Examples .. code-block:: yaml - ##### Using Merged ########################################## - ----------------------------------------------------------------- - - # configuration on device Before merge state: - - - #RP/0/0/CPU0:10#show running-config router bgp - #Thu Feb 4 09:38:36.245 UTC - #% No such configuration item(s) - #RP/0/0/CPU0:10# - - # --------------Merge state--------------- - # - name: Merge the following configuration - # cisco.iosxr.iosxr_bgp_global: - # config: - # as_number: 65536 - # default_metric: 5 - # socket: - # receive_buffer_size: 514 - # send_buffer_size: 4098 - # bgp: - # confederation: - # identifier: 4 - # bestpath: - # med: - # confed: True - # cluster_id: 5 - # router_id: 192.0.2.10 - # neighbors: - # - neighbor: 192.0.2.13 - # remote_as: 65538 - # bfd: - # fast_detect: - # strict_mode: True - # multiplier: 6 - # minimum_interval: 20 - # vrfs: - # - vrf: vrf1 - # default_metric: 5 - # ---------------------------------------- + # Using merged # + # Before state + # ------------ + # RP/0/0/CPU0:10#show running-config router bgp + # Thu Feb 4 09:38:36.245 UTC + # % No such configuration item(s) + # RP/0/0/CPU0:10# + + - name: Merge the following BGP global configuration + cisco.iosxr.iosxr_bgp_global: + config: + as_number: 65536 + default_metric: 5 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.13 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 - + # + # Task Output: + # --------------- + # + # before: {} # commands: - # - "router bgp 65536", - # - "bgp cluster-id 5", - # - "bgp router-id 192.0.2.10", - # - "bgp bestpath med confed", - # - "bgp confederation identifier 4", - # - "default-metric 5", - # - "socket receive-buffer-size 514", - # - "socket send-buffer-size 4098", - # - "neighbor 192.0.2.13", - # - "bfd fast-detect strict-mode", - # - "bfd minimum-interval 20", - # - "bfd multiplier 6", - # - "remote-as 65538", - # - "vrf vrf1", - # - "default-metric 5" - - # Configuration on device After Merge state: - # -------------------------------------------- + # - router bgp 65536 + # - bgp cluster-id 5 + # - bgp router-id 192.0.2.10 + # - bgp bestpath med confed + # - bgp confederation identifier 4 + # - default-metric 5 + # - socket receive-buffer-size 514 + # - socket send-buffer-size 4098 + # - neighbor 192.0.2.13 + # - bfd fast-detect strict-mode + # - bfd minimum-interval 20 + # - bfd multiplier 6 + # - remote-as 65538 + # - vrf vrf1 + # - default-metric 5 + # + # after: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 5 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.13 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + # + # After state + # ----------- # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:44:32.480 UTC @@ -8621,10 +9102,10 @@ Examples # ! # ! - ##### Using replaced ########################################### - - # configuration on device before replaced - # -------------------------------------------- + # Using replaced + # + # Before state + # ------------ # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:44:32.480 UTC @@ -8646,49 +9127,105 @@ Examples # default-metric 5 # ! # ! - # --------------Replace state--------------- - # - name: Replace the following configuration - # cisco.iosxr.iosxr_bgp_global: - # state: replaced - # config: - # as_number: 65536 - # default_metric: 4 - # socket: - # receive_buffer_size: 514 - # send_buffer_size: 4098 - # bgp: - # confederation: - # identifier: 4 - # bestpath: - # med: - # confed: True - # cluster_id: 5 - # router_id: 192.0.2.10 - # neighbors: - # - neighbor: 192.0.2.14 - # remote_as: 65538 - # bfd: - # fast_detect: - # strict_mode: True - # multiplier: 6 - # minimum_interval: 20 - # vrfs: - # - vrf: vrf1 - # default_metric: 5 - # ------------------------------------------- - # commands: - # - "router bgp 65536", - # - "default-metric 4", - # - "neighbor 192.0.2.14", - # - "bfd fast-detect strict-mode", - # - "bfd minimum-interval 20", - # - "bfd multiplier 6", - # - "remote-as 65538", - # - "no neighbor 192.0.2.13" - - # configuration on device After Replaced state: - # ---------------------------------------------- + - name: Replace the following configuration + cisco.iosxr.iosxr_bgp_global: + state: replaced + config: + as_number: 65536 + default_metric: 4 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.14 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 + + # + # Task Output: + # ------------- + # + # before: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 5 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.13 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + # + # commands: + # - router bgp 65536 + # - default-metric 4 + # - neighbor 192.0.2.14 + # - bfd fast-detect strict-mode + # - bfd minimum-interval 20 + # - bfd multiplier 6 + # - remote-as 65538 + # - no neighbor 192.0.2.13 + # + # after: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 4 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.14 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + # + # After state + # ----------- + # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC # router bgp 65536 @@ -8710,11 +9247,128 @@ Examples # ! # ! + # Using overridden + # + # Before state + # ------------ + # + # RP/0/0/CPU0:10#show running-config router bgp + # Thu Feb 4 09:44:32.480 UTC + # router bgp 65536 + # bgp confederation identifier 4 + # bgp router-id 192.0.2.10 + # bgp cluster-id 5 + # default-metric 5 + # socket send-buffer-size 4098 + # bgp bestpath med confed + # socket receive-buffer-size 514 + # neighbor 192.0.2.13 + # remote-as 65538 + # bfd fast-detect strict-mode + # bfd multiplier 6 + # bfd minimum-interval 20 + # ! + # vrf vrf1 + # default-metric 5 + # ! + # ! - ##### Using deleted ############################################ + - name: Override running config with provided configuration + cisco.iosxr.iosxr_bgp_global: + state: overridden + config: + as_number: 65536 + default_metric: 4 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.14 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 + # + # Task Output: + # ------------- + # + # before: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 5 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.13 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + # + # commands: + # - router bgp 65536 + # - default-metric 4 + # - neighbor 192.0.2.14 + # - bfd fast-detect strict-mode + # - bfd minimum-interval 20 + # - bfd multiplier 6 + # - remote-as 65538 + # - no neighbor 192.0.2.13 + # + # after: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 4 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.14 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 - # configuration on device Before deleted state - # --------------------------------------------- + # After state + # ----------- # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC @@ -8736,28 +9390,87 @@ Examples # default-metric 5 # ! # ! + + # Using deleted # - # -------------------------------------------------------- - # - name: Delete BGP configurations handled by this module - # cisco.iosxr.iosxr_bgp_global: - # state: deleted - # config: - # as_number: 65536 + # Before state + # ------------ + # + # RP/0/0/CPU0:10#show running-config router bgp + # Thu Feb 4 09:54:11.161 UTC + # router bgp 65536 + # bgp confederation identifier 4 + # bgp router-id 192.0.2.10 + # bgp cluster-id 5 + # default-metric 4 + # socket send-buffer-size 4098 + # bgp bestpath med confed + # socket receive-buffer-size 514 + # neighbor 192.0.2.14 + # remote-as 65538 + # bfd fast-detect strict-mode + # bfd multiplier 6 + # bfd minimum-interval 20 + # ! + # vrf vrf1 + # default-metric 5 + # ! + # ! + # + + - name: Delete BGP configurations handled by this module + cisco.iosxr.iosxr_bgp_global: + config: + as_number: 65536 + state: deleted + + # + # Task Output: + # ------------- + # + # before: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 4 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.14 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 # # commands: - # "router bgp 65536", - # "no bgp cluster-id 5", - # "no bgp router-id 192.0.2.10", - # "no bgp bestpath med confed", - # "no bgp confederation identifier 4", - # "no default-metric 4", - # "no socket receive-buffer-size 514", - # "no socket send-buffer-size 4098", - # "no neighbor 192.0.2.14", - # "no vrf vrf1" + # - router bgp 65536 + # - no bgp cluster-id 5 + # - no bgp router-id 192.0.2.10 + # - no bgp bestpath med confed + # - no bgp confederation identifier 4 + # - no default-metric 4 + # - no socket receive-buffer-size 514 + # - no socket send-buffer-size 4098 + # - no neighbor 192.0.2.14 + # - no vrf vrf1 # - # configuration on device after delete - # ------------------------------------------- + # after: + # as_number: '65536' + # + # After state + # ----------- # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 10:01:08.232 UTC @@ -8765,11 +9478,10 @@ Examples # ! # - - ################# Using Purged ######################################## - - # configuration on device Before Purged state - # -------------------------------------------- + # Using purged + # + # Before state + # ------------ # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC @@ -8777,104 +9489,138 @@ Examples # bgp confederation identifier 4 # bgp router-id 192.0.2.10 # bgp cluster-id 5 - # default-metric 4 + # default-metric 5 # socket send-buffer-size 4098 # bgp bestpath med confed # socket receive-buffer-size 514 - # address-family ipv4 unicast - # neighbor 192.0.2.14 + # neighbor 192.0.2.13 # remote-as 65538 # bfd fast-detect strict-mode # bfd multiplier 6 # bfd minimum-interval 20 - # address-family ipv4 unicast # ! # vrf vrf1 # default-metric 5 # ! # ! # - # - name: Purge all BGP configurations from the device - # cisco.iosxr.iosxr_bgp_global: - # state: purged + + - name: Purge all BGP configurations from the device + cisco.iosxr.iosxr_bgp_global: + state: purged + + # + # Task Output: + # ------------- + # + # before: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 5 + # neighbors: + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.13 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + # + # commands: + # - no router bgp 65536 # - # commands: - # - no router bgp 65563 + # after: {} # - # configuration on device After purged state: - # --------------------------------------------- + # After state + # ----------- # - # #RP/0/0/CPU0:10#show running-config router bgp - # #Thu Feb 4 09:38:36.245 UTC - # #% No such configuration item(s) - # #RP/0/0/CPU0:10# + # RP/0/0/CPU0:10#show running-config router bgp + # Thu Feb 4 09:38:36.245 UTC + # % No such configuration item(s) + # RP/0/0/CPU0:10# # + # - # ################# Using Rendred ####################################################### + # Using Rendered + # ----------------- # - # - name: Render platform specific configuration lines (without connecting to the device) - # cisco.iosxr.iosxr_bgp_global: - # state: rendered - # config: - # as_number: 1 - # default_metric: 4 - # vrfs: - # - vrf: vrf3 - # bfd: - # minimum_interval: 20 - # multiplier: 10 - # bgp: - # fast_external_fallover: - # disable: True - # router_id: 1.2.3.4 - # auto_policy_soft_reset: - # disable: True - # #rd: - # # auto: True - # # #value: 1 - # timers: - # keepalive_time: 20 - # holdtime: 30 - # - vrf: vrf2 - # bgp: - # enforce_first_as: - # disable: True - # default_metric: 4 - # neighbors: - # - neighbor: 1.1.1.3 - # remote_as: 2 - # graceful_maintenance: - # set: True - # activate: - # #set: True - # inheritance_disable: True - # local_preference: - # value: 1 - # #inheritance_disable: True - # as_prepends: - # value: 2 - # rendered output - # ------------------------------------ - # "router bgp 1", - # "default-metric 4", - # "vrf vrf3", - # "bfd multiplier 10", - # "bfd minimum-interval 20", - # "bgp auto-policy-soft-reset disable", - # "bgp fast-external-fallover disable", - # "bgp router-id 1.2.3.4", - # "timers bgp 20 30", - # "vrf vrf2", - # "neighbor 1.1.1.3", - # "remote-as 2", - # "graceful-maintenance", - # "graceful-maintenance activate inheritance-disable", - # "graceful-maintenance local-preference 1", - # "graceful-maintenance as-prepends 2", - # "bgp enforce-first-as disable", - # "default-metric 4" + - name: >- + Render platform specific configuration lines (without connecting to the + device) + cisco.iosxr.iosxr_bgp_global: + state: rendered + config: + as_number: 1 + default_metric: 4 + vrfs: + - vrf: vrf3 + bfd: + minimum_interval: 20 + multiplier: 10 + bgp: + fast_external_fallover: + disable: true + router_id: 1.2.3.4 + auto_policy_soft_reset: + disable: true + timers: + keepalive_time: 20 + holdtime: 30 + - vrf: vrf2 + bgp: + enforce_first_as: + disable: true + default_metric: 4 + neighbors: + - neighbor: 1.1.1.3 + remote_as: 2 + graceful_maintenance: + set: true + activate: + inheritance_disable: true + local_preference: + value: 1 + as_prepends: + value: 2 + + # + # Task output + # ----------------------- + # rendered: + # - router bgp 1 + # - default-metric 4 + # - vrf vrf3 + # - bfd multiplier 10 + # - bfd minimum-interval 20 + # - bgp auto-policy-soft-reset disable + # - bgp fast-external-fallover disable + # - bgp router-id 1.2.3.4 + # - timers bgp 20 30 + # - vrf vrf2 + # - neighbor 1.1.1.3 + # - remote-as 2 + # - graceful-maintenance + # - graceful-maintenance activate inheritance-disable + # - graceful-maintenance local-preference 1 + # - graceful-maintenance as-prepends 2 + # - bgp enforce-first-as disable + # - default-metric 4 + + # Using parsed # - # ############## Using parsed ##################### # parsed.cfg # ------------ # router bgp 65536 @@ -8896,40 +9642,221 @@ Examples # bfd minimum-interval 20 # ! # ! - # ------------------------------------ - # - # - name: Parse externally provided BGP config - # cisco.iosxr.iosxr_bgp_global: - # running_config: "{{ lookup('file', 'parsed.cfg') }}" - # state: parsed # - # #Task output using parsed - # as_number: "65536" + + - name: Parse externally provided BGP config + cisco.iosxr.iosxr_bgp_global: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Task output + # ----------------------- + # parsed: + # as_number: '65536' + # bgp: + # bestpath: + # med: + # confed: true + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 # default_metric: 4 + # neighbors: + # - cluster_id: '3' + # neighbor_address: 192.0.2.11 + # remote_as: 65537 + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.14 + # remote_as: 65538 # socket: # receive_buffer_size: 514 # send_buffer_size: 4098 + + # Using gathered + # + # Before state + # ------------ + # + + # RP/0/0/CPU0:10#show running-config router bgp + # Thu Feb 4 09:38:36.245 UTC + # router bgp 65536 + # bgp confederation identifier 4 + # bgp router-id 192.0.2.10 + # bgp cluster-id 5 + # default-metric 5 + # socket send-buffer-size 4098 + # bgp bestpath med confed + # socket receive-buffer-size 514 + # neighbor 192.0.2.13 + # remote-as 65538 + # bfd fast-detect strict-mode + # bfd multiplier 6 + # bfd minimum-interval 20 + # ! + # vrf vrf1 + # default-metric 5 + # ! + # ! + + - name: Gather bgp global facts + cisco.iosxr.iosxr_bgp_global: + state: gathered + + # Task Output: + # ------------ + # + # gathered: + # as_number: '65536' # bgp: - # confederation: - # identifier: 4 # bestpath: # med: # confed: true - # cluster_id: "5" - # router_id: "192.0.2.10" + # cluster_id: '5' + # confederation: + # identifier: 4 + # router_id: 192.0.2.10 + # default_metric: 5 # neighbors: - # - neighbor: 192.0.2.11 - # remote_as: 65537 - # cluster_id: "3" - # - neighbor: "192.0.2.14" - # remote_as: 65538 - # bfd: - # fast_detect: - # strict_mode: true - # multiplier: 6 - # minimum_interval: 20 + # - bfd: + # fast_detect: + # strict_mode: true + # minimum_interval: 20 + # multiplier: 6 + # neighbor_address: 192.0.2.13 + # remote_as: 65538 + # socket: + # receive_buffer_size: 514 + # send_buffer_size: 4098 + # vrfs: + # - default_metric: 5 + # vrf: vrf1 + +Return Values +------------- +Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module: + +.. raw:: html + + <table border=0 cellpadding=0 class="documentation-table"> + <tr> + <th colspan="1">Key</th> + <th>Returned</th> + <th width="100%">Description</th> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>after</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when changed</td> + <td> + <div>The resulting configuration model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>before</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>always</td> + <td> + <div>The configuration prior to the model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>commands</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>always</td> + <td> + <div>The set of commands pushed to the remote device.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router bgp 65536', 'bgp cluster-id 5', 'bgp router-id 192.0.2.10', 'bgp bestpath med confed']</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router bgp 1', 'default-metric 4', 'vrf vrf3']</div> + </td> + </tr> + </table> + <br/><br/> Status diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_module.rst deleted file mode 100644 index 288aab756..000000000 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_module.rst +++ /dev/null @@ -1,728 +0,0 @@ -.. _cisco.iosxr.iosxr_bgp_module: - - -********************* -cisco.iosxr.iosxr_bgp -********************* - -**Module to configure BGP protocol settings.** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - -DEPRECATED ----------- -:Removed in collection release after 2023-01-29 -:Why: Updated module released with more functionality. -:Alternative: iosxr_bgp_global - - - -Synopsis --------- -- This module provides configuration management of global BGP parameters on devices running Cisco IOS-XR - - - - -Parameters ----------- - -.. raw:: html - - <table border=0 cellpadding=0 class="documentation-table"> - <tr> - <th colspan="4">Parameter</th> - <th>Choices/<font color="blue">Defaults</font></th> - <th width="100%">Comments</th> - </tr> - <tr> - <td colspan="4"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>config</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the BGP related configuration.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td colspan="3"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>address_family</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">list</span> - / <span style="color: purple">elements=dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies BGP address family related configurations.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>afi</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li>ipv4</li> - <li>ipv6</li> - </ul> - </td> - <td> - <div>Type of address family to configure.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>networks</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">list</span> - / <span style="color: purple">elements=dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specify networks to announce via BGP.</div> - <div>For operation replace, this option is mutually exclusive with root level networks option.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>masklen</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - </td> - <td> - <div>Subnet mask length for the network to announce(e.g, 8, 16, 24, etc.).</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>network</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - </td> - <td> - <div>Network ID to announce via BGP.</div> - <div style="font-size: small; color: darkgreen"><br/>aliases: prefix</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>route_map</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Route map to modify the attributes.</div> - </td> - </tr> - - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>redistribute</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">list</span> - / <span style="color: purple">elements=dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the redistribute information from another routing protocol.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>id</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Identifier for the routing protocol for configuring redistribute information.</div> - <div>Valid for protocols 'ospf', 'eigrp', 'isis' and 'ospfv3'.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>metric</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the metric for redistributed routes.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>protocol</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li>ospf</li> - <li>ospfv3</li> - <li>eigrp</li> - <li>isis</li> - <li>static</li> - <li>connected</li> - <li>lisp</li> - <li>mobile</li> - <li>rip</li> - <li>subscriber</li> - </ul> - </td> - <td> - <div>Specifies the protocol for configuring redistribute information.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>route_map</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the route map reference.</div> - </td> - </tr> - - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>safi</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li>flowspec</li> - <li><div style="color: blue"><b>unicast</b> ←</div></li> - <li>multicast</li> - <li>labeled-unicast</li> - </ul> - </td> - <td> - <div>Specifies the type of cast for the address family.</div> - </td> - </tr> - - <tr> - <td class="elbow-placeholder"></td> - <td colspan="3"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>bgp_as</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the BGP Autonomous System (AS) number to configure on the device.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td colspan="3"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>log_neighbor_changes</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">boolean</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li>no</li> - <li>yes</li> - </ul> - </td> - <td> - <div>Enable/disable logging neighbor up/down and reset reason.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td colspan="3"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>neighbors</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">list</span> - / <span style="color: purple">elements=dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies BGP neighbor related configurations.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>advertisement_interval</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the minimum interval (in seconds) between sending BGP routing updates.</div> - <div>The range is from 0 to 600.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>description</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Neighbor specific description.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>ebgp_multihop</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the maximum hop count for EBGP neighbors not on directly connected networks.</div> - <div>The range is from 0 to 255.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>enabled</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">boolean</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li>no</li> - <li>yes</li> - </ul> - </td> - <td> - <div>Administratively shutdown or enable a neighbor.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>neighbor</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - </td> - <td> - <div>Neighbor router address.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>password</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Password to authenticate the BGP peer connection.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>remote_as</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - / <span style="color: red">required</span> - </div> - </td> - <td> - </td> - <td> - <div>Remote AS of the BGP neighbor to configure.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>tcp_mss</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies the TCP initial maximum segment size to use.</div> - <div>The range is from 68 to 10000.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>timers</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">dictionary</span> - </div> - </td> - <td> - </td> - <td> - <div>Specifies BGP neighbor timer related configurations.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>holdtime</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Interval after not receiving a keepalive message that the software declares a peer dead.</div> - <div>The range is from 3 to 65535.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>keepalive</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Frequency with which the Cisco IOS-XR software sends keepalive messages to its peer.</div> - <div>The range is from 0 to 65535.</div> - </td> - </tr> - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>min_neighbor_holdtime</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">integer</span> - </div> - </td> - <td> - </td> - <td> - <div>Interval specifying the minimum acceptable hold-time from a BGP neighbor.</div> - <div>The minimum acceptable hold-time must be less than, or equal to, the interval specified in the holdtime argument.</div> - <div>The range is from 3 to 65535.</div> - </td> - </tr> - - <tr> - <td class="elbow-placeholder"></td> - <td class="elbow-placeholder"></td> - <td colspan="2"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>update_source</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Source of the routing updates.</div> - </td> - </tr> - - <tr> - <td class="elbow-placeholder"></td> - <td colspan="3"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>router_id</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - </td> - <td> - <div>Configures the BGP routing process router-id value.</div> - </td> - </tr> - - <tr> - <td colspan="4"> - <div class="ansibleOptionAnchor" id="parameter-"></div> - <b>operation</b> - <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> - <div style="font-size: small"> - <span style="color: purple">string</span> - </div> - </td> - <td> - <ul style="margin: 0; padding: 0"><b>Choices:</b> - <li><div style="color: blue"><b>merge</b> ←</div></li> - <li>replace</li> - <li>override</li> - <li>delete</li> - </ul> - </td> - <td> - <div>Specifies the operation to be performed on the BGP process configured on the device.</div> - <div>In case of merge, the input configuration will be merged with the existing BGP configuration on the device.</div> - <div>In case of replace, if there is a diff between the existing configuration and the input configuration, the existing configuration will be replaced by the input configuration for every option that has the diff.</div> - <div>In case of override, all the existing BGP configuration will be removed from the device and replaced with the input configuration.</div> - <div>In case of delete the existing BGP configuration will be removed from the device.</div> - </td> - </tr> - </table> - <br/> - - -Notes ------ - -.. note:: - - This module works with connection ``network_cli``. See `the IOS-XR Platform Options <../network/user_guide/platform_iosxr.html>`_. - - - -Examples --------- - -.. code-block:: yaml - - - name: configure global bgp as 65000 - cisco.iosxr.iosxr_bgp: - bgp_as: 65000 - router_id: 1.1.1.1 - neighbors: - - neighbor: 182.168.10.1 - remote_as: 500 - description: PEER_1 - - neighbor: 192.168.20.1 - remote_as: 500 - update_source: GigabitEthernet 0/0/0/0 - address_family: - - name: ipv4 - cast: unicast - networks: - - network: 192.168.2.0/23 - - network: 10.0.0.0/8 - redistribute: - - protocol: ospf - id: 400 - metric: 110 - - - name: remove bgp as 65000 from config - ios_bgp: - bgp_as: 65000 - state: absent - - - -Return Values -------------- -Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module: - -.. raw:: html - - <table border=0 cellpadding=0 class="documentation-table"> - <tr> - <th colspan="1">Key</th> - <th>Returned</th> - <th width="100%">Description</th> - </tr> - <tr> - <td colspan="1"> - <div class="ansibleOptionAnchor" id="return-"></div> - <b>commands</b> - <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> - <div style="font-size: small"> - <span style="color: purple">list</span> - </div> - </td> - <td>always</td> - <td> - <div>The list of configuration mode commands to send to the device</div> - <br/> - <div style="font-size: smaller"><b>Sample:</b></div> - <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router bgp 65000', 'bgp router-id 1.1.1.1', 'neighbor 182.168.10.1 remote-as 500', 'neighbor 182.168.10.1 description PEER_1', 'neighbor 192.168.20.1 remote-as 500', 'neighbor 192.168.20.1 update-source GigabitEthernet0/0/0/0', 'address-family ipv4 unicast', 'redistribute ospf 400 metric 110', 'network 192.168.2.0/23', 'network 10.0.0.0/8', 'exit']</div> - </td> - </tr> - </table> - <br/><br/> - - -Status ------- - - -- This module will be removed in a release after 2023-01-29. *[deprecated]* -- For more information see `DEPRECATED`_. - - -Authors -~~~~~~~ - -- Nilashish Chakraborty (@NilashishC) diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst index 74e3b014b..271fa5ffb 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_neighbor_address_family_module.rst @@ -3583,16 +3583,16 @@ Examples neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true weight: 5 - neighbor_address: 192.0.2.3 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -3602,8 +3602,8 @@ Examples neighbors: - neighbor_address: 192.0.2.4 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -3612,8 +3612,8 @@ Examples neighbors: - neighbor_address: 192.0.2.5 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -3765,7 +3765,7 @@ Examples # capability orf prefix both # default-originate - - name: Delete the provided configuration + - name: Delete the provided configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: state: deleted config: @@ -3773,8 +3773,8 @@ Examples neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -3868,8 +3868,8 @@ Examples neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast default_originate: set: true weight: 4 @@ -3996,7 +3996,7 @@ Examples # capability orf prefix both # default-originate - - name: override the provided configuration + - name: override the provided configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: state: overridden config: @@ -4004,8 +4004,8 @@ Examples neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -4077,7 +4077,9 @@ Examples # neighbor 192.0.2.5 # remote-as 65540 - - name: Render platform specific configuration lines with state rendered (without connecting to the device) + - name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_bgp_neighbor_address_family: state: rendered config: @@ -4085,16 +4087,16 @@ Examples neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true weight: 5 - neighbor_address: 192.0.2.3 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -4104,8 +4106,8 @@ Examples neighbors: - neighbor_address: 192.0.2.4 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -4114,8 +4116,8 @@ Examples neighbors: - neighbor_address: 192.0.2.5 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -4149,8 +4151,8 @@ Examples # # Using parsed # - #parsed.cfg - #------------ + # parsed.cfg + # ------------ # router bgp 65536 # bgp router-id 192.0.1.1 # address-family ipv4 unicast @@ -4232,8 +4234,8 @@ Examples # capability_orf_prefix: both # # - #Using Gathered - #----------------- + # Using Gathered + # ----------------- # Before state state: # ------------- # RP/0/0/CPU0:iosxr-02#show running-config router bgp @@ -4275,8 +4277,8 @@ Examples # - name: Gathered the provided configuration with the existing running configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: - config: - state: gathered + config: + state: gathered # Task output diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_templates_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_templates_module.rst new file mode 100644 index 000000000..ed91c05d2 --- /dev/null +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_bgp_templates_module.rst @@ -0,0 +1,5579 @@ +.. _cisco.iosxr.iosxr_bgp_templates_module: + + +******************************* +cisco.iosxr.iosxr_bgp_templates +******************************* + +**Manages BGP templates resource module.** + + +Version added: 6.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the attributes of BGP templates on Cisco IOS-XR platforms. + + + + +Parameters +---------- + +.. raw:: html + + <table border=0 cellpadding=0 class="documentation-table"> + <tr> + <th colspan="7">Parameter</th> + <th>Choices/<font color="blue">Defaults</font></th> + <th width="100%">Comments</th> + </tr> + <tr> + <td colspan="7"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>config</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP template configurations.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td colspan="6"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>as_number</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Autonomous system number.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td colspan="6"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>neighbor</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + / <span style="color: purple">elements=dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>A list of BGP neighbor group configurations.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>address_family</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + / <span style="color: purple">elements=dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable address family and enter its config mode</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>advertise</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Per neighbor advertisement options</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>local_labeled_route</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Advertisement of routes with local-label</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>disable local-labeled-route</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set local-labeled-route</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>permanent_network</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Allow permanent networks for this neighbor</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>afi</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>ipv4</li> + <li>ipv6</li> + </ul> + </td> + <td> + <div>address family.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>aigp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>AIGP attribute</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Ignore AIGP attribute.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_cost_community_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>send AIGP attribute.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_med</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>send med options.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>disable Send AIGP value in MED.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set Send AIGP value in MED.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Set AIGP attribute.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>allowas_in</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Allow as-path with my AS present in it.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set allowas_in</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Number of occurences of AS number 1-10.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>as_override</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Override matching AS-number while sending update</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent as-override from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set as_override</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>bestpath_origin_as_allow_invalid</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Change default route selection criteria.Allow BGP origin-AS knobs.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>capability_orf_prefix</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>both</li> + <li>send</li> + <li>none</li> + <li>receive</li> + </ul> + </td> + <td> + <div>Advertise address prefix ORF capability to this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>default_originate</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Originate default route to this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent default-originate from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>route_policy</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Route policy to specify criteria to originate default</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set default route.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>encapsulation_type_srv6</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Specify encapsulation type</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>long_lived_graceful_restart</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable long lived graceful restart support.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>capable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Treat neighbor as LLGR capable.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>stale_time</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum time to wait before purging long-lived stale routes.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>accept</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>max accept time</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>max send time</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>maximum_prefix</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum number of prefixes to accept from this peer.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>discard_extra_paths</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Discard extra paths when limit is exceeded.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>max_limit</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>maximum no. of prefix limit.<1-4294967295.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>restart</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Restart time interval.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>threshold_value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>hreshold value (%) at which to generate a warning msg <1-100>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>warning_only</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Only give warning message when limit is exceeded.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>multipath</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Paths from this neighbor is eligible for multipath.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>next_hop_self</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Disable the next hop calculation for this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent next_hop_self from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set next hop self.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>next_hop_unchanged</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Disable the next hop calculation for this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent next_hop_unchanged from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>multipath</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not overwrite nexthop before advertising multipaths.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set next hop unchanged.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>optimal_route_reflection_group_name</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Configure optimal-route-reflection group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>orf_route_policy</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Specify ORF and inbound filtering criteria.'</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>origin_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP origin-AS knobs.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>validation</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP origin-AS validation knobs.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable RPKI origin-AS validation.</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>remove_private_AS</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Remove private AS number from outbound updates.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>entire_aspath</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>remove only if all ASes in the path are private.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inbound</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Remove private AS number from inbound updates.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent remove-private-AS from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set remove private As.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>route_policy</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Apply route policy to neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inbound</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Apply route policy to inbound routes.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>outbound</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Apply route policy to outbound routes.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>route_reflector_client</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Configure a neighbor as Route Reflector client.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent route-reflector-client from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set route-reflector-client.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>safi</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>flowspec</li> + <li>mdt</li> + <li>multicast</li> + <li>mvpn</li> + <li>rt-filter</li> + <li>tunnel</li> + <li>unicast</li> + <li>labeled-unicast</li> + <li>sr-policy</li> + </ul> + </td> + <td> + <div>Address Family modifier</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_community_ebgp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Send community attribute to this external neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent send_community_ebgp from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send_community_ebgp.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_community_gshut_ebgp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Allow the g-shut community to be sent to this external neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent send_community_gshut_ebgp from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send_community_gshut_ebgp.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_extended_community_ebgp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Send extended community attribute to this external neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent send_extended_community_ebgp from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send_extended_community_ebgp.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_multicast_attributes</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Send multicast attributes to this neighbor .</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable send multicast attributes.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send_multicast_attributes.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>signalling</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Signalling protocols to disable, BGP or LDP</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>bgp_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Select BGP to disable</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ldp_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Select LDP to disable</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>soft_reconfiguration</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Per neighbor soft reconfiguration.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inbound</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>inbound soft reconfiguration</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>always</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Allow inbound soft reconfiguration for this neighbor. Always use soft reconfig, even if route refresh is supported.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent soft_reconfiguration from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set inbound</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>update</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>update</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>out_originator_loopcheck_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable originator loop check</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>out_originator_loopcheck_set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Set originator loop check</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>use</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit configuration for this address-family from an af-group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>weight</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Set default weight for routes from this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>advertisement_interval</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Minimum interval between sending BGP routing updates.Example-<0-600>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>bfd</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Configure BFD parameters.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>fast_detect</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable Fast detection</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent bfd settings from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set fast-detect</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>strict_mode</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Hold down neighbor session until BFD session is up</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>minimum_interval</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Specifies the BFD session's minimum-interval value for the neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>multiplier</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Specifies the BFD session's multiplier value for the neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>bmp_activate</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable BMP logging for this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>server</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable BMP connection to particular server.Example-<1-8>.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>capability</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Advertise capability to the peer.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>additional_paths</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP additional-paths commands.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>receive</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Additional paths receive capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set receive capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set receive capability</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Additional paths Send capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set send capability</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>suppress</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Suppress advertising capability to the peer.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>all</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>all capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not inherit this configuration from parent group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set all.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>four_byte_AS</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>4-byte-as capability</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set 4_byte_as.</div> + </td> + </tr> + + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>cluster_id</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Cluster ID of this router acting as a route reflector.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>description</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Neighbor specific description.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>dmz_link_bandwidth</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Propagate the DMZ link bandwidth.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not inherit this configuration from parent group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set dmz-link-bandwidth.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>dscp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Set IP DSCP (DiffServ CodePoint).Please refer vendor document for valid entries.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ebgp_multihop</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Allow EBGP neighbors not on directly connected networks.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>mpls</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable BGP MPLS forwarding.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>maximum hop count.Example-<1-255>.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ebgp_recv_extcommunity_dmz</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Receive extcommunity dmz link bandwidth from ebgp neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent ebgp-recv-community-dmz from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set ebgp-recv-community-dmz.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ebgp_send_extcommunity_dmz</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Send extcommunity dmz link bandwidth from ebgp neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>cumulatie</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent ebgp-send-community-dmz from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set ebgp-send-community-dmz.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>egress_engineering</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable egress peer engineering for this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent egress-engineering from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set egress-engineering.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>enforce_first_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enforce the first AS for EBGP routes</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>disable enforce 1st as</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>graceful_maintenance</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Attributes for Graceful Maintenance. This will cause neighbors to de-prefer routes from this router and choose alternates. This allows the router to be brought in or out of service gracefully.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>activate</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Routes will be announced with the graceful maintenance attributes while activated either here or under router bgp configuration.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent activate from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>activate.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>as_prepends</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Number of times to prepend the local AS number to the AS path of routes. Default=0</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent as prepends from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Range of values for as prepends.Example-<0-6> .</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>local_preference</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>local preference with which to advertise routes to ibgp neigbors. Default=No Touch</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent local preference from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Range of values for Local Preference.Example-<0-4294967295> .</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set graceful maintenance.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>graceful_restart</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable graceful restart support for this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>restart_time</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Restart time advertised to neighbors in seconds <1-4095>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>stalepath_time</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum time to wait for restart of GR capable peers in seconds <1-4095>.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>idle_watch_time</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum time to wait for deletion of IDLE state dynamic peer.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ignore_connected_check</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Bypass the directly connected nexthop check for single-hop eBGP peering</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent ignore-connected-check from being inherited from the parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set ignore-connected-check.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>internal_vpn_client</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Preserve iBGP CE neighbor path in ATTR_SET across VPN core.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>keychain</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Set keychain based authentication.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent keychain from being inherited from parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>name</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Name of the key chain - maximum 32 characters.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>local</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Configure local parameter</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>address</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>IPv4 address</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent local address from being inherited from parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ipv4_address</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>IPv4 address <A.B.C.D>.</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>local_address_subnet</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Local address subnet of routing updates</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>local_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Specify local AS number.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent local AS from being inherited from parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>no_prepend</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>replace_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>dual_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Dual-AS mode.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prepend only local AS to announcements to this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Do not prepend local AS to announcements from this neighbor.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>2 byte, 4 byte As number</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>log</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Logging update messages per neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>log_message</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Logging update/notification messages per neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>in</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Inbound log messages</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable inbound message logging.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevents the msg log from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Range for message log buffer size <1-100>.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>out</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Outbound log messages</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable inbound message logging.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevents the msg log from being inherited from the parent.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Range for message log buffer size <1-100>.</div> + </td> + </tr> + + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>maximum_peers</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum dynamic neighbors <1-4095>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>name</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Name of neighbor group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>password</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Set a password.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>encrypted</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Specifies an ENCRYPTED password will follow.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent password from being inherited from parent.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>peer_set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Assign this neighbor to a peer-set used for egress peer engineering <1-255>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>precedence</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>critical</li> + <li>flash</li> + <li>flash-override</li> + <li>immediate</li> + <li>internet</li> + <li>network</li> + <li>priority</li> + <li>routine</li> + </ul> + </td> + <td> + <div>Set precedence</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>receive_buffer_size</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Set socket and BGP receive buffer size.Example <512-131072>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>remote_as</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Neighbor Autonomous System.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>remote_as_list</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Remote as-list configuration</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>send_buffer_size</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Set socket and BGP send buffer size.Example <4096-131072>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>session_open_mode</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>active-only</li> + <li>both</li> + <li>passive-only</li> + </ul> + </td> + <td> + <div>Establish BGP session using this TCP open mode.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>shutdown</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Administratively shut down this neighbor.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent shutdown from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>shutdown.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>tcp</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>TCP session configuration commands.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>mss</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Maximum Segment Size.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent mss from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>value</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>TCP initial maximum segment size.</div> + </td> + </tr> + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>timers</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP per neighbor timers.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>holdtime</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>hold time <3-65535> or 0 Disable hold time.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>keepalive_time</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>keepalive interval <0-65535>.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>min_holdtime</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Minimum acceptable holdtime from neighbor <3-65535>.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>ttl_security</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Enable EBGP TTL security.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>inheritance_disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Prevent ttl-security from being inherited from parent</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>set</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>set ttl-security</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>update</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>BGP Update configuration.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>in</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Inbound update message handling.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="3"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>filtering</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Inbound update message filtering</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>attribute_filter</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Attribute-filter configuration.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Name of group.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>logging</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Update filtering syslog message.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>disable</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">boolean</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>no</li> + <li>yes</li> + </ul> + </td> + <td> + <div>Disable update filtering syslog message.</div> + </td> + </tr> + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>update_message</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Filtered update messages.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>buffers</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">integer</span> + </div> + </td> + <td> + </td> + <td> + <div>Number of buffers to store filtered update messages.</div> + </td> + </tr> + + + + + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>update_source</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Source of routing updates.Refer vendor document for valid values.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="5"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>use</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td> + </td> + <td> + <div>Use a neighbor-group and session-group template.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>neighbor_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit configuration from a neighbor-group.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td class="elbow-placeholder"></td> + <td colspan="4"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>session_group</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>Inherit address-family independent config from a session-group</div> + </td> + </tr> + + + + <tr> + <td colspan="7"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>running_config</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + </td> + <td> + <div>This option is used only with state <em>parsed</em>.</div> + <div>The value of this option should be the output received from the Iosxr device by executing the command <b>show running-config router bgp</b>.</div> + <div>The state <em>parsed</em> reads the configuration from <code>running_config</code> option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the <em>parsed</em> key within the result.</div> + </td> + </tr> + <tr> + <td colspan="7"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>state</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">string</span> + </div> + </td> + <td> + <ul style="margin: 0; padding: 0"><b>Choices:</b> + <li>deleted</li> + <li><div style="color: blue"><b>merged</b> ←</div></li> + <li>overridden</li> + <li>replaced</li> + <li>gathered</li> + <li>rendered</li> + <li>parsed</li> + </ul> + </td> + <td> + <div>The state the configuration should be left in.</div> + </td> + </tr> + </table> + <br/> + + +Notes +----- + +.. note:: + - This module works with connection ``network_cli``. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # Before state: + # ------------- + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:00:12.668 UTC + # % No such configuration item(s) + # + # RP/0/RP0/CPU0:10# + + - name: Merge the provided configuration with the existing running configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: '1' + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + state: merged + + # Task Output + # ----------- + # before: {} + # commands: + # - router bgp 65536 + # - neighbor-group neighbor-group1 + # - advertisement-interval 10 + # - bfd fast-detect strict-mode + # - internal-vpn-client + # - precedence critical + # - address-family ipv4 unicast + # - advertise local-labeled-route + # - neighbor-group neighbor-group2 + # - dmz-link-bandwidth + # - description neighbor-group2 + # - cluster-id 1 + # - ebgp-multihop 255 + # - egress-engineering + # - internal-vpn-client + # - ignore-connected-check + # - local-as 6 + # - local address inheritance-disable + # - precedence flash + # - receive-buffer-size 512 + # - send-buffer-size 4096 + # - session-open-mode both + # - tcp mss inheritance-disable + # - update-source Loopback919 + # - ttl-security + # - graceful-maintenance + # - graceful-maintenance as-prepends 0 + # after: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 10 + # bfd: + # fast_detect: + # strict_mode: true + # internal_vpn_client: true + # name: neighbor-group1 + # precedence: critical + # - cluster_id: '1' + # description: neighbor-group2 + # dmz_link_bandwidth: + # set: true + # ebgp_multihop: + # value: 255 + # egress_engineering: + # set: true + # graceful_maintenance: + # as_prepends: + # value: 0 + # set: true + # ignore_connected_check: + # set: true + # internal_vpn_client: true + # local: + # address: + # inheritance_disable: true + # local_as: + # value: 6 + # name: neighbor-group2 + # precedence: flash + # receive_buffer_size: 512 + # send_buffer_size: 4096 + # session_open_mode: both + # tcp: + # mss: + # inheritance_disable: true + # ttl_security: + # set: true + # update_source: Loopback919 + + # After state: + # ------------ + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:14:33.116 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # bfd fast-detect strict-mode + # precedence critical + # advertisement-interval 10 + # internal-vpn-client + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 255 + # egress-engineering + # precedence flash + # graceful-maintenance + # as-prepends 0 + # ! + # tcp mss inheritance-disable + # local-as 6 + # cluster-id 1 + # dmz-link-bandwidth + # description neighbor-group2 + # ttl-security + # local address inheritance-disable + # update-source Loopback919 + # ignore-connected-check + # session-open-mode both + # send-buffer-size 4096 + # receive-buffer-size 512 + # internal-vpn-client + # ! + # ! + + + # Using replaced + # Before state: + # ------------ + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:14:33.116 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # bfd fast-detect strict-mode + # precedence critical + # advertisement-interval 10 + # internal-vpn-client + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 255 + # egress-engineering + # precedence flash + # graceful-maintenance + # as-prepends 0 + # ! + # tcp mss inheritance-disable + # local-as 6 + # cluster-id 1 + # dmz-link-bandwidth + # description neighbor-group2 + # ttl-security + # local address inheritance-disable + # update-source Loopback919 + # ignore-connected-check + # session-open-mode both + # send-buffer-size 4096 + # receive-buffer-size 512 + # internal-vpn-client + # ! + # ! + + - name: Replaced given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + name: neighbor-group1 + precedence: flash + - cluster_id: '2' + description: replace neighbor-group2 + ebgp_multihop: + value: 254 + graceful_maintenance: + as_prepends: + value: 2 + set: true + update_source: Loopback917 + name: neighbor-group2 + state: replaced + + # Task Output + # ----------- + # before: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 10 + # bfd: + # fast_detect: + # strict_mode: true + # internal_vpn_client: true + # name: neighbor-group1 + # precedence: critical + # - cluster_id: '1' + # description: neighbor-group2 + # dmz_link_bandwidth: + # set: true + # ebgp_multihop: + # value: 255 + # egress_engineering: + # set: true + # graceful_maintenance: + # as_prepends: + # value: 0 + # set: true + # ignore_connected_check: + # set: true + # internal_vpn_client: true + # local: + # address: + # inheritance_disable: true + # local_as: + # value: 6 + # name: neighbor-group2 + # precedence: flash + # receive_buffer_size: 512 + # send_buffer_size: 4096 + # session_open_mode: both + # tcp: + # mss: + # inheritance_disable: true + # ttl_security: + # set: true + # update_source: Loopback919 + # commands: + # - router bgp 65536 + # - neighbor-group neighbor-group1 + # - no bfd fast-detect strict-mode + # - no internal-vpn-client + # - advertisement-interval 12 + # - precedence flash + # - neighbor-group neighbor-group2 + # - no dmz-link-bandwidth + # - no egress-engineering + # - no internal-vpn-client + # - no ignore-connected-check + # - no local-as 6 + # - no local address inheritance-disable + # - no precedence flash + # - no receive-buffer-size 512 + # - no send-buffer-size 4096 + # - no session-open-mode both + # - no tcp mss inheritance-disable + # - no ttl-security + # - description replace neighbor-group2 + # - cluster-id 2 + # - ebgp-multihop 254 + # - update-source Loopback917 + # - graceful-maintenance as-prepends 2 + # after: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 12 + # name: neighbor-group1 + # precedence: flash + # - cluster_id: '2' + # description: replace neighbor-group2 + # ebgp_multihop: + # value: 254 + # graceful_maintenance: + # as_prepends: + # value: 2 + # set: true + # name: neighbor-group2 + # update_source: Loopback917 + + # After state: + # ------------ + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:23:34.104 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # precedence flash + # advertisement-interval 12 + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 254 + # graceful-maintenance + # as-prepends 2 + # ! + # cluster-id 2 + # description replace neighbor-group2 + # update-source Loopback917 + # ! + # ! + + + # Using deleted + # Before state: + # ------------- + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:23:34.104 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # precedence flash + # advertisement-interval 12 + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 254 + # graceful-maintenance + # as-prepends 2 + # ! + # cluster-id 2 + # description replace neighbor-group2 + # update-source Loopback917 + # ! + # ! + + - name: Delete given bgp_nbr_address_family configuration + cisco.iosxr.iosxr_bgp_templates: &deleted + config: + state: deleted + + # Task Output + # ----------- + # before: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 12 + # name: neighbor-group1 + # precedence: flash + # - cluster_id: '2' + # description: replace neighbor-group2 + # ebgp_multihop: + # value: 254 + # graceful_maintenance: + # as_prepends: + # value: 2 + # set: true + # name: neighbor-group2 + # update_source: Loopback917 + # commands: + # - router bgp 65536 + # - no neighbor-group neighbor-group1 + # - no neighbor-group neighbor-group2 + # after: {} + + # After state: + # ------------- + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:00:12.668 UTC + # % No such configuration item(s) + # + # RP/0/RP0/CPU0:10# + + # Using gathered + # Before state: + # ------------- + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:30:38.785 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # bfd fast-detect strict-mode + # precedence critical + # advertisement-interval 10 + # internal-vpn-client + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 255 + # egress-engineering + # precedence flash + # graceful-maintenance + # as-prepends 0 + # ! + # tcp mss inheritance-disable + # local-as 6 + # cluster-id 1 + # dmz-link-bandwidth + # description neighbor-group2 + # ttl-security + # local address inheritance-disable + # update-source Loopback919 + # ignore-connected-check + # session-open-mode both + # send-buffer-size 4096 + # receive-buffer-size 512 + # internal-vpn-client + # ! + # ! + + - name: Gather given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: &id001 + config: + state: gathered + + # Task output + # ----------- + # gathered: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 10 + # bfd: + # fast_detect: + # strict_mode: true + # internal_vpn_client: true + # name: neighbor-group1 + # precedence: critical + # - cluster_id: '1' + # description: neighbor-group2 + # dmz_link_bandwidth: + # set: true + # ebgp_multihop: + # value: 255 + # egress_engineering: + # set: true + # graceful_maintenance: + # as_prepends: + # value: 0 + # set: true + # ignore_connected_check: + # set: true + # internal_vpn_client: true + # local: + # address: + # inheritance_disable: true + # local_as: + # value: 6 + # name: neighbor-group2 + # precedence: flash + # receive_buffer_size: 512 + # send_buffer_size: 4096 + # session_open_mode: both + # tcp: + # mss: + # inheritance_disable: true + # ttl_security: + # set: true + # update_source: Loopback919 + + + # Using overridden + + # Before state: + # ------------- + # RP/0/RP0/CPU0:10#show running-config router bgp + # Thu Mar 23 10:30:38.785 UTC + # router bgp 65536 + # neighbor-group neighbor-group1 + # bfd fast-detect strict-mode + # precedence critical + # advertisement-interval 10 + # internal-vpn-client + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 255 + # egress-engineering + # precedence flash + # graceful-maintenance + # as-prepends 0 + # ! + # tcp mss inheritance-disable + # local-as 6 + # cluster-id 1 + # dmz-link-bandwidth + # description neighbor-group2 + # ttl-security + # local address inheritance-disable + # update-source Loopback919 + # ignore-connected-check + # session-open-mode both + # send-buffer-size 4096 + # receive-buffer-size 512 + # internal-vpn-client + # ! + # ! + - name: override given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + disable: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + bfd: + fast_detect: + strict_mode: true + name: neighbor-group1 + precedence: flash + state: overridden + + # Task Output + # ----------- + # before: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 10 + # bfd: + # fast_detect: + # strict_mode: true + # internal_vpn_client: true + # name: neighbor-group1 + # precedence: critical + # - cluster_id: '1' + # description: neighbor-group2 + # dmz_link_bandwidth: + # set: true + # ebgp_multihop: + # value: 255 + # egress_engineering: + # set: true + # graceful_maintenance: + # as_prepends: + # value: 0 + # set: true + # ignore_connected_check: + # set: true + # internal_vpn_client: true + # local: + # address: + # inheritance_disable: true + # local_as: + # value: 6 + # name: neighbor-group2 + # precedence: flash + # receive_buffer_size: 512 + # send_buffer_size: 4096 + # session_open_mode: both + # tcp: + # mss: + # inheritance_disable: true + # ttl_security: + # set: true + # update_source: Loopback919 + # commands: + # - router bgp 65536 + # - no neighbor-group neighbor-group2 + # - neighbor-group neighbor-group1 + # - no internal-vpn-client + # - advertisement-interval 12 + # - precedence flash + # - address-family ipv4 unicast + # - no advertise local-labeled-route + # - advertise local-labeled-route disable + # after: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # disable: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 12 + # bfd: + # fast_detect: + # strict_mode: true + # name: neighbor-group1 + # precedence: flash + + + # Using rendered + - name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: '1' + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + state: rendered + + # Task Output + # ----------- + # rendered: + # - router bgp 65536 + # - neighbor-group neighbor-group1 + # - advertisement-interval 10 + # - bfd fast-detect strict-mode + # - internal-vpn-client + # - precedence critical + # - address-family ipv4 unicast + # - advertise local-labeled-route + # - neighbor-group neighbor-group2 + # - dmz-link-bandwidth + # - description neighbor-group2 + # - cluster-id 1 + # - ebgp-multihop 255 + # - egress-engineering + # - internal-vpn-client + # - ignore-connected-check + # - local-as 6 + # - local address inheritance-disable + # - precedence flash + # - receive-buffer-size 512 + # - send-buffer-size 4096 + # - session-open-mode both + # - tcp mss inheritance-disable + # - update-source Loopback919 + # - ttl-security + # - graceful-maintenance + # - graceful-maintenance as-prepends 0 + + + # Using parsed + - name: Parse externally provided BGP configuration + register: result + cisco.iosxr.iosxr_bgp_templates: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # content of pared.cfg + # router bgp 65536 + # neighbor-group neighbor-group1 + # bfd fast-detect strict-mode + # precedence critical + # advertisement-interval 10 + # internal-vpn-client + # address-family ipv4 unicast + # advertise local-labeled-route + # ! + # ! + # neighbor-group neighbor-group2 + # ebgp-multihop 255 + # egress-engineering + # precedence flash + # graceful-maintenance + # as-prepends 0 + # ! + # tcp mss inheritance-disable + # local-as 6 + # cluster-id 1 + # dmz-link-bandwidth + # description neighbor-group2 + # ttl-security + # local address inheritance-disable + # update-source Loopback919 + # idle-watch-time 30 + # ignore-connected-check + # session-open-mode both + # send-buffer-size 4096 + # receive-buffer-size 512 + # internal-vpn-client + # ! + # ! + # Task output + # ----------- + # parsed: + # as_number: '65536' + # neighbor: + # - address_family: + # - advertise: + # local_labeled_route: + # set: true + # afi: ipv4 + # safi: unicast + # advertisement_interval: 10 + # bfd: + # fast_detect: + # strict_mode: true + # internal_vpn_client: true + # name: neighbor-group1 + # precedence: critical + # - cluster_id: '1' + # description: neighbor-group2 + # dmz_link_bandwidth: + # set: true + # ebgp_multihop: + # value: 255 + # egress_engineering: + # set: true + # graceful_maintenance: + # as_prepends: + # value: 0 + # set: true + # ignore_connected_check: + # set: true + # internal_vpn_client: true + # local: + # address: + # inheritance_disable: true + # local_as: + # value: 6 + # name: neighbor-group2 + # precedence: flash + # receive_buffer_size: 512 + # send_buffer_size: 4096 + # session_open_mode: both + # tcp: + # mss: + # inheritance_disable: true + # ttl_security: + # set: true + # update_source: Loopback919 + + + +Return Values +------------- +Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module: + +.. raw:: html + + <table border=0 cellpadding=0 class="documentation-table"> + <tr> + <th colspan="1">Key</th> + <th>Returned</th> + <th width="100%">Description</th> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>after</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when changed</td> + <td> + <div>The resulting configuration after module execution.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>before</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td> + <td> + <div>The configuration prior to the module execution.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>commands</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>merged</code>, <code>replaced</code>, <code>overridden</code>, <code>deleted</code> or <code>purged</code></td> + <td> + <div>The set of commands pushed to the remote device.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router bgp 65536', 'neighbor-group neighbor-group1', 'advertisement-interval 10', 'bfd fast-detect strict-mode', 'internal-vpn-client']</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router bgp 65536', 'neighbor-group neighbor-group1', 'advertisement-interval 10', 'bfd fast-detect strict-mode', 'internal-vpn-client']</div> + </td> + </tr> + </table> + <br/><br/> + + +Status +------ + + +Authors +~~~~~~~ + +- Ashwini Mhatre (@amhatre) diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_command_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_command_module.rst index 7d77a4e76..fa3db325e 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_command_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_command_module.rst @@ -153,32 +153,32 @@ Examples - name: run multiple commands on remote nodes cisco.iosxr.iosxr_command: commands: - - show version - - show interfaces - - {command: example command that prompts, prompt: expected prompt, answer: yes} + - show version + - show interfaces + - {command: example command that prompts, prompt: expected prompt, answer: true} - name: run multiple commands and evaluate the output cisco.iosxr.iosxr_command: commands: - - show version - - show interfaces + - show version + - show interfaces wait_for: - - result[0] contains IOS-XR - - result[1] contains Loopback0 + - result[0] contains IOS-XR + - result[1] contains Loopback0 - - name: multiple prompt, multiple answer (mandatory check for all prompts) + - name: 'multiple prompt, multiple answer (mandatory check for all prompts)' cisco.iosxr.iosxr_command: commands: - - command: key config-key password-encryption - prompt: - - "Enter old key :" - - "Enter new key :" - - "Enter confirm key :" - answer: - - "test1234" - - "test12345" - - "test12345" - check_all: true + - command: key config-key password-encryption + prompt: + - 'Enter old key :' + - 'Enter new key :' + - 'Enter confirm key :' + answer: + - test1234 + - test12345 + - test12345 + check_all: true diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_config_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_config_module.rst index 573f70495..28c4c4b37 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_config_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_config_module.rst @@ -352,9 +352,9 @@ Notes ----- .. note:: - - This module works with connection ``network_cli``. See `the IOS-XR Platform Options <../network/user_guide/platform_iosxr.html>`_. + - This module works with connection ``network_cli``. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_iosxr.html - This module does not support ``netconf`` connection - - Abbreviated commands are NOT idempotent, see L(Network FAQ,../network/user_guide/faq.html + - Abbreviated commands are NOT idempotent, see https://docs.ansible.com/ansible/latest/network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands - Avoid service disrupting changes (viz. Management IP) from config replace. - Do not use ``end`` in the replace config file. - To ensure idempotency and correct diff the configuration lines in the relevant module options should be similar to how they appear if present in the running configuration on device including the indentation. @@ -375,28 +375,26 @@ Examples - name: configure interface settings cisco.iosxr.iosxr_config: lines: - - description test interface - - ip address 172.31.1.1 255.255.255.0 + - description test interface + - ip address 172.31.1.1 255.255.255.0 parents: interface GigabitEthernet0/0/0/0 - name: load a config from disk and replace the current config cisco.iosxr.iosxr_config: src: config.cfg replace: config - backup: yes + backup: 'yes' - - name: for idempotency, use full-form commands + - name: 'for idempotency, use full-form commands' cisco.iosxr.iosxr_config: lines: - # - shut - - shutdown - # parents: int g0/0/0/1 + - shutdown parents: interface GigabitEthernet0/0/0/1 - name: configurable backup path cisco.iosxr.iosxr_config: src: config.cfg - backup: yes + backup: true backup_options: filename: backup.cfg dir_path: /home/user @@ -517,6 +515,23 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">22:28:34</div> </td> </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>updates</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>If there are commands to run against the host</td> + <td> + <div>The set of commands that will be pushed to the remote device</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['hostname foo', 'router ospf 1', 'router-id 1.1.1.1']</div> + </td> + </tr> </table> <br/><br/> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_facts_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_facts_module.rst index 7224eb735..07ad7bd41 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_facts_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_facts_module.rst @@ -112,25 +112,25 @@ Examples # Collect only the config and default facts - cisco.iosxr.iosxr_facts: gather_subset: - - config + - config # Do not collect hardware facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!hardware' + - '!hardware' # Collect only the lacp facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!all' - - '!min' + - '!all' + - '!min' gather_network_resources: - - lacp + - lacp # Do not collect lacp_interfaces facts - cisco.iosxr.iosxr_facts: gather_network_resources: - - '!lacp_interfaces' + - '!lacp_interfaces' # Collect lacp and minimal default facts - cisco.iosxr.iosxr_facts: @@ -140,11 +140,11 @@ Examples # Collect only the interfaces facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!all' - - '!min' + - '!all' + - '!min' gather_network_resources: - - interfaces - - l2_interfaces + - interfaces + - l2_interfaces @@ -223,6 +223,21 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late <tr> <td colspan="1"> <div class="ansibleOptionAnchor" id="return-"></div> + <b>ansible_net_cpu_utilization</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when hardware is configured</td> + <td> + <div>The current CPU utilization of the device</div> + <br/> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> <b>ansible_net_filesystems</b> <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> <div style="font-size: small"> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_hostname_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_hostname_module.rst index cd3855dc8..de7e0ed3a 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_hostname_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_hostname_module.rst @@ -133,9 +133,9 @@ Examples # Before state: # ------------- - #RP/0/RP0/CPU0:ios#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC - #hostname ios + # RP/0/RP0/CPU0:ios#show running-config hostname + # Thu Jan 20 19:48:56.011 UTC + # hostname ios # Merged play: # ------------ @@ -156,7 +156,7 @@ Examples # ------------ # RP/0/0/CPU0:Router1#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC + # Thu Jan 20 19:48:56.011 UTC # hostname Router1 @@ -165,7 +165,7 @@ Examples # ------------- # RP/0/0/CPU0:Router1#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC + # Thu Jan 20 19:48:56.011 UTC # hostname Router1 # Deleted play: @@ -184,9 +184,9 @@ Examples # After state: # ------------ - #RP/0/RP0/CPU0:ios#show running-config hostname - #Thu Jan 20 19:55:12.971 UTC - #hostname ios + # RP/0/RP0/CPU0:ios#show running-config hostname + # Thu Jan 20 19:55:12.971 UTC + # hostname ios # Using state: overridden # Before state: @@ -213,17 +213,17 @@ Examples # After state: # ------------ - #RP/0/RP0/CPU0:RouterTest#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC - #hostname RouterTest + # RP/0/RP0/CPU0:RouterTest#show running-config hostname + # Thu Jan 20 19:48:56.011 UTC + # hostname RouterTest # Using state: replaced # Before state: # ------------- - #RP/0/RP0/CPU0:RouterTest#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC - #hostname RouterTest + # RP/0/RP0/CPU0:RouterTest#show running-config hostname + # Thu Jan 20 19:48:56.011 UTC + # hostname RouterTest # Replaced play: # -------------- @@ -247,9 +247,9 @@ Examples # Before state: # ------------- - #RP/0/RP0/CPU0:RouterTest#show running-config hostname - #Thu Jan 20 19:48:56.011 UTC - #hostname RouterTest + # RP/0/RP0/CPU0:RouterTest#show running-config hostname + # Thu Jan 20 19:48:56.011 UTC + # hostname RouterTest # Gathered play: # -------------- diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_interfaces_module.rst index f67985591..cf82bc6e8 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_interfaces_module.rst @@ -206,7 +206,8 @@ Notes ----- .. note:: - - This module works with connection ``network_cli``. See `the IOS-XR Platform Options <../network/user_guide/platform_iosxr.html>`_. + - This module works with connection ``network_cli``. See https://docs.ansible.com/ansible/latest/network/user_guide/platform_iosxr.html + - The module examples uses callback plugin (stdout_callback = yaml) to generate task output in yaml format. @@ -216,221 +217,335 @@ Examples .. code-block:: yaml # Using merged + # Before state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # description Replaced by Ansible Team - # mtu 2000 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # dot1q native vlan 1021 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! + - name: Configure Ethernet interfaces cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - duplex: full + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + duplex: full state: merged + + # Task Output + # ----------- + # + # before: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - description Configured by Ansible + # - no shutdown + # - interface GigabitEthernet0/0/0/3 + # - description Configured by Ansible Network + # - duplex full + # - shutdown + # after: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # enabled: true + # name: GigabitEthernet0/0/0/2 + # - description: Configured by Ansible Network + # duplex: full + # enabled: false + # name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # description Configured and Merged by Ansible Network - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # description Configured and Merged by Ansible Network - # mtu 2600 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/2 + # description Configured by Ansible + # ! + # interface preconfigure GigabitEthernet0/0/0/3 + # description Configured by Ansible Network # duplex full # shutdown - # dot1q native vlan 1021 # ! + # Using replaced + # Before state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # description Configured by Ansible - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # description Test - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # dot1q native vlan 1021 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/2 + # description Configured by Ansible # ! - - name: Configure following interfaces and replace their existing config + # interface preconfigure GigabitEthernet0/0/0/3 + # description Configured by Ansible Network + # duplex full + # shutdown + # ! + + - name: Replace their existing configuration per interface cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - mtu: 2000 - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - duplex: auto + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + mtu: 2000 + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + duplex: auto state: replaced + + # Task Output + # ----------- + # + # before: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # enabled: true + # name: GigabitEthernet0/0/0/2 + # - description: Configured by Ansible Network + # duplex: full + # enabled: false + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - mtu 2000 + # - interface GigabitEthernet0/0/0/3 + # - duplex half + # after: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # enabled: true + # mtu: 2000 + # name: GigabitEthernet0/0/0/2 + # - description: Configured by Ansible Network + # duplex: half + # enabled: false + # name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # description Configured by Ansible - # shutdown + # interface Loopback888 + # ! + # interface Loopback999 + # ! + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/2 - # description Configured and Replaced by Ansible + # interface preconfigure GigabitEthernet0/0/0/2 + # description Configured by Ansible # mtu 2000 - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 # ! - # interface GigabitEthernet0/0/0/3 - # description Configured and Replaced by Ansible Network - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 + # interface preconfigure GigabitEthernet0/0/0/3 + # description Configured by Ansible Network # duplex half # shutdown - # dot1q native vlan 1021 # ! + # Using overridden + # Before state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # description Configured by Ansible - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/2 # description Configured by Ansible - # mtu 2600 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # duplex full + # mtu 2000 + # ! + # interface preconfigure GigabitEthernet0/0/0/3 + # description Configured by Ansible Network + # duplex half # shutdown - # dot1q native vlan 1021 # ! - - name: Override interfaces + + - name: Override interfaces configuration cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - duplex: auto - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - speed: 1000 + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + duplex: auto + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + speed: 1000 state: overridden + + # Task Output + # ----------- + # + # before: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # enabled: true + # mtu: 2000 + # name: GigabitEthernet0/0/0/2 + # - description: Configured by Ansible Network + # duplex: half + # enabled: false + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - no mtu + # - duplex half + # - interface GigabitEthernet0/0/0/3 + # - no description + # - no shutdown + # - no duplex + # after: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # duplex: half + # enabled: true + # name: GigabitEthernet0/0/0/2 + # - enabled: true + # name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # description Configured and Overridden by Ansible Network - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # speed 1000 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # description Configured and Overridden by Ansible Network - # mtu 2000 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # duplex full - # shutdown - # dot1q native vlan 1021 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/2 + # description Configured by Ansible + # duplex half # ! + # interface preconfigure GigabitEthernet0/0/0/3 + # ! + # Using deleted + # Before state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # description Configured and Overridden by Ansible Network - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # speed 1000 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # description Configured and Overridden by Ansible Network - # mtu 2000 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # duplex full - # shutdown - # dot1q native vlan 1021 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/2 + # description Configured by Ansible + # duplex half # ! - - name: Delete IOSXR interfaces as in given arguments + # interface preconfigure GigabitEthernet0/0/0/3 + # ! + + - name: Delete interfaces arguments cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - - name: GigabitEthernet0/0/0/3 + - name: GigabitEthernet0/0/0/2 + - name: GigabitEthernet0/0/0/3 state: deleted + + # Task Output + # ----------- + # + # before: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - description: Configured by Ansible + # duplex: half + # enabled: true + # name: GigabitEthernet0/0/0/2 + # - enabled: true + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - no description + # - no duplex + # after: + # - enabled: true + # name: Loopback888 + # - enabled: true + # name: Loopback999 + # - enabled: true + # name: GigabitEthernet0/0/0/2 + # - enabled: true + # name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # vrf custB - # ipv4 address 178.18.169.23 255.255.255.0 - # dot1q native vlan 30 + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # vrf custB - # ipv4 address 10.10.0.2 255.255.255.0 - # dot1q native vlan 1021 + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! + # interface preconfigure GigabitEthernet0/0/0/2 + # ! + # interface preconfigure GigabitEthernet0/0/0/3 + # ! + # Using parsed - # parsed.cfg - # ------------ + + # File: parsed.cfg + # ---------------- # # interface Loopback888 # description test for ansible @@ -451,95 +566,76 @@ Examples # interface GigabitEthernet0/0/0/4 # shutdown # ! - # - name: Convert ACL interfaces config to argspec without connecting to the appliance + + # - name: Parse provided configuration # cisco.iosxr.iosxr_interfaces: # running_config: "{{ lookup('file', './parsed.cfg') }}" # state: parsed - # Task Output (redacted) - # ----------------------- - # "parsed": [ - # { - # "name": "MgmtEth0/RP0/CPU0/0" - # }, - # { - # "access_groups": [ - # { - # "acls": [ - # { - # "direction": "in", - # "name": "acl_1" - # }, - # { - # "direction": "out", - # "name": "acl_2" - # } - # ], - # "afi": "ipv4" - # }, - # { - # "acls": [ - # { - # "direction": "in", - # "name": "acl6_1" - # }, - # { - # "direction": "out", - # "name": "acl6_2" - # } - # ], - # "afi": "ipv6" - # } - # ], - # "name": "GigabitEthernet0/0/0/0" - # }, - # { - # "access_groups": [ - # { - # "acls": [ - # { - # "direction": "out", - # "name": "acl_1" - # } - # ], - # "afi": "ipv4" - # } - # ], - # "name": "GigabitEthernet0/0/0/1" - # } - # ] - # } + + # Task Output + # ----------- + # + # parsed: + # - name: MgmtEth0/RP0/CPU0/0 + # - access_groups: + # - acls: + # - direction: in + # name: acl_1 + # - direction: out + # name: acl_2 + # afi: ipv4 + # - acls: + # - direction: in + # name: acl6_1 + # - direction: out + # name: acl6_2 + # afi: ipv6 + # name: GigabitEthernet0/0/0/0 + # - access_groups: + # - acls: + # - direction: out + # name: acl_1 + # afi: ipv4 + # name: GigabitEthernet0/0/0/1 + + # Using rendered + - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/0 - description: Configured and Merged by Ansible-Network - mtu: 110 - enabled: true - duplex: half - - name: GigabitEthernet0/0/0/1 - description: Configured and Merged by Ansible-Network - mtu: 2800 - enabled: false - speed: 100 - duplex: full + - name: GigabitEthernet0/0/0/0 + description: Configured and Merged by Ansible-Network + mtu: 110 + enabled: true + duplex: half + - name: GigabitEthernet0/0/0/1 + description: Configured and Merged by Ansible-Network + mtu: 2800 + enabled: false + speed: 100 + duplex: full state: rendered - # Task Output (redacted) - # ----------------------- - # "rendered": [ - # "interface GigabitEthernet0/0/0/0", - # "description Configured and Merged by Ansible-Network", - # "mtu 110", - # "duplex half", - # "no shutdown", - # "interface GigabitEthernet0/0/0/1", - # "description Configured and Merged by Ansible-Network", - # "mtu 2800", - # "speed 100", - # "duplex full", - # "shutdown" - # ] + + # Task Output + # ----------- + # + # rendered: + # - interface GigabitEthernet0/0/0/0 + # - description Configured and Merged by Ansible-Network + # - mtu 110 + # - duplex half + # - no shutdown + # - interface GigabitEthernet0/0/0/1 + # - description Configured and Merged by Ansible-Network + # - mtu 2800 + # - speed 100 + # - duplex full + # - shutdown + + # Using gathered + # Before state: # ------------ # @@ -563,58 +659,28 @@ Examples # interface GigabitEthernet0/0/0/4 # shutdown # ! - - name: Gather IOSXR interfaces as in given arguments + + - name: Gather facts for interfaces cisco.iosxr.iosxr_interfaces: config: state: gathered - # Task Output (redacted) - # ----------------------- - # - # "gathered": [ - # { - # "description": "test for ansible", - # "enabled": false, - # "name": "Loopback888" - # }, - # { - # "description": "Configured and Merged by Ansible-Network", - # "duplex": "half", - # "enabled": true, - # "mtu": 110, - # "name": "GigabitEthernet0/0/0/0" - # }, - # { - # "enabled": false, - # "name": "GigabitEthernet0/0/0/3" - # }, - # { - # "enabled": false, - # "name": "GigabitEthernet0/0/0/4" - # } - # ] - # After state: - # ------------ + + # Task Output + # ----------- # - # RP/0/0/CPU0:an-iosxr-02#show running-config interface - # interface Loopback888 - # description test for ansible - # shutdown - # ! - # interface MgmtEth0/0/CPU0/0 - # ipv4 address 10.8.38.70 255.255.255.0 - # ! - # interface GigabitEthernet0/0/0/0 - # description Configured and Merged by Ansible-Network - # mtu 110 - # ipv4 address 172.31.1.1 255.255.255.0 - # duplex half - # ! - # interface GigabitEthernet0/0/0/3 - # shutdown - # ! - # interface GigabitEthernet0/0/0/4 - # shutdown - # ! + # gathered: + # - description: test for ansible + # enabled: false + # name: Loopback888 + # - description: Configured and Merged by Ansible-Network + # duplex: half + # enabled: true + # mtu: 110 + # name: GigabitEthernet0/0/0/0 + # - enabled: false + # name: GigabitEthernet0/0/0/3 + # - enabled: false + # name: GigabitEthernet0/0/0/4 diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l2_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l2_interfaces_module.rst index 6546e9f84..bf19ac2f0 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l2_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l2_interfaces_module.rst @@ -316,6 +316,24 @@ Parameters </td> <td> <div>802.1Q VLAN configuration. Note that it can accept either 2 VLAN IDs when configuring Q-in-Q VLAN, or it will accept 1 VLAN ID and 'any' as input list when configuring Q-in-any vlan as input. Note, that this option is valid only with respect to Sub-Interface and is not valid when configuring for Interface.</div> + <div>This option is DEPRECATED and replaced with qvlan, this attribute will be removed after 2026-06-01.</div> + </td> + </tr> + <tr> + <td class="elbow-placeholder"></td> + <td colspan="2"> + <div class="ansibleOptionAnchor" id="parameter-"></div> + <b>qvlan</b> + <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + / <span style="color: purple">elements=string</span> + </div> + </td> + <td> + </td> + <td> + <div>802.1Q VLAN configuration. Note that it can accept either 2 VLAN IDs when configuring Q-in-Q VLAN, or it will accept 1 VLAN ID and 'any' as input list when configuring Q-in-any vlan as input. Note, that this option is valid only with respect to Sub-Interface and is not valid when configuring for Interface.</div> </td> </tr> @@ -397,20 +415,21 @@ Examples - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/3 - native_vlan: 20 - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: tunnel - - name: GigabitEthernet0/0/0/3.900 - l2transport: true - q_vlan: - - 20 - - 40 + - name: GigabitEthernet0/0/0/3 + native_vlan: 20 + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: tunnel + - name: GigabitEthernet0/0/0/3.900 + l2transport: true + q_vlan: + - 20 + - 40 state: merged + # After state: # ------------ # @@ -459,20 +478,23 @@ Examples # dot1q vlan 20 40 # ! - - name: Replaces device configuration of listed interfaces with provided configuration + - name: >- + Replaces device configuration of listed interfaces with provided + configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: forward - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - any + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: forward + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - any state: replaced + # After state: # ------------- # @@ -524,17 +546,18 @@ Examples - name: Override device configuration of all interfaces with provided configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: forward - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - any + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: forward + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - any state: overridden + # After state: # ------------- # @@ -583,7 +606,7 @@ Examples - name: "Delete L2 attributes of given interfaces (Note: This won't delete the interface itself)" cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 + - name: GigabitEthernet0/0/0/4 state: deleted # After state: @@ -725,25 +748,21 @@ Examples - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_l2_interfaces: config: - - - name: GigabitEthernet0/0/0/1 - native_vlan: 10 - l2transport: true - l2protocol: - - - pvst: tunnel - - - cdp: forward - propagate: true - - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - 40 - - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 + - name: GigabitEthernet0/0/0/1 + native_vlan: 10 + l2transport: true + l2protocol: + - pvst: tunnel + - cdp: forward + propagate: true + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - 40 + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 state: rendered + # Task Output (redacted) # ----------------------- # "rendered": [ diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l3_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l3_interfaces_module.rst index c338a485a..b57c413a1 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l3_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_l3_interfaces_module.rst @@ -224,56 +224,70 @@ Examples # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.0.2 255.255.255.0 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/2 # ! - # interface GigabitEthernet0/0/0/4 - # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 # ! - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/2 - ipv4: - - address: 192.168.0.1/24 - - name: GigabitEthernet0/0/0/3 - ipv4: - - address: 192.168.2.1/24 - secondary: true + - name: GigabitEthernet0/0/0/2 + ipv4: + - address: 192.168.0.1/24 + - name: GigabitEthernet0/0/0/3 + ipv4: + - address: 192.168.2.1/24 + secondary: true state: merged + # Task Output + # ----------- + # + # before: + # - name: Loopback888 + # - name: Loopback999 + # - name: GigabitEthernet0/0/0/2 + # - name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - ipv4 address 192.168.0.1 255.255.255.0 + # - interface GigabitEthernet0/0/0/3 + # - ipv4 address 192.168.2.1 255.255.255.0 secondary + # after: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.0.1/24 + # name: GigabitEthernet0/0/0/2 + # - ipv4: + # - address: 192.168.2.1/24 + # secondary: true + # name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # ipv4 address 192.168.0.1 255.255.255.0 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.1.0 255.255.255.0 - # ipv4 address 192.168.2.1 255.255.255.0 secondary - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/2 + # ipv4 address 192.168.0.1 255.255.255.0 # ! - # interface GigabitEthernet0/0/0/4 - # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 + # ipv4 address 192.168.2.1 255.255.255.0 secondary # ! # Using overridden @@ -282,57 +296,76 @@ Examples # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # ipv4 address 192.168.0.1 255.255.255.0 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.1.0 255.255.255.0 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/2 + # ipv4 address 192.168.0.1 255.255.255.0 # ! - # interface GigabitEthernet0/0/0/4 - # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 + # ipv4 address 192.168.2.1 255.255.255.0 secondary # ! - name: Override device configuration of all interfaces with provided configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - ipv4: - - address: 192.168.0.1/24 - - name: GigabitEthernet0/0/0/3.700 - ipv4: - - address: 192.168.0.2/24 - - address: 192.168.2.1/24 - secondary: true + - name: GigabitEthernet0/0/0/3 + ipv4: + - address: 192.168.0.2/24 + - address: 192.168.2.1/24 + secondary: true state: overridden + + # Task Output + # ----------- + # + # before: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.0.1/24 + # name: GigabitEthernet0/0/0/2 + # - ipv4: + # - address: 192.168.2.1/24 + # secondary: true + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/2 + # - no ipv4 address + # - interface GigabitEthernet0/0/0/3 + # - ipv4 address 192.168.0.2 255.255.255.0 + # - ipv4 address 192.168.0.1 255.255.255.0 + # after: + # - name: Loopback888 + # - name: Loopback999 + # - name: GigabitEthernet0/0/0/2 + # - ipv4: + # - address: 192.168.0.1/24 + # - address: 192.168.2.1/24 + # secondary: true + # name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.0.1 255.255.255.0 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 - # ipv4 address 192.168.0.2 255.255.255.0 - # ipv4 address 192.168.2.1 255.255.255.0 secondary + # interface preconfigure GigabitEthernet0/0/0/2 # ! - # interface GigabitEthernet0/0/0/4 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 + # ipv4 address 192.168.0.1 255.255.255.0 + # ipv4 address 192.168.2.1 255.255.255.0 secondary # ! # Using replaced @@ -341,55 +374,78 @@ Examples # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.0.2 255.255.255.0 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 - # ipv4 address 192.168.0.1 255.255.255.0 + # interface preconfigure GigabitEthernet0/0/0/2 # ! - # interface GigabitEthernet0/0/0/4 - # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 + # ipv4 address 192.168.0.1 255.255.255.0 + # ipv4 address 192.168.2.1 255.255.255.0 secondary # ! - - name: Replaces device configuration of listed interfaces with provided configuration + - name: >- + Replaces device configuration of listed interfaces with provided + configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - ipv6: - - address: fd5d:12c9:2201:1::1/64 - - name: GigabitEthernet0/0/0/4 - ipv4: - - address: 192.168.0.2/24 + - name: GigabitEthernet0/0/0/3 + ipv6: + - address: 'fd5d:12c9:2201:1::1/64' + - name: GigabitEthernet0/0/0/2 + ipv4: + - address: 192.168.0.2/24 state: replaced + + # Task Output + # ----------- + # + # before: + # - name: Loopback888 + # - name: Loopback999 + # - name: GigabitEthernet0/0/0/2 + # - ipv4: + # - address: 192.168.0.1/24 + # - address: 192.168.2.1/24 + # secondary: true + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/3 + # - no ipv4 address + # - ipv6 address fd5d:12c9:2201:1::1/64 + # - interface GigabitEthernet0/0/0/2 + # - ipv4 address 192.168.0.2 255.255.255.0 + # after: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.0.2/24 + # name: GigabitEthernet0/0/0/2 + # - ipv6: + # - address: fd5d:12c9:2201:1::1/64 + # name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 - # ipv4 address 192.168.0.1 255.255.255.0 - # ! - # interface GigabitEthernet0/0/0/4 + # interface preconfigure GigabitEthernet0/0/0/2 # ipv4 address 192.168.0.2 255.255.255.0 - # shutdown + # ! + # interface preconfigure GigabitEthernet0/0/0/3 + # ipv6 address fd5d:12c9:2201:1::1/64 # ! # Using deleted @@ -398,112 +454,180 @@ Examples # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # ipv4 address 192.168.2.1 255.255.255.0 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # ipv4 address 192.168.3.1 255.255.255.0 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # ipv4 address 192.168.0.2 255.255.255.0 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 - # ipv4 address 192.168.0.1 255.255.255.0 + # interface preconfigure GigabitEthernet0/0/0/2 + # ipv4 address 192.168.0.2 255.255.255.0 # ! - # interface GigabitEthernet0/0/0/4 + # interface preconfigure GigabitEthernet0/0/0/3 # ipv6 address fd5d:12c9:2201:1::1/64 - # shutdown # ! - - name: "Delete L3 attributes of given interfaces (Note: This won't delete the interface itself)" + - name: Delete attributes for interfaces (This won't delete the interface itself) cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - - name: GigabitEthernet0/0/0/4 - - name: GigabitEthernet0/0/0/3.700 + - name: GigabitEthernet0/0/0/3 + - name: GigabitEthernet0/0/0/4 + - name: GigabitEthernet0/0/0/3.700 state: deleted + + # Task Output + # ----------- + # + # before: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.0.2/24 + # name: GigabitEthernet0/0/0/2 + # - ipv6: + # - address: fd5d:12c9:2201:1::1/64 + # name: GigabitEthernet0/0/0/3 + # commands: + # - interface GigabitEthernet0/0/0/3 + # - no ipv6 address + # after: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.0.2/24 + # name: GigabitEthernet0/0/0/2 + # - name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 - # ipv4 address 192.168.2.1 255.255.255.0 - # shutdown + # interface Loopback888 # ! - # interface GigabitEthernet0/0/0/2 - # ipv4 address 192.168.3.1 255.255.255.0 - # shutdown + # interface Loopback999 # ! - # interface GigabitEthernet0/0/0/3 - # shutdown + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/2 + # ipv4 address 192.168.0.2 255.255.255.0 # ! - # interface GigabitEthernet0/0/0/4 - # shutdown + # interface preconfigure GigabitEthernet0/0/0/3 # ! - # Using Deleted without any config passed - # "(NOTE: This will delete all of configured resource module attributes from each configured interface)" + # Using deleted - will delete all interface configuration and not interface # Before state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 + # interface Loopback888 + # ! + # interface Loopback999 + # ! + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/1 # ipv4 address 192.168.2.1 255.255.255.0 # shutdown # ! - # interface GigabitEthernet0/0/0/2 + # interface preconfigure GigabitEthernet0/0/0/2 # ipv4 address 192.168.3.1 255.255.255.0 # shutdown # ! - # interface GigabitEthernet0/0/0/3 + # interface preconfigure GigabitEthernet0/0/0/3 # ipv4 address 192.168.0.2 255.255.255.0 # shutdown # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/3.700 # ipv4 address 192.168.0.1 255.255.255.0 # ! - # interface GigabitEthernet0/0/0/4 + # interface preconfigure GigabitEthernet0/0/0/4 # ipv6 address fd5d:12c9:2201:1::1/64 # shutdown # ! - - - name: "Delete L3 attributes of all interfaces (Note: This won't delete the interface itself)" + - name: "Delete L3 config of all interfaces (This won't delete the interface itself)" cisco.iosxr.iosxr_l3_interfaces: state: deleted + # Task Output + # ----------- + # + # before: + # - name: Loopback888 + # - name: Loopback999 + # - ipv4: + # - address: 192.168.2.1/24 + # name: GigabitEthernet0/0/0/1 + # - ipv4: + # - address: 192.168.3.1/24 + # name: GigabitEthernet0/0/0/2 + # - ipv4: + # - address: 192.168.0.2/24 + # name: GigabitEthernet0/0/0/3 + # - ipv4: + # - address: 192.168.0.1/24 + # name: GigabitEthernet0/0/0/3.700 + # - ipv6: + # - address: fd5d:12c9:2201:1::1/64 + # name: GigabitEthernet0/0/0/4 + # commands: + # - interface GigabitEthernet0/0/0/1 + # - no ipv4 address + # - interface GigabitEthernet0/0/0/2 + # - no ipv4 address + # - interface GigabitEthernet0/0/0/3 + # - no ipv4 address + # - interface GigabitEthernet0/0/0/3.700 + # - no ipv4 address + # - interface GigabitEthernet0/0/0/4 + # - no ipv6 address + # after: + # - name: Loopback888 + # - name: Loopback999 + # - name: GigabitEthernet0/0/0/1 + # - name: GigabitEthernet0/0/0/2 + # - name: GigabitEthernet0/0/0/3 + # - name: GigabitEthernet0/0/0/3.700 + # - name: GigabitEthernet0/0/0/4 + # After state: # ------------- # # viosxr#show running-config interface - # interface GigabitEthernet0/0/0/1 + # interface Loopback888 + # ! + # interface Loopback999 + # ! + # interface MgmtEth0/RP0/CPU0/0 + # ipv4 address dhcp + # ! + # interface preconfigure GigabitEthernet0/0/0/1 # shutdown # ! - # interface GigabitEthernet0/0/0/2 + # interface preconfigure GigabitEthernet0/0/0/2 # shutdown # ! - # interface GigabitEthernet0/0/0/3 + # interface preconfigure GigabitEthernet0/0/0/3 # shutdown # ! - # interface GigabitEthernet0/0/0/3.700 + # interface preconfigure GigabitEthernet0/0/0/3.700 # ! - # interface GigabitEthernet0/0/0/4 + # interface preconfigure GigabitEthernet0/0/0/4 # shutdown # ! # Using parsed - # parsed.cfg - # ------------ + + # File: parsed.cfg + # ---------------- # - # nterface Loopback888 + # interface Loopback888 # description test for ansible # shutdown # ! @@ -534,79 +658,60 @@ Examples # ipv4 address 192.0.22.1 255.255.255.0 # ipv4 address 192.0.23.1 255.255.255.0 # ! - # - name: Convert L3 interfaces config to argspec without connecting to the appliance - # cisco.iosxr.iosxr_l3_interfaces: - # running_config: "{{ lookup('file', './parsed.cfg') }}" - # state: parsed - # Task Output (redacted) - # ----------------------- - # "parsed": [ - # { - # "ipv4": [ - # { - # "address": "192.0.2.1 255.255.255.0" - # }, - # { - # "address": "192.0.2.2 255.255.255.0", - # "secondary": true - # } - # ], - # "ipv6": [ - # { - # "address": "2001:db8:0:3::/64" - # } - # ], - # "name": "GigabitEthernet0/0/0/0" - # }, - # { - # "name": "GigabitEthernet0/0/0/1" - # }, - # { - # "ipv4": [ - # { - # "address": "192.0.22.1 255.255.255.0" - # }, - # { - # "address": "192.0.23.1 255.255.255.0" - # } - # ], - # "name": "GigabitEthernet0/0/0/3" - # } - # ] + - name: Convert L3 interfaces config to argspec without connecting to the appliance + cisco.iosxr.iosxr_l3_interfaces: + running_config: "{{ lookup('file', './parsed.cfg') }}" + state: parsed + + # Task Output + # ----------- + # + # parsed: + # - ipv4: + # - address: 192.0.2.1 255.255.255.0 + # - address: 192.0.2.2 255.255.255.0 + # secondary: true + # ipv6: + # - address: 2001:db8:0:3::/64 + # name: GigabitEthernet0/0/0/0 + # - name: GigabitEthernet0/0/0/1 + # - ipv4: + # - address: 192.0.22.1 255.255.255.0 + # - address: 192.0.23.1 255.255.255.0 + # name: GigabitEthernet0/0/0/3 # Using rendered + - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_l3_interfaces: config: + - name: GigabitEthernet0/0/0/0 + ipv4: + - address: 198.51.100.1/24 + - name: GigabitEthernet0/0/0/1 + ipv6: + - address: '2001:db8:0:3::/64' + ipv4: + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 + secondary: true + state: rendered - - name: GigabitEthernet0/0/0/0 - ipv4: - - - address: 198.51.100.1/24 - - - name: GigabitEthernet0/0/0/1 - ipv6: - - - address: 2001:db8:0:3::/64 - ipv4: - - address: 192.0.2.1/24 + # Task Output + # ----------- + # + # rendered: + # - interface GigabitEthernet0/0/0/0 + # - ipv4 address 198.51.100.1 255.255.255.0 + # - interface GigabitEthernet0/0/0/1 + # - ipv4 address 192.0.2.2 255.255.255.0 secondary + # - ipv4 address 192.0.2.1 255.255.255.0 + # - ipv6 address 2001:db8:0:3::/64 - - address: 192.0.2.2/24 - secondary: true - state: rendered - # Task Output (redacted) - # ----------------------- - # "rendered": [ - # "interface GigabitEthernet0/0/0/0", - # "ipv4 address 198.51.100.1 255.255.255.0", - # "interface GigabitEthernet0/0/0/1", - # "ipv4 address 192.0.2.2 255.255.255.0 secondary", - # "ipv4 address 192.0.2.1 255.255.255.0", - # "ipv6 address 2001:db8:0:3::/64" - # ] # Using gathered + # Before state: # ------------ # @@ -645,82 +750,27 @@ Examples # shutdown # dot1q native vlan 40 # ! - - name: Gather IOSXR l3 interfaces as in given arguments + + - name: Gather l3 interfaces facts cisco.iosxr.iosxr_l3_interfaces: config: state: gathered - # Task Output (redacted) - # ----------------------- - # - # "gathered": [ - # { - # "name": "Loopback888" - # }, - # { - # "ipv4": [ - # { - # "address": "192.0.2.1 255.255.255.0" - # }, - # { - # "address": "192.0.2.2 255.255.255.0", - # "secondary": true - # } - # ], - # "ipv6": [ - # { - # "address": "2001:db8:0:3::/64" - # } - # ], - # "name": "GigabitEthernet0/0/0/0" - # }, - # { - # "name": "GigabitEthernet0/0/0/1" - # }, - # { - # "name": "GigabitEthernet0/0/0/3" - # }, - # { - # "name": "GigabitEthernet0/0/0/4" - # } - # ] - # After state: - # ------------ + + # Task Output + # ----------- # - # RP/0/0/CPU0:an-iosxr-02#show running-config interface - # interface Loopback888 - # description test for ansible - # shutdown - # ! - # interface MgmtEth0/0/CPU0/0 - # ipv4 address 10.8.38.70 255.255.255.0 - # ! - # interface GigabitEthernet0/0/0/0 - # description Configured and Merged by Ansible-Network - # mtu 66 - # ipv4 address 192.0.2.1 255.255.255.0 - # ipv4 address 192.0.2.2 255.255.255.0 secondary - # ipv6 address 2001:db8:0:3::/64 - # duplex half - # ! - # interface GigabitEthernet0/0/0/1 - # description Configured and Merged by Ansible-Network - # mtu 66 - # speed 100 - # duplex full - # dot1q native vlan 10 - # l2transport - # l2protocol cdp forward - # l2protocol pvst tunnel - # propagate remote-status - # ! - # ! - # interface GigabitEthernet0/0/0/3 - # shutdown - # ! - # interface GigabitEthernet0/0/0/4 - # shutdown - # dot1q native vlan 40 - # ! + # gathered: + # - name: Loopback888 + # - ipv4: + # - address: 192.0.2.1 255.255.255.0 + # - address: 192.0.2.2 255.255.255.0 + # secondary: true + # ipv6: + # - address: 2001:db8:0:3::/64 + # name: GigabitEthernet0/0/0/0 + # - name: GigabitEthernet0/0/0/1 + # - name: GigabitEthernet0/0/0/3 + # - name: GigabitEthernet0/0/0/4 diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst index 1defd59d6..ca81c7281 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_interfaces_module.rst @@ -297,19 +297,18 @@ Examples - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: actor - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: Bundle-Ether11 - system: - mac: 00c2.4c00.bd15 - - - name: GigabitEthernet0/0/0/1 - period: 200 + - name: Bundle-Ether10 + churn_logging: actor + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: Bundle-Ether11 + system: + mac: 00c2.4c00.bd15 + - name: GigabitEthernet0/0/0/1 + period: 200 state: merged + # # # ----------- @@ -397,13 +396,13 @@ Examples - name: Replace LACP configuration of listed interfaces with provided configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: partner - - - name: GigabitEthernet0/0/0/2 - period: 300 + - name: Bundle-Ether10 + churn_logging: partner + - name: GigabitEthernet0/0/0/2 + period: 300 state: replaced + # # # ----------- @@ -493,15 +492,15 @@ Examples - name: Override all interface LACP configuration with provided configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether12 - churn_logging: both - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: GigabitEthernet0/0/0/1 - period: 300 + - name: Bundle-Ether12 + churn_logging: both + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: GigabitEthernet0/0/0/1 + period: 300 state: overridden + # # # ----------- @@ -586,16 +585,18 @@ Examples # ! # - - name: Deleted LACP configurations of provided interfaces (Note - This won't delete + - name: >- + Deleted LACP configurations of provided interfaces (Note - This won't delete the interface itself) cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - - name: Bundle-Ether11 - - name: GigabitEthernet0/0/0/1 - - name: GigabitEthernet0/0/0/2 + - name: Bundle-Ether10 + - name: Bundle-Ether11 + - name: GigabitEthernet0/0/0/1 + - name: GigabitEthernet0/0/0/2 state: deleted + # # # ----------- @@ -691,19 +692,18 @@ Examples - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: actor - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: Bundle-Ether11 - system: - mac: 00c2.4c00.bd15 - - - name: GigabitEthernet0/0/0/1 - period: 200 + - name: Bundle-Ether10 + churn_logging: actor + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: Bundle-Ether11 + system: + mac: 00c2.4c00.bd15 + - name: GigabitEthernet0/0/0/1 + period: 200 state: rendered + # ------------- # Output # ------------- diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_module.rst index 2da9df33c..fc21657d8 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lacp_module.rst @@ -155,6 +155,7 @@ Parameters <li>parsed</li> <li>rendered</li> <li>gathered</li> + <li>overridden</li> </ul> </td> <td> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lag_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lag_interfaces_module.rst index 8d4cda1a3..8950db1b9 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lag_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lag_interfaces_module.rst @@ -319,26 +319,26 @@ Examples - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/3 - mode: inherit - mode: active - links: - max_active: 5 - min_active: 2 - load_balancing_hash: src-ip - - - name: Bundle-Ether12 - members: - - member: GigabitEthernet0/0/0/2 - mode: passive - - member: GigabitEthernet0/0/0/4 - mode: passive - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/3 + mode: inherit + mode: active + links: + max_active: 5 + min_active: 2 + load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - member: GigabitEthernet0/0/0/2 + mode: passive + - member: GigabitEthernet0/0/0/4 + mode: passive + load_balancing_hash: dst-ip state: merged + # # # ----------- @@ -429,15 +429,14 @@ Examples - name: Replace device configuration of listed Bundles with provided configurations cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether12 - members: - - name: GigabitEthernet0/0/0/2 - mode: passive - - - name: Bundle-Ether11 - members: - - name: GigabitEthernet0/0/0/4 - load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - name: GigabitEthernet0/0/0/2 + mode: passive + - name: Bundle-Ether11 + members: + - name: GigabitEthernet0/0/0/4 + load_balancing_hash: src-ip state: replaced # # @@ -538,15 +537,16 @@ Examples - name: Overrides all device configuration with provided configuration cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/2 - mode: inherit - mode: active - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/2 + mode: inherit + mode: active + load_balancing_hash: dst-ip state: overridden + # # # ------------ @@ -636,15 +636,17 @@ Examples # # - - name: Delete attributes of given bundles and removes member interfaces from them + - name: >- + Delete attributes of given bundles and removes member interfaces from them (Note - This won't delete the bundles themselves) cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - - name: Bundle-Ether11 - - name: Bundle-Ether12 + - name: Bundle-Ether10 + - name: Bundle-Ether11 + - name: Bundle-Ether12 state: deleted + # # # ------------ @@ -898,25 +900,24 @@ Examples - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/3 - mode: inherit - mode: active - links: - max_active: 5 - min_active: 2 - load_balancing_hash: src-ip - - - name: Bundle-Ether12 - members: - - member: GigabitEthernet0/0/0/2 - mode: passive - - member: GigabitEthernet0/0/0/4 - mode: passive - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/3 + mode: inherit + mode: active + links: + max_active: 5 + min_active: 2 + load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - member: GigabitEthernet0/0/0/2 + mode: passive + - member: GigabitEthernet0/0/0/4 + mode: passive + load_balancing_hash: dst-ip state: rendered # Output: @@ -949,7 +950,6 @@ Examples # - " bundle id 12 mode passive" # ] # - # diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_global_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_global_module.rst index 9276f931e..e580e6d63 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_global_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_global_module.rst @@ -273,6 +273,7 @@ Parameters <li>parsed</li> <li>gathered</li> <li>rendered</li> + <li>overridden</li> </ul> </td> <td> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst index 3fb795717..70892cf6e 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_lldp_interfaces_module.rst @@ -225,17 +225,17 @@ Examples - name: Merge provided configuration with running configuration cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge - transmit: false - - - name: GigabitEthernet0/0/0/2 - destination: - mac_address: ieee-nearest-bridge - receive: false + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge + transmit: false + - name: GigabitEthernet0/0/0/2 + destination: + mac_address: ieee-nearest-bridge + receive: false state: merged + # # # ------------------------ @@ -347,15 +347,17 @@ Examples # # - - name: Replace existing LLDP configurations of specified interfaces with provided + - name: >- + Replace existing LLDP configurations of specified interfaces with provided configuration cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge state: replaced + # # # ------------------------ @@ -471,13 +473,16 @@ Examples # # - - name: Override the LLDP configurations of all the interfaces with provided configurations + - name: >- + Override the LLDP configurations of all the interfaces with provided + configurations cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - transmit: false + - name: GigabitEthernet0/0/0/1 + transmit: false state: overridden + # # # ------------------------ @@ -743,17 +748,15 @@ Examples - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge - transmit: false - - - name: GigabitEthernet0/0/0/2 - destination: - mac_address: ieee-nearest-bridge - receive: false + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge + transmit: false + - name: GigabitEthernet0/0/0/2 + destination: + mac_address: ieee-nearest-bridge + receive: false state: rendered - # ------------------------ # Module Execution Result # ------------------------ diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_global_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_global_module.rst index 872434004..c0dd4be33 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_global_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_global_module.rst @@ -1764,56 +1764,56 @@ Examples .. code-block:: yaml # Using merged - #----------------- + # ----------------- # Before state - #RP/0/0/CPU0:10#show running-config logging - #Thu Feb 4 09:38:36.245 UTC - #% No such configuration item(s) - #RP/0/0/CPU0:10# + # RP/0/0/CPU0:10#show running-config logging + # Thu Feb 4 09:38:36.245 UTC + # % No such configuration item(s) + # RP/0/0/CPU0:10# # # - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_logging_global: - config: - buffered: - size: 2097152 - severity: warnings - correlator: - buffer_size: 1024 - events: - display_location: True - files: - - maxfilesize: '1024' - name: test - path: test - severity: info - hostnameprefix: test - hosts: - - host: 1.1.1.1 - port: default - severity: critical - vrf: default - ipv4: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - source_interfaces: - - interface: GigabitEthernet0/0/0/0 - vrf: test - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test2 - vrf: test - trap: - severity: informational - state: merged + config: + buffered: + size: 2097152 + severity: warnings + correlator: + buffer_size: 1024 + events: + display_location: true + files: + - maxfilesize: '1024' + name: test + path: test + severity: info + hostnameprefix: test + hosts: + - host: 1.1.1.1 + port: default + severity: critical + vrf: default + ipv4: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + source_interfaces: + - interface: GigabitEthernet0/0/0/0 + vrf: test + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test2 + vrf: test + trap: + severity: informational + state: merged # # # After state: - #------------------------------------------- - #RP/0/0/CPU0:10#show running-config logging + # ------------------------------------------- + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -1832,8 +1832,8 @@ Examples # logging localfilesize 1024 # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test - #------------------------------------------------ - #Module execution + # ------------------------------------------------ + # Module execution # # "after": { # "buffered": { @@ -1982,8 +1982,8 @@ Examples # Using replaced: # ----------------------------------------------------------- # - #Before state - #RP/0/0/CPU0:10#show running-config logging + # Before state + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -2002,42 +2002,42 @@ Examples # logging localfilesize 1024 # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test - #----------------------------------------------------------- + # ----------------------------------------------------------- # - name: Replace BGP configuration with provided configuration cisco.iosxr.iosxr_logging_global: - state: replaced - config: - buffered: - severity: errors - correlator: - buffer_size: 1024 - files: - - maxfilesize: '1024' - name: test - path: test1 - severity: info - hostnameprefix: test1 - hosts: - - host: 1.1.1.3 - port: default - severity: critical - vrf: default - ipv6: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test - vrf: test - trap: - severity: critical + state: replaced + config: + buffered: + severity: errors + correlator: + buffer_size: 1024 + files: + - maxfilesize: '1024' + name: test + path: test1 + severity: info + hostnameprefix: test1 + hosts: + - host: 1.1.1.3 + port: default + severity: critical + vrf: default + ipv6: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test + vrf: test + trap: + severity: critical # # After state: - #RP/0/0/CPU0:10#show running-config logging + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:31:51.709 UTC # logging tls-server test # vrf test @@ -2053,7 +2053,7 @@ Examples # logging correlator buffer-size 1024 # logging localfilesize 1024 # logging hostnameprefix test1 - #----------------------------------------------------------------- + # ----------------------------------------------------------------- # # Module Execution: # "after": { @@ -2173,7 +2173,7 @@ Examples # Using deleted: # ----------------------------------------------------------- # Before state: - #RP/0/0/CPU0:10#show running-config logging + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -2193,15 +2193,15 @@ Examples # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test # - #----------------------------------------------------------- + # ----------------------------------------------------------- - name: Delete given logging_global configuration cisco.iosxr.iosxr_logging_global: - state: deleted + state: deleted # # After state: - #RP/0/0/CPU0:10#show running-config + # RP/0/0/CPU0:10#show running-config # - #------------------------------------------------------------- + # ------------------------------------------------------------- # Module Execution: # # "after": {}, @@ -2287,7 +2287,7 @@ Examples # using gathered: # ------------------------------------------------------------ # Before state: - #RP/0/0/CPU0:10#show running-config logging + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -2310,9 +2310,9 @@ Examples # - name: Gather iosxr_logging_global facts using gathered state cisco.iosxr.iosxr_logging_global: - state: gathered + state: gathered # - #------------------------------------------------------------- + # ------------------------------------------------------------- # Module Execution: # # "changed": false, @@ -2379,7 +2379,7 @@ Examples # # # Using parsed: - #--------------------------------------------------------------- + # --------------------------------------------------------------- # # parsed.cfg # @@ -2404,9 +2404,9 @@ Examples # - name: Parse externally provided Logging global config to agnostic model cisco.iosxr.iosxr_logging_global: - running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" - state: parsed - #---------------------------------------------------------------- + running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" + state: parsed + # ---------------------------------------------------------------- # Module execution: # "changed": false, # "parsed": { @@ -2466,44 +2466,46 @@ Examples # # Using rendered: # ---------------------------------------------------------------------------- - - name: Render platform specific configuration lines with state rendered (without connecting to the device) + - name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_logging_global: - state: rendered - config: - buffered: - size: 2097152 - severity: warnings - correlator: - buffer_size: 1024 - events: - display_location: True - files: - - maxfilesize: '1024' - name: test - path: test - severity: info - hostnameprefix: test - hosts: - - host: 1.1.1.1 - port: default - severity: critical - vrf: default - ipv4: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - source_interfaces: - - interface: GigabitEthernet0/0/0/0 - vrf: test - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test2 - vrf: test - trap: - severity: informational - #---------------------------------------------------------------- + state: rendered + config: + buffered: + size: 2097152 + severity: warnings + correlator: + buffer_size: 1024 + events: + display_location: true + files: + - maxfilesize: '1024' + name: test + path: test + severity: info + hostnameprefix: test + hosts: + - host: 1.1.1.1 + port: default + severity: critical + vrf: default + ipv4: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + source_interfaces: + - interface: GigabitEthernet0/0/0/0 + vrf: test + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test2 + vrf: test + trap: + severity: informational + # ---------------------------------------------------------------- # Module Execution: # "rendered": [ # "logging buffered errors", @@ -2526,7 +2528,7 @@ Examples # Using overridden: # --------------------------------------------------------------------------------- # Before state: - #RP/0/0/CPU0:10#show running-config logging + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -2546,42 +2548,42 @@ Examples # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test # - #----------------------------------------------------------- + # ----------------------------------------------------------- # - name: Overridde logging global configuration with provided configuration cisco.iosxr.iosxr_logging_global: - state: overridden - config: - buffered: - severity: errors - correlator: - buffer_size: 1024 - files: - - maxfilesize: '1024' - name: test - path: test1 - severity: info - hostnameprefix: test1 - hosts: - - host: 1.1.1.3 - port: default - severity: critical - vrf: default - ipv6: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test - vrf: test - trap: - severity: critical + state: overridden + config: + buffered: + severity: errors + correlator: + buffer_size: 1024 + files: + - maxfilesize: '1024' + name: test + path: test1 + severity: info + hostnameprefix: test1 + hosts: + - host: 1.1.1.3 + port: default + severity: critical + vrf: default + ipv6: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test + vrf: test + trap: + severity: critical # # After state: - #RP/0/0/CPU0:10#show running-config logging + # RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:31:51.709 UTC # logging tls-server test # vrf test @@ -2597,7 +2599,7 @@ Examples # logging correlator buffer-size 1024 # logging localfilesize 1024 # logging hostnameprefix test1 - #----------------------------------------------------------------- + # ----------------------------------------------------------------- # # Module Execution: # "after": { diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_module.rst index 58e73d977..c75f0dc7d 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_logging_module.rst @@ -457,18 +457,18 @@ Examples - name: Configure logging using aggregate cisco.iosxr.iosxr_logging: aggregate: - - {dest: console, level: warning} - - {dest: buffered, size: 4800000} - - {dest: file, name: file3, size: 2048} - - {dest: host, name: host3, level: critical} + - {dest: console, level: warning} + - {dest: buffered, size: 4800000} + - {dest: file, name: file3, size: 2048} + - {dest: host, name: host3, level: critical} - name: Delete logging using aggregate cisco.iosxr.iosxr_logging: aggregate: - - {dest: console, level: warning} - - {dest: buffered, size: 4800000} - - {dest: file, name: file3, size: 2048} - - {dest: host, name: host3, level: critical} + - {dest: console, level: warning} + - {dest: buffered, size: 4800000} + - {dest: file, name: file3, size: 2048} + - {dest: host, name: host3, level: critical} state: absent diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ntp_global_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ntp_global_module.rst index 7f2fd2969..01800361d 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ntp_global_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ntp_global_module.rst @@ -1647,51 +1647,51 @@ Examples # ------------ - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_ntp_global: - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl1 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/0 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af11 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.1 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/0 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl1 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/0 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af11 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.1 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/0 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # ------------ # "commands": [ @@ -1859,52 +1859,52 @@ Examples # ---------------- - name: Override BGP configuration with provided configuration cisco.iosxr.iosxr_ntp_global: - state: overridden - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl4 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/1 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af12 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.3 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/1 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + state: overridden + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl4 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/1 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af12 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.3 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/1 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # --------------- # "commands": [ @@ -1990,52 +1990,52 @@ Examples # ---------------- - name: Replaced BGP configuration with provided configuration cisco.iosxr.iosxr_ntp_global: - state: replaced - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl4 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/1 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af12 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.3 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/1 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + state: replaced + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl4 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/1 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af12 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.3 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/1 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # --------------- # "commands": [ @@ -2196,7 +2196,9 @@ Examples # Using state: rendered # Rendered play: # -------------- - - name: Render platform specific configuration lines with state rendered (without connecting to the device) + - name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_ntp_global: state: rendered config: diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst index 66b1094eb..a98178d93 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospf_interfaces_module.rst @@ -2394,7 +2394,7 @@ Examples address_family: - afi: ipv4 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.3 cost: 20 @@ -2403,7 +2403,7 @@ Examples keychain: cisco - afi: ipv6 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.2 cost: 30 @@ -2411,76 +2411,42 @@ Examples # # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": [] + # Task Output: + # ------------ # - # "commands": [ - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco", - # "router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30" - # ] + # before: [] # - # "after": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "cisco" - # } - # }, - # "cost": 20, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.2" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] + # commands: + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco + # - router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30 # + # after: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # ------------ - # After state + # After state: # ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:00:57.217 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! - # router ospf LAB1 - # area 0.0.0.1 - # ! - # area 0.0.0.3 - # ! - # ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -2489,30 +2455,22 @@ Examples # ! # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! + # ! # ! # Using replaced # - # ------------ - # Before state - # ------------ + # Before state: + # ------------- # # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:00:57.217 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! - # router ospf LAB1 - # area 0.0.0.1 - # ! - # area 0.0.0.3 - # ! - # ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -2521,7 +2479,12 @@ Examples # ! # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! + # ! # ! - name: Replace OSPF interfaces configuration @@ -2532,7 +2495,7 @@ Examples address_family: - afi: ipv4 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.3 cost: 30 @@ -2541,130 +2504,84 @@ Examples keychain: ciscoiosxr - afi: ipv6 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.2 cost: 30 state: replaced - - # # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "cisco" - # } - # }, - # "cost": 20, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.2" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] + # Task Output: + # ------------ # - # "commands": [ - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 30", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain ciscoiosxr" - # ] + # before: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # "after": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "ciscoiosxr" - # } - # }, - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.2" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] + # commands: + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 30 + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain ciscoiosxr # + # after: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: ciscoiosxr + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:10:39.827 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! - # router ospf LAB1 - # area 0.0.0.1 - # ! - # area 0.0.0.3 - # ! - # ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 # cost 30 # authentication message-digest keychain ciscoiosxr # ! + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! # ! # ! - # router ospf ipv4 - # ! + # Using overridden + # + # Before state + # ------------ + # - name: Override existing OSPF interfaces configuration cisco.iosxr.iosxr_ospf_interfaces: config: @@ -2673,7 +2590,7 @@ Examples address_family: - afi: ipv4 processes: - - process_id: "LAB1" + - process_id: LAB1 area: area_id: 0.0.0.3 cost: 10 @@ -2684,98 +2601,56 @@ Examples # # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "ciscoiosxr" - # } - # }, - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.2" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] + # Task Output: + # ------------ # - # "commands": [ - # "no router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0", - # "no router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0", - # "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 cost 10", - # "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest", - # "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest keychain iosxr" - # ] + # before: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: ciscoiosxr + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # "after": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "iosxr" - # } - # }, - # "cost": 10, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB1" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/1", - # "type": "gigabitethernet" - # } - # ] + # commands: + # - no router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 + # - no router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 + # - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 cost 10 + # - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest + # - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest keychain iosxr # + # after: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: iosxr + # cost: 10 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB1 + # name: GigabitEthernet0/0/0/1 + # type: gigabitethernet # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:28:15.025 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! # router ospf LAB1 - # area 0.0.0.1 - # ! # area 0.0.0.3 # interface GigabitEthernet0/0/0/1 # cost 10 @@ -2787,27 +2662,20 @@ Examples # area 0.0.0.3 # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # ! # ! # Using deleted # - # ------------ - # Before state - # ------------ + # Before state: + # ------------- # # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:28:15.025 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! # router ospf LAB1 - # area 0.0.0.1 - # ! # area 0.0.0.3 # interface GigabitEthernet0/0/0/1 # cost 10 @@ -2817,9 +2685,18 @@ Examples # ! # router ospf LAB3 # area 0.0.0.3 + # interface GigabitEthernet0/0/0/0 + # cost 20 + # authentication message-digest keychain cisco + # ! # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! + # ! # ! - name: Deleted existing OSPF interfaces from the device @@ -2830,70 +2707,91 @@ Examples state: deleted # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "iosxr" - # } - # }, - # "cost": 10, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB1" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/1", - # "type": "gigabitethernet" - # } - # ], - # - # "commands": [ - # "no router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1" - # ] + # before: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: iosxr + # cost: 10 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB1 + # name: GigabitEthernet0/0/0/1 + # type: gigabitethernet + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # "after": [] + # commands: + # - no router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1] # + # after: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:34:38.319 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! # router ospf LAB1 - # area 0.0.0.1 - # ! # area 0.0.0.3 # ! # ! # router ospf LAB3 # area 0.0.0.3 + # interface GigabitEthernet0/0/0/0 + # cost 20 + # authentication message-digest keychain cisco + # ! # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! + # ! # ! # Using parsed + # # parsed.cfg # ------------ # router ospf LAB @@ -2918,46 +2816,30 @@ Examples # ! # router ospf ipv4 # ! - - name: Parsed the device configuration to get output commands + - name: Parsed running config and display structured facts. cisco.iosxr.iosxr_ospf_interfaces: running_config: "{{ lookup('file', './parsed.cfg') }}" state: parsed # + # Task Output: + # ------------ # - # ------------------------- - # Module Execution Result - # ------------------------- - # - # - # "parsed": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "cisco" - # } - # }, - # "cost": 20, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] - # + # parsed: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet + # Using rendered # - # - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospf_interfaces: config: @@ -2966,35 +2848,30 @@ Examples address_family: - afi: ipv4 processes: - - process_id: "LAB3" - area: - area_id: 0.0.0.3 + - process_id: LAB3 + area: + area_id: 0.0.0.3 cost: 20 authentication: message_digest: keychain: cisco - afi: ipv6 processes: - - process_id: "LAB3" - area: - area_id: 0.0.0.2 + - process_id: LAB3 + area: + area_id: 0.0.0.2 cost: 30 state: rendered # + # Task Output: + # ------------ # - # ------------------------- - # Module Execution Result - # ------------------------- - # - # - # "rendered": [ - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", - # "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco", - # "router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30" - # ] - + # rendered: + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest + # - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco + # - router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30 # Using gathered # @@ -3003,18 +2880,6 @@ Examples # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:50:38.743 UTC - # router ospf LAB - # area 0.0.0.0 - # ! - # area 0.0.0.9 - # ! - # ! - # router ospf LAB1 - # area 0.0.0.1 - # ! - # area 0.0.0.3 - # ! - # ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -3023,7 +2888,12 @@ Examples # ! # ! # ! - # router ospf ipv4 + # router ospfv3 LAB3 + # area 0.0.0.2 + # interface GigabitEthernet0/0/0/0 + # cost 30 + # ! + # ! # ! @@ -3031,51 +2901,149 @@ Examples cisco.iosxr.iosxr_ospf_interfaces: state: gathered # + # Task Output: + # ------------ # - # ------------------------- - # Module Execution Result - # ------------------------- - # - # "gathered": [ - # { - # "address_family": [ - # { - # "afi": "ipv4", - # "authentication": { - # "message_digest": { - # "keychain": "cisco" - # } - # }, - # "cost": 20, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.3" - # }, - # "process_id": "LAB3" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "cost": 30, - # "processes": [ - # { - # "area": { - # "area_id": "0.0.0.2" - # }, - # "process_id": "LAB3" - # } - # ] - # } - # ], - # "name": "GigabitEthernet0/0/0/0", - # "type": "gigabitethernet" - # } - # ] - # + # gathered: + # - address_family: + # - afi: ipv4 + # authentication: + # message_digest: + # keychain: cisco + # cost: 20 + # processes: + # - area: + # area_id: 0.0.0.3 + # process_id: LAB3 + # - afi: ipv6 + # cost: 30 + # processes: + # - area: + # area_id: 0.0.0.2 + # process_id: LAB3 + # name: GigabitEthernet0/0/0/0 + # type: gigabitethernet + + + +Return Values +------------- +Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module: +.. raw:: html + <table border=0 cellpadding=0 class="documentation-table"> + <tr> + <th colspan="1">Key</th> + <th>Returned</th> + <th width="100%">Description</th> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>after</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when changed</td> + <td> + <div>The resulting configuration model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>before</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>always</td> + <td> + <div>The configuration prior to the model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>commands</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>always</td> + <td> + <div>The set of commands pushed to the remote device.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20', 'router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest']</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20']</div> + </td> + </tr> + </table> + <br/><br/> Status diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv2_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv2_module.rst index 00ff8148f..fe61bd4f6 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv2_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv2_module.rst @@ -5583,173 +5583,132 @@ Examples cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: '27' - areas: - - area_id: '10' - hello_interval: 2 + - process_id: '27' + areas: + - area_id: '10' + hello_interval: 2 + authentication: + keychain: ansi11393 + - process_id: '26' + adjacency_stagger: + max_adjacency: 20 + min_adjacency: 10 + - process_id: '10' authentication: - keychain: ansi11393 - - process_id: '26' - adjacency_stagger: - max_adjacency: 20 - min_adjacency: 10 - - process_id: '10' - authentication: - keychain: ansible_test1102 - areas: - - area_id: '11' - default_cost: 5 - cost: 11 - - area_id: 22 - default_cost: 6 - - process_id: '30' - areas: - - area_id: 11 - default_cost: 5 - - area_id: 22 - default_cost: 6 - - cost: 2 - default_metric: 10 - transmit_delay: 2 - hello_interval: 1 - dead_interval: 2 - retransmit_interval: 2 - weight: 2 - packet_size: 577 - priority: 1 - router_id: 2.2.2.2 - demand_circuit: enable - passive: disable - summary_in: enable - flood_reduction: disable - mtu_ignore: enable - external_out: disable + keychain: ansible_test1102 + areas: + - area_id: '11' + default_cost: 5 + cost: 11 + - area_id: 22 + default_cost: 6 + - process_id: '30' + areas: + - area_id: 11 + default_cost: 5 + - area_id: 22 + default_cost: 6 + cost: 2 + default_metric: 10 + transmit_delay: 2 + hello_interval: 1 + dead_interval: 2 + retransmit_interval: 2 + weight: 2 + packet_size: 577 + priority: 1 + router_id: 2.2.2.2 + demand_circuit: enable + passive: disable + summary_in: enable + flood_reduction: disable + mtu_ignore: enable + external_out: disable state: merged + # Task Output: + # ------------ # + # before: {} # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": {} - # - # "commands": [ - # "router ospf 30", - # "cost 2", - # "weight 2", - # "passive disable", - # "priority 1", - # "flood-reduction disable", - # "default-metric 10", - # "router-id 2.2.2.2", - # "demand-circuit enable", - # "packet-size 577", - # "transmit-delay 2", - # "summary-in enable", - # "external-out disable", - # "dead-interval 2", - # "hello-interval 1", - # "retransmit-interval 2", - # "mtu-ignore enable", - # "area 11 default-cost 5", - # "area 22 default-cost 6", - # "router ospf 26", - # "adjacency stagger 10 20", - # "authentication message-digest keychain ansible1101pass", - # "router ospf 27", - # "area 10 authentication keychain ansi11393", - # "area 10 hello-interval 2", - # "router ospf 10", - # "authentication keychain ansible_test1102", - # "area 11 default-cost 5", - # "area 11 cost 11", - # "area 22 default-cost 6" - # ] - # - # "after": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } + # commands: + # - router ospf 30 + # - cost 2 + # - weight 2 + # - passive disable + # - priority 1 + # - flood-reduction disable + # - default-metric 10 + # - router-id 2.2.2.2 + # - demand-circuit enable + # - packet-size 577 + # - transmit-delay 2 + # - summary-in enable + # - external-out disable + # - dead-interval 2 + # - hello-interval 1 + # - retransmit-interval 2 + # - mtu-ignore enable + # - area 11 default-cost 5 + # - area 22 default-cost 6 + # - router ospf 26 + # - adjacency stagger 10 20 + # - router ospf 10 + # - authentication keychain ansible_test1102 + # - area 11 default-cost 5 + # - area 11 cost 11 + # - area 22 default-cost 6 + # - router ospf 27 + # - area 10 authentication keychain ansi11393 + # - area 10 hello-interval 2 # + # after: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # - # ------------ - # After state + # After state: # ------------ # - # RP/0/RP0/CPU0:anton#show running-config router ospf - # Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 @@ -5761,14 +5720,13 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 - # authentication keychain ansi11393 + # authentication keychain ansi11393 # hello-interval 2 - # ! + # ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -5794,14 +5752,11 @@ Examples # default-cost 6 # ! # ! - # - # Using replaced # - # ------------ - # Before state - # ------------ + # Before state: + # ------------- # # # RP/0/RP0/CPU0:anton#show running-config router ospf @@ -5817,14 +5772,13 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 - # authentication keychain ansi11393 + # authentication keychain ansi11393 # hello-interval 2 - # ! + # ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -5851,199 +5805,128 @@ Examples # ! # ! # - - - name: Replace OSPFv2 routes configurations from the device + - name: Replace running OSPFv2 routes configurations with provided config. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + - area_id: 20 + cost: 2 + default_cost: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 state: replaced + # Task Output: + # ------------ # + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } - # - # "commands": [ - # "router ospf 27", - # "no area 10 authentication keychain ansi11393", - # "area 20 authentication keychain ansi11393", - # "area 20 default-cost 2", - # "area 20 cost 2" - # ] - # - # "after": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } + # commands: + # - router ospf 27 + # - no area 10 authentication keychain ansi11393 + # - area 20 authentication keychain ansi11393 + # - area 20 default-cost 2 + # - area 20 cost 2 # + # after: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # - area_id: '20' + # authentication: + # keychain: ansi11393 + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/RP0/CPU0:anton(config)#do show running-config router ospf # Thu Jun 11 16:40:31.038 UTC @@ -6058,7 +5941,6 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 @@ -6095,15 +5977,11 @@ Examples # default-cost 6 # ! # ! - # - # Using overridden # - # ------------ - # Before state - # ------------ - # + # Before state: + # ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC @@ -6118,14 +5996,17 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 - # authentication keychain ansi11393 # hello-interval 2 - # ! + # ! + # area 20 + # cost 2 + # authentication keychain ansi11393 + # default-cost 2 + # ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -6151,195 +6032,141 @@ Examples # default-cost 6 # ! # ! - # - - name: Override existing OSPFv2 configurations from the device + - name: Override existing OSPFv2 configurations with provided config. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - keychain: ansi11393 - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + authentication: + keychain: ansi11393 + - area_id: 20 + cost: 2 + default_cost: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 state: overridden + # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } - # - # "commands": [ - # "router ospf 10", - # "no authentication keychain ansible_test1102", - # "no area 11 default-cost 5", - # "no area 11 cost 11", - # "no area 22 default-cost 6", - # "router ospf 30", - # "no cost 2", - # "no weight 2", - # "no passive disable", - # "no priority 1", - # "no flood-reduction disable", - # "no default-metric 10", - # "no router-id 2.2.2.2", - # "no demand-circuit enable", - # "no packet-size 577", - # "no transmit-delay 2", - # "no summary-in enable", - # "no external-out disable", - # "no dead-interval 2", - # "no hello-interval 1", - # "no retransmit-interval 2", - # "no mtu-ignore enable", - # "no area 11 default-cost 5", - # "no area 22 default-cost 6", - # "router ospf 27", - # "area 20 authentication keychain ansi11393", - # "area 20 default-cost 2", - # "area 20 cost 2" - # ] + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # - area_id: '20' + # authentication: + # keychain: ansi11393 + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 + # - # "after": { - # "processes": [ - # { - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "process_id": "30" - # } - # ] - # } + # commands: + # - router ospf 10 + # - no authentication keychain ansible_test1102 + # - no area 11 default-cost 5 + # - no area 11 cost 11 + # - no area 22 default-cost 6 + # - router ospf 30 + # - no cost 2 + # - no weight 2 + # - no passive disable + # - no priority 1 + # - no flood-reduction disable + # - no default-metric 10 + # - no router-id 2.2.2.2 + # - no demand-circuit enable + # - no packet-size 577 + # - no transmit-delay 2 + # - no summary-in enable + # - no external-out disable + # - no dead-interval 2 + # - no hello-interval 1 + # - no retransmit-interval 2 + # - no mtu-ignore enable + # - no area 11 default-cost 5 + # - no area 22 default-cost 6 + # - router ospf 27 + # - area 10 authentication keychain ansi11393 # + # after: + # processes: + # - process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # - area_id: '20' + # authentication: + # keychain: ansi11393 + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - process_id: '30' # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:50:36.332 UTC # router ospf 10 + # area 11 + # ! + # area 22 + # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 @@ -6354,16 +6181,17 @@ Examples # ! # ! # router ospf 30 + # area 11 + # ! + # area 22 + # ! # ! # - # Using deleted # - # ------------ - # Before state - # ------------ - # + # Before state: + # ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC @@ -6378,14 +6206,18 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 - # authentication keychain ansi11393 + # authentication keychain ansi11393 # hello-interval 2 - # ! + # ! + # area 20 + # cost 2 + # authentication keychain ansi11393 + # default-cost 2 + # ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -6411,163 +6243,136 @@ Examples # default-cost 6 # ! # ! - # - - name: Deleted existing OSPFv2 configurations from the device + - name: Deleted provided ospfv2 processes. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: '10' - - process_id: '26' - - process_id: '27' - - process_id: '30' + - process_id: '10' + - process_id: '26' + - process_id: '27' + - process_id: '30' state: deleted + # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # }, - # - # "commands": [ - # "router ospf 10", - # "no authentication keychain ansible_test1102", - # "no area 11 default-cost 5", - # "no area 11 cost 11", - # "no area 22 default-cost 6", - # "router ospf 26", - # "no adjacency stagger 10 20", - # "no authentication message-digest keychain ansible1101pass", - # "router ospf 27", - # "no area 10 authentication keychain ansi11393", - # "no area 10 hello-interval 2", - # "router ospf 30", - # "no cost 2", - # "no weight 2", - # "no passive disable", - # "no priority 1", - # "no flood-reduction disable", - # "no default-metric 10", - # "no router-id 2.2.2.2", - # "no demand-circuit enable", - # "no packet-size 577", - # "no transmit-delay 2", - # "no summary-in enable", - # "no external-out disable", - # "no dead-interval 2", - # "no hello-interval 1", - # "no retransmit-interval 2", - # "no mtu-ignore enable", - # "no area 11 default-cost 5", - # "no area 22 default-cost 6" - # ] - # - # "after": { - # "processes": [ - # { - # "process_id": "10" - # }, - # { - # "process_id": "26" - # }, - # { - # "process_id": "27" - # }, - # { - # "process_id": "30" - # } - # ] - # } + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # - area_id: '20' + # authentication: + # keychain: ansi11393 + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # + # commands: + # - router ospf 10 + # - no authentication keychain ansible_test1102 + # - no area 11 default-cost 5 + # - no area 11 cost 11 + # - no area 22 default-cost 6 + # - router ospf 26 + # - no adjacency stagger 10 20 + # - router ospf 27 + # - no area 10 authentication keychain ansi11393 + # - no area 10 hello-interval 2 + # - no area 20 authentication keychain ansi11393 + # - no area 20 default-cost 2 + # - no area 20 cost 2 + # - router ospf 30 + # - no cost 2 + # - no weight 2 + # - no passive disable + # - no priority 1 + # - no flood-reduction disable + # - no default-metric 10 + # - no router-id 2.2.2.2 + # - no demand-circuit enable + # - no packet-size 577 + # - no transmit-delay 2 + # - no summary-in enable + # - no external-out disable + # - no dead-interval 2 + # - no hello-interval 1 + # - no retransmit-interval 2 + # - no mtu-ignore enable + # - no area 11 default-cost 5 + # - no area 22 default-cost 6 # - # ----------- - # After state - # ----------- + # after: + # processes: + # - process_id: '10' + # - process_id: '26' + # - process_id: '27' + # - process_id: '30' + + # After state: + # ------------ # # RP/0/RP0/CPU0:anton(config)#show running-config router ospf # Thu Jun 11 17:07:34.218 UTC # router ospf 10 + # area 11 + # ! + # area 22 + # ! # ! # router ospf 26 # ! # router ospf 27 + # area 10 + # ! + # area 20 + # ! # ! # router ospf 30 + # area 11 + # ! + # area 22 + # ! # ! @@ -6619,184 +6424,146 @@ Examples # default-cost 6 # ! # ! + # - name: Parsed the device configuration to get output commands cisco.iosxr.iosxr_ospfv2: running_config: "{{ lookup('file', './parsed.cfg') }}" state: parsed # + # Task Output: + # ------------ # - # ------------------------- - # Module Execution Result - # ------------------------- - # - # - # "parsed": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } - - + # parsed: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # authentication: + # message_digest: + # keychain: ansible1101pass + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # Using rendered # - # - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 + - process_id: 10 authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 - - process_id: 10 - authentication: - keychain: ansible_test1102 - areas: - - area_id: 11 - default_cost: 5 - cost: 11 - - area_id: 22 - default_cost: 6 - - process_id: 30 - areas: - - area_id: 11 - default_cost: 5 - - area_id: 22 - default_cost: 6 - - cost: 2 - default_metric: 10 - transmit_delay: 2 - hello_interval: 1 - dead_interval: 2 - retransmit_interval: 2 - weight: 2 - packet_size: 577 - priority: 1 - router_id: 2.2.2.2 - demand_circuit: enable - passive: disable - summary_in: enable - flood_reduction: disable - mtu_ignore: enable - external_out: disable + keychain: ansible_test1102 + areas: + - area_id: 11 + default_cost: 5 + cost: 11 + - area_id: 22 + default_cost: 6 + - process_id: 30 + areas: + - area_id: 11 + default_cost: 5 + - area_id: 22 + default_cost: 6 + cost: 2 + default_metric: 10 + transmit_delay: 2 + hello_interval: 1 + dead_interval: 2 + retransmit_interval: 2 + weight: 2 + packet_size: 577 + priority: 1 + router_id: 2.2.2.2 + demand_circuit: enable + passive: disable + summary_in: enable + flood_reduction: disable + mtu_ignore: enable + external_out: disable state: rendered + # + # Task Output: + # ------------ # - # ------------------------- - # Module Execution Result - # ------------------------- - # - # - # "rendered": [ - # "router ospf 27", - # "area 10 authentication keychain ansi11393", - # "area 10 hello-interval 2", - # "router ospf 26", - # "adjacency stagger 10 20", - # "authentication message-digest keychain ansible1101pass", - # "router ospf 10", - # "authentication keychain ansible_test1102", - # "area 11 default-cost 5", - # "area 11 cost 11", - # "area 22 default-cost 6", - # "router ospf 30", - # "cost 2", - # "weight 2", - # "passive disable", - # "priority 1", - # "flood-reduction disable", - # "default-metric 10", - # "router-id 2.2.2.2", - # "demand-circuit enable", - # "packet-size 577", - # "transmit-delay 2", - # "summary-in enable", - # "external-out disable", - # "dead-interval 2", - # "hello-interval 1", - # "retransmit-interval 2", - # "mtu-ignore enable", - # "area 11 default-cost 5", - # "area 22 default-cost 6" - # ] + # rendered: + # - router ospf 27 + # - area 10 authentication keychain ansi11393 + # - area 10 hello-interval 2 + # - router ospf 26 + # - adjacency stagger 10 20 + # - router ospf 10 + # - authentication keychain ansible_test1102 + # - area 11 default-cost 5 + # - area 11 cost 11 + # - area 22 default-cost 6 + # - router ospf 30 + # - cost 2 + # - weight 2 + # - passive disable + # - priority 1 + # - flood-reduction disable + # - default-metric 10 + # - router-id 2.2.2.2 + # - demand-circuit enable + # - packet-size 577 + # - transmit-delay 2 + # - summary-in enable + # - external-out disable + # - dead-interval 2 + # - hello-interval 1 + # - retransmit-interval 2 + # - mtu-ignore enable + # - area 11 default-cost 5 + # - area 22 default-cost 6 # Using gathered @@ -6817,14 +6584,15 @@ Examples # ! # ! # router ospf 26 - # authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 - # authentication keychain ansi11393 + # authentication keychain ansi11393 # hello-interval 2 - # ! + # ! + # area 20 + # ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -6856,84 +6624,52 @@ Examples state: gathered # # - # ------------------------- - # Module Execution Result - # ------------------------- + # Task Output: + # ------------ # - # "gathered": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "authentication": { - # "keychain": "ansible_test1102" - # }, - # "process_id": "10" - # }, - # { - # "adjacency_stagger": { - # "max_adjacency": 20, - # "min_adjacency": 10 - # }, - # "authentication": { - # "message_digest": { - # "keychain": "ansible1101pass" - # } - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "authentication": { - # "keychain": "ansi11393" - # }, - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": "enable", - # "external_out": "disable", - # "flood_reduction": "disable", - # "hello_interval": 1, - # "mtu_ignore": "enable", - # "packet_size": 577, - # "passive": "disable", - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "summary_in": "enable", - # "transmit_delay": 2, - # "weight": 2 - # } - # ] - # } + # gathered: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # authentication: + # keychain: ansible_test1102 + # process_id: '10' + # - adjacency_stagger: + # max_adjacency: 20 + # min_adjacency: 10 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # keychain: ansi11393 + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: enable + # external_out: disable + # flood_reduction: disable + # hello_interval: 1 + # mtu_ignore: enable + # packet_size: 577 + # passive: disable + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # summary_in: enable + # transmit_delay: 2 + # weight: 2 # # After state: # ------------- @@ -6985,7 +6721,6 @@ Examples # ! # ! # - # @@ -7054,6 +6789,57 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospf 30', "authentication message-digest keychain 'ansible1101pass'"]</div> </td> </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospf 27', 'area 10 authentication keychain ansi11393']</div> + </td> + </tr> </table> <br/><br/> diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv3_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv3_module.rst index d0fa2b049..494562fc5 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv3_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_ospfv3_module.rst @@ -9241,105 +9241,75 @@ Examples retransmit_interval: 2 packet_size: 577 priority: 1 - router_id: '2.2.2.2' + router_id: 2.2.2.2 demand_circuit: true mtu_ignore: true state: merged # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": {} - # - # "commands": [ - # "router ospfv3 10", - # "area 11 default-cost 5", - # "area 11 cost 11", - # "area 22 default-cost 6", - # "router ospfv3 26", - # "authentication disable", - # "router ospfv3 27", - # "area 10 hello-interval 2", - # "router ospfv3 30", - # "cost 2", - # "priority 1", - # "default-metric 10", - # "router-id 2.2.2.2", - # "demand-circuit", - # "packet-size 577", - # "transmit-delay 2", - # "dead-interval 2", - # "hello-interval 1", - # "retransmit-interval 2", - # "mtu-ignore", - # "area 11 default-cost 5", - # "area 22 default-cost 6" - # ] + # before: {} # - # "after": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } + # - router ospfv3 10 + # - area 11 default-cost 5 + # - area 11 cost 11 + # - area 22 default-cost 6 + # - router ospfv3 26 + # - authentication disable + # - router ospfv3 27 + # - area 10 hello-interval 2 + # - router ospfv3 30 + # - cost 2 + # - priority 1 + # - default-metric 10 + # - router-id 2.2.2.2 + # - demand-circuit + # - packet-size 577 + # - transmit-delay 2 + # - dead-interval 2 + # - hello-interval 1 + # - retransmit-interval 2 + # - mtu-ignore + # - area 11 default-cost 5 + # - area 22 default-cost 6 # + # after: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # - # ------------ - # After state + # After state: # ------------ # # RP/0/RP0/CPU0:anton#show running-config router ospfv3 @@ -9359,10 +9329,6 @@ Examples # area 10 # hello-interval 2 # ! - # area 20 - # ! - # area 30 - # ! # ! # router ospfv3 30 # cost 2 @@ -9382,6 +9348,15 @@ Examples # area 22 # default-cost 6 # ! + # ! + + # Using replaced + # + # Before state: + # ------------- + # + # + # RP/0/RP0/CPU0:anton#show running-config router ospf # router ospfv3 10 # area 11 # cost 11 @@ -9398,10 +9373,6 @@ Examples # area 10 # hello-interval 2 # ! - # area 20 - # ! - # area 30 - # ! # ! # router ospfv3 30 # cost 2 @@ -9423,16 +9394,107 @@ Examples # ! # ! + - name: Replace OSPFv3 routes configurations from the device + cisco.iosxr.iosxr_ospfv3: + config: + processes: + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + - area_id: 20 + cost: 2 + default_cost: 2 + - process_id: 26 + authentication: + disable: true + state: replaced - - # Using replaced # - # ------------ - # Before state + # Task Output: # ------------ # + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # - # RP/0/RP0/CPU0:anton#show running-config router ospf + # commands: + # - router ospfv3 27 + # - area 20 default-cost 2 + # - area 20 cost 2 + # + # after: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # - area_id: '20' + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 + # + # + # After state: + # ------------ + # + # RP/0/RP0/CPU0:anton(config)#do show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -9450,8 +9512,8 @@ Examples # hello-interval 2 # ! # area 20 - # ! - # area 30 + # cost 2 + # default-cost 2 # ! # ! # router ospfv3 30 @@ -9472,6 +9534,13 @@ Examples # area 22 # default-cost 6 # ! + # ! + + # Using overridden + # + # Before state: + # ------------- + # # router ospfv3 10 # area 11 # cost 11 @@ -9489,8 +9558,8 @@ Examples # hello-interval 2 # ! # area 20 - # ! - # area 30 + # cost 2 + # default-cost 2 # ! # ! # router ospfv3 30 @@ -9513,7 +9582,7 @@ Examples # ! # ! - - name: Replace OSPFv3 routes configurations from the device + - name: Override existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: processes: @@ -9521,153 +9590,152 @@ Examples areas: - area_id: 10 hello_interval: 2 + authentication: + disable: true - area_id: 20 cost: 2 default_cost: 2 + authentication: + disable: true - process_id: 26 - authentication: - disable: true - state: replaced + areas: + - area_id: 10 + hello_interval: 2 + authentication: + disable: true + state: overridden # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # - area_id: '20' + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # - # "before": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } + # commands: + # - router ospfv3 10 + # - no area 11 default-cost 5 + # - no area 11 cost 11 + # - no area 22 default-cost 6 + # - router ospfv3 30 + # - no cost 2 + # - no priority 1 + # - no default-metric 10 + # - no router-id 2.2.2.2 + # - no demand-circuit + # - no packet-size 577 + # - no transmit-delay 2 + # - no dead-interval 2 + # - no hello-interval 1 + # - no retransmit-interval 2 + # - no mtu-ignore + # - no area 11 default-cost 5 + # - no area 22 default-cost 6 + # - router ospfv3 27 + # - area 10 authentication disable + # - area 20 authentication disable + # - router ospfv3 26 + # - no authentication disable + # - area 10 authentication disable + # - area 10 hello-interval 2 # - # "commands": [ - # "router ospfv3 27", - # "area 20 default-cost 2", - # "area 20 cost 2" - # ] + # after: + # processes: + # - process_id: '10' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # - area_id: '20' + # authentication: + # disable: true + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - process_id: '30' # - # "after": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } + # After state: + # ------------ # + # RP/0/RP0/CPU0:anton#show running-config router ospfv3 + # router ospfv3 10 + # area 11 + # ! + # area 22 + # ! + # ! + # router ospfv3 26 + # area 10 + # authentication disable + # hello-interval 2 + # ! + # ! + # router ospfv3 27 + # area 10 + # authentication disable + # hello-interval 2 + # ! + # area 20 + # cost 2 + # authentication disable + # default-cost 2 + # ! + # ! + # router ospfv3 30 + # area 11 + # ! + # area 22 + # ! + # ! + + # Using deleted + # + # Before state: + # ------------- # - # ----------- - # After state - # ----------- # - # RP/0/RP0/CPU0:anton(config)#do show running-config router ospfv3 + # RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -9679,17 +9747,21 @@ Examples # ! # router ospfv3 26 # authentication disable + # area 10 + # authentication disable + # hello-interval 2 + # ! # ! # router ospfv3 27 # area 10 + # authentication disable # hello-interval 2 # ! # area 20 # cost 2 + # authentication disable # default-cost 2 # ! - # area 30 - # ! # ! # router ospfv3 30 # cost 2 @@ -9711,165 +9783,108 @@ Examples # ! # ! - - - name: Override existing OSPFv3 configurations from the device + - name: Deleted existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - disable: true - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - disable: true - - process_id: 26 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - disable: true - state: overridden + - process_id: '10' + - process_id: '26' + - process_id: '27' + - process_id: '30' + state: deleted + # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } - # - # "commands": [ - # "router ospfv3 10", - # "no area 11 default-cost 5", - # "no area 11 cost 11", - # "no area 22 default-cost 6", - # "router ospfv3 30", - # "no cost 2", - # "no priority 1", - # "no default-metric 10", - # "no router-id 2.2.2.2", - # "no demand-circuit", - # "no packet-size 577", - # "no transmit-delay 2", - # "no dead-interval 2", - # "no hello-interval 1", - # "no retransmit-interval 2", - # "no mtu-ignore", - # "no area 11 default-cost 5", - # "no area 22 default-cost 6", - # "router ospfv3 26", - # "area 10 hello-interval 4" - # ] + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # - area_id: '20' + # authentication: + # disable: true + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # - # "after": { - # "processes": [ - # { - # "process_id": "10" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 4 - # } - # ], - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "process_id": "30" - # } - # ] - # } + # commands: + # - router ospfv3 10 + # - no area 11 default-cost 5 + # - no area 11 cost 11 + # - no area 22 default-cost 6 + # - router ospfv3 26 + # - no authentication disable + # - no area 10 authentication disable + # - no area 10 hello-interval 2 + # - router ospfv3 27 + # - no area 10 authentication disable + # - no area 10 hello-interval 2 + # - no area 20 authentication disable + # - no area 20 default-cost 2 + # - no area 20 cost 2 + # - router ospfv3 30 + # - no cost 2 + # - no priority 1 + # - no default-metric 10 + # - no router-id 2.2.2.2 + # - no demand-circuit + # - no packet-size 577 + # - no transmit-delay 2 + # - no dead-interval 2 + # - no hello-interval 1 + # - no retransmit-interval 2 + # - no mtu-ignore + # - no area 11 default-cost 5 + # - no area 22 default-cost 6 # + # after: + # processes: + # - process_id: '10' + # - process_id: '26' + # - process_id: '27' + # - process_id: '30' # - # ----------- - # After state - # ----------- + # After state: + # ------------ # - # RP/0/RP0/CPU0:anton#show running-config router ospfv3 + # RP/0/RP0/CPU0:anton(config)#show running-config router ospfv3 # router ospfv3 10 # area 11 # ! @@ -9877,20 +9892,13 @@ Examples # ! # ! # router ospfv3 26 - # authentication disable # area 10 - # hello-interval 4 # ! # ! # router ospfv3 27 # area 10 - # hello-interval 2 # ! # area 20 - # cost 2 - # default-cost 2 - # ! - # area 30 # ! # ! # router ospfv3 30 @@ -9900,143 +9908,182 @@ Examples # ! # ! - - # Using deleted # - # ------------ - # Before state - # ------------ + # Before state: + # ------------- # # # RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 + # cost 11 + # default-cost 5 # ! # area 22 + # default-cost 6 # ! # ! # router ospfv3 26 # authentication disable # area 10 - # hello-interval 4 + # authentication disable + # hello-interval 2 # ! # ! # router ospfv3 27 # area 10 + # authentication disable # hello-interval 2 # ! # area 20 # cost 2 + # authentication disable # default-cost 2 # ! - # area 30 - # ! # ! # router ospfv3 30 + # cost 2 + # priority 1 + # mtu-ignore + # packet-size 577 + # dead-interval 2 + # retransmit-interval 2 + # demand-circuit + # hello-interval 1 + # transmit-delay 2 + # router-id 2.2.2.2 + # default-metric 10 # area 11 + # default-cost 5 # ! # area 22 + # default-cost 6 # ! # ! - name: Deleted existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: - processes: - - process_id: '10' - - process_id: '26' - - process_id: '27' - - process_id: '30' state: deleted # + # Task Output: + # ------------ # - # ------------------------ - # Module Execution Result - # ------------------------ - # - # "before": { - # "processes": [ - # { - # "process_id": "10" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 4 - # } - # ], - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # }, - # { - # "area_id": "20", - # "cost": 2, - # "default_cost": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "process_id": "30" - # } - # ] - # }, - # - # "commands": [ - # "router ospfv3 26", - # "no authentication disable", - # "no area 10 hello-interval 4", - # "router ospfv3 27", - # "no area 10 hello-interval 2", - # "no area 20 default-cost 2", - # "no area 20 cost 2" - # ] + # before: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # authentication: + # disable: true + # hello_interval: 2 + # - area_id: '20' + # authentication: + # disable: true + # cost: 2 + # default_cost: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # - # "after": { - # "processes": [ - # { - # "process_id": "10" - # }, - # { - # "process_id": "26" - # }, - # { - # "process_id": "27" - # }, - # { - # "process_id": "30" - # } - # ] - # } + # commands: + # - router ospfv3 10 + # - no area 11 default-cost 5 + # - no area 11 cost 11 + # - no area 22 default-cost 6 + # - router ospfv3 26 + # - no authentication disable + # - no area 10 authentication disable + # - no area 10 hello-interval 2 + # - router ospfv3 27 + # - no area 10 authentication disable + # - no area 10 hello-interval 2 + # - no area 20 authentication disable + # - no area 20 default-cost 2 + # - no area 20 cost 2 + # - router ospfv3 30 + # - no cost 2 + # - no priority 1 + # - no default-metric 10 + # - no router-id 2.2.2.2 + # - no demand-circuit + # - no packet-size 577 + # - no transmit-delay 2 + # - no dead-interval 2 + # - no hello-interval 1 + # - no retransmit-interval 2 + # - no mtu-ignore + # - no area 11 default-cost 5 + # - no area 22 default-cost 6 # + # after: + # processes: + # - process_id: '10' + # - process_id: '26' + # - process_id: '27' + # - process_id: '30' # - # ----------- - # After state - # ----------- + # After state: + # ------------ # # RP/0/RP0/CPU0:anton(config)#show running-config router ospfv3 # router ospfv3 10 + # area 11 + # ! + # area 22 + # ! # ! # router ospfv3 26 + # area 10 + # ! # ! # router ospfv3 27 + # area 10 + # ! + # area 20 + # ! # ! # router ospfv3 30 + # area 11 + # ! + # area 22 + # ! # ! # Using parsed + # # parsed.cfg # ------------ # router ospfv3 10 @@ -10081,72 +10128,45 @@ Examples state: parsed # # - # ------------------------- - # Module Execution Result - # ------------------------- - # + # Task Output: + # ------------ # - # "parsed": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } + # parsed: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # # Using rendered # - # - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospfv3: config: @@ -10186,35 +10206,32 @@ Examples # # - # ------------------------- - # Module Execution Result - # ------------------------- - # + # Task Output: + # ------------ # - # "rendered": [ - # "router ospfv3 27", - # "area 10 hello-interval 2", - # "router ospfv3 26", - # "authentication disable", - # "router ospfv3 10", - # "area 11 default-cost 5", - # "area 11 cost 11", - # "area 22 default-cost 6", - # "router ospfv3 30", - # "cost 2", - # "priority 1", - # "default-metric 10", - # "router-id 2.2.2.2", - # "demand-circuit", - # "packet-size 577", - # "transmit-delay 2", - # "dead-interval 2", - # "hello-interval 1", - # "retransmit-interval 2", - # "mtu-ignore", - # "area 11 default-cost 5", - # "area 22 default-cost 6" - # ] + # rendered: + # - router ospfv3 27 + # - area 10 hello-interval 2 + # - router ospfv3 26 + # - authentication disable + # - router ospfv3 10 + # - area 11 default-cost 5 + # - area 11 cost 11 + # - area 22 default-cost 6 + # - router ospfv3 30 + # - cost 2 + # - priority 1 + # - default-metric 10 + # - router-id 2.2.2.2 + # - demand-circuit + # - packet-size 577 + # - transmit-delay 2 + # - dead-interval 2 + # - hello-interval 1 + # - retransmit-interval 2 + # - mtu-ignore + # - area 11 default-cost 5 + # - area 22 default-cost 6 # Using gathered @@ -10222,7 +10239,7 @@ Examples # Before state: # ------------- # - # RP/0/RP0/CPU0:anton#show running-config router ospf + # RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -10243,8 +10260,6 @@ Examples # ! # area 20 # ! - # area 30 - # ! # ! # router ospfv3 30 # cost 2 @@ -10271,71 +10286,165 @@ Examples state: gathered # # - # ------------------------- - # Module Execution Result - # ------------------------- + # Task Output: + # ------------ # - # "gathered": { - # "processes": [ - # { - # "areas": [ - # { - # "area_id": "11", - # "cost": 11, - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "process_id": "10" - # }, - # { - # "authentication": { - # "disable": true - # }, - # "process_id": "26" - # }, - # { - # "areas": [ - # { - # "area_id": "10", - # "hello_interval": 2 - # } - # ], - # "process_id": "27" - # }, - # { - # "areas": [ - # { - # "area_id": "11", - # "default_cost": 5 - # }, - # { - # "area_id": "22", - # "default_cost": 6 - # } - # ], - # "cost": 2, - # "dead_interval": 2, - # "default_metric": 10, - # "demand_circuit": true, - # "hello_interval": 1, - # "mtu_ignore": true, - # "packet_size": 577, - # "priority": 1, - # "process_id": "30", - # "retransmit_interval": 2, - # "router_id": "2.2.2.2", - # "transmit_delay": 2 - # } - # ] - # } + # gathered: + # processes: + # - areas: + # - area_id: '11' + # cost: 11 + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # process_id: '10' + # - authentication: + # disable: true + # process_id: '26' + # - areas: + # - area_id: '10' + # hello_interval: 2 + # process_id: '27' + # - areas: + # - area_id: '11' + # default_cost: 5 + # - area_id: '22' + # default_cost: 6 + # cost: 2 + # dead_interval: 2 + # default_metric: 10 + # demand_circuit: true + # hello_interval: 1 + # mtu_ignore: true + # packet_size: 577 + # priority: 1 + # process_id: '30' + # retransmit_interval: 2 + # router_id: 2.2.2.2 + # transmit_delay: 2 # +Return Values +------------- +Common return values are documented `here <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#common-return-values>`_, the following are the fields unique to this module: + +.. raw:: html + + <table border=0 cellpadding=0 class="documentation-table"> + <tr> + <th colspan="1">Key</th> + <th>Returned</th> + <th width="100%">Description</th> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>after</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when changed</td> + <td> + <div>The resulting configuration model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>before</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>always</td> + <td> + <div>The configuration prior to the model invocation.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">The configuration returned will always be in the same format + of the parameters above.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>commands</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>always</td> + <td> + <div>The set of commands pushed to the remote device.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospfv3 10', 'area 11 default-cost 5', 'area 11 cost 11', 'area 22 default-cost 6']</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>gathered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when <em>state</em> is <code>gathered</code></td> + <td> + <div>Facts about the network resource gathered from the remote device as structured data.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>parsed</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">dictionary</span> + </div> + </td> + <td>when <em>state</em> is <code>parsed</code></td> + <td> + <div>The device native config provided in <em>running_config</em> option parsed into structured data as per module argspec.</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">This output will always be in the same format as the module argspec.</div> + </td> + </tr> + <tr> + <td colspan="1"> + <div class="ansibleOptionAnchor" id="return-"></div> + <b>rendered</b> + <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a> + <div style="font-size: small"> + <span style="color: purple">list</span> + </div> + </td> + <td>when <em>state</em> is <code>rendered</code></td> + <td> + <div>The provided configuration in the task rendered in device-native format (offline).</div> + <br/> + <div style="font-size: smaller"><b>Sample:</b></div> + <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">['router ospfv3 27', 'area 10 hello-interval 2']</div> + </td> + </tr> + </table> + <br/><br/> + Status ------ diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_prefix_lists_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_prefix_lists_module.rst index 0688d93bf..348b07d0c 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_prefix_lists_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_prefix_lists_module.rst @@ -319,59 +319,108 @@ Examples .. code-block:: yaml # Using merged + + # Before state - #RP/0/0/CPU0:10#show running-config - #Thu Feb 4 09:38:36.245 UTC - #% No such configuration item(s) - #RP/0/0/CPU0:10# + # RP/0/0/CPU0:10#show running-config + # Thu Feb 4 09:38:36.245 UTC + # % No such configuration item(s) + # RP/0/0/CPU0:10# # + + - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_prefix_lists: - state: merged - config: - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: deny - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL_2_REMARK - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_2_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - name: pl2 - entries: - - sequence: 5 - action: remark - description: TEST_PL2_REMARK - - name: pl3 - entries: - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 + state: merged + config: + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: deny + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL_2_REMARK + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_2_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - name: pl2 + entries: + - sequence: 5 + action: remark + description: TEST_PL2_REMARK + - name: pl3 + entries: + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + + # Task Output + # ------------- + # before: [] + # commands: + # - ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48 + # - ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK + # - ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK + # - ipv4 prefix-list pl1 4 permit 10.0.0.0/24 + # - ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK + # - ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0 + # after: + # - afi: ipv6 + # prefix_lists: + # - name: pl_1 + # entries: + # - prefix: 2001:db8:1234::/48 + # action: deny + # sequence: 1 + # - name: pl_2 + # entries: + # - sequence: 2 + # action: remark + # description: TEST_PL_2_REMARK + # - afi: ipv4 + # prefix_lists: + # - name: pl1 + # entries: + # - sequence: 3 + # action: remark + # description: TEST_PL1_2_REMARK + # - sequence: 4 + # action: permit + # prefix: 10.0.0.0/24 + # - name: pl2 + # entries: + # - sequence: 5 + # action: remark + # description: TEST_PL2_REMARK + # - name: pl3 + # entries: + # - sequence: 6 + # action: permit + # prefix: 35.0.0.0/8 + # eq: 0 + - # # After state: - # - #RP/0/0/CPU0:10#show running-config + # ------------ + # RP/0/0/CPU0:10#show running-config # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! # ipv6 prefix-list pl_2 - # 2 remark TEST_PL_2_REMARK + # 2 remark TEST_PL_2_REMAR # ! # ipv4 prefix-list pl1 # 3 remark TEST_PL1_2_REMARK @@ -384,91 +433,13 @@ Examples # 6 permit 35.0.0.0/8 eq 0 # ! - #Module execution - # - # "after": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL_2_REMARK", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # }, - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": "35.0.0.0/8", - # "sequence": 6, - # "eq": 0 - # } - # ], - # "name": "pl3" - # }, - # ] - # } - # ], - # "before": [], - # "changed": true, - # "commands": [ - # "ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48", - # "ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK", - # "ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK", - # "ipv4 prefix-list pl1 4 permit 10.0.0.0/24", - # "ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK" - # "ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0" - # ] - #----------------------------------------------------------------------- + # Using replaced: - # -------------- - # Before state - #RP/0/0/CPU0:10#show running-config + + + # Before state: + # ------------- + # RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -484,33 +455,100 @@ Examples # 5 remark TEST_PL2_REMARK # ! # - # - - name: Replace device configurations of listed prefix lists with provided configurations + + + - name: >- + Replace device configurations of listed prefix lists with provided + configurations register: result - cisco.iosxr.iosxr_prefix_lists: &id001 + cisco.iosxr.iosxr_prefix_lists: config: - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: permit - prefix: 10.0.0.0/24 - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: permit - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL1_2 + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: permit + prefix: 10.0.0.0/24 + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: permit + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL1_2 state: replaced + + + # Task Output + # ------------- + # before: + # - afi: ipv6 + # prefix_lists: + # - entries: + # - action: deny + # prefix: 2001:db8:1234::/48 + # sequence: 1 + # name: pl_1 + # - entries: + # - action: remark + # description: TEST_PL_2_REMARK + # sequence: 2 + # name: pl_2 + # - afi: ipv4 + # prefix_lists: + # - entries: + # - action: remark + # description: TEST_PL1_2_REMARK + # sequence: 3 + # - action: permit + # prefix: 10.0.0.0/24 + # sequence: 4 + # name: pl1 + # - entries: + # - action: remark + # description: TEST_PL2_REMARK + # sequence: 5 + # name: pl2 + # commands: + # - no ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK + # - no ipv4 prefix-list pl1 4 permit 10.0.0.0/24 + # - ipv4 prefix-list pl1 3 permit 10.0.0.0/24 + # - ipv6 prefix-list pl_2 2 remark TEST_PL1_2 + # after: + # - afi: ipv6 + # prefix_lists: + # - entries: + # - action: deny + # prefix: 2001:db8:1234::/48 + # sequence: 1 + # name: pl_1 + # - entries: + # - action: remark + # description: TEST_PL1_2 + # sequence: 2 + # name: pl_2 + # - afi: ipv4 + # prefix_lists: + # - entries: + # - action: permit + # prefix: 10.0.0.0/24 + # sequence: 3 + # name: pl1 + # - entries: + # - action: remark + # description: TEST_PL2_REMARK + # sequence: 5 + # name: pl2 + + # After state: - #RP/0/0/CPU0:10#show running-config + # RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -526,179 +564,14 @@ Examples # # Module Execution: # - # "after": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 3 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # } - # ] - # } - # ], - # "before": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL_2_REMARK", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # } - # ] - # } - # ], - # "changed": true, - # "commands": [ - # "no ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK", - # "no ipv4 prefix-list pl1 4 permit 10.0.0.0/24", - # "ipv4 prefix-list pl1 3 permit 10.0.0.0/24", - # "ipv6 prefix-list pl_2 2 remark TEST_PL1_2" - # ], - # "invocation": { - # "module_args": { - # "config": [ - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "permit", - # "description": null, - # "prefix": "10.0.0.0/24", - # "sequence": 3 - # } - # ], - # "name": "pl1" - # } - # ] - # }, - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "permit", - # "description": null, - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2", - # "prefix": null, - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # } - # ], - # "running_config": null, - # "state": "replaced" - # } - # } - # } - #------------------------------------------------------------------ + + # Using deleted: - # ------------- + + # Before state: - #RP/0/0/CPU0:10#show running-config + # ------------- + # RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -719,99 +592,61 @@ Examples cisco.iosxr.iosxr_prefix_lists: state: deleted + # Task Output + # ------------- + # before: + # - afi: ipv6 + # prefix_lists: + # - name: pl_1 + # entries: + # - prefix: 2001:db8:1234::/48 + # action: deny + # sequence: 1 + # - name: pl_2 + # entries: + # - sequence: 2 + # action: remark + # description: TEST_PL_2_REMARK + # - afi: ipv4 + # prefix_lists: + # - name: pl1 + # entries: + # - sequence: 3 + # action: remark + # description: TEST_PL1_2_REMARK + # - sequence: 4 + # action: permit + # prefix: 10.0.0.0/24 + # - name: pl2 + # entries: + # - sequence: 5 + # action: remark + # description: TEST_PL2_REMARK + # - name: pl3 + # entries: + # - sequence: 6 + # action: permit + # prefix: 35.0.0.0/8 + # eq: 0 + # commands: + # - no ipv6 prefix-list pl_1 + # - no ipv6 prefix-list pl_2 + # - no ipv4 prefix-list pl1 + # - no ipv4 prefix-list pl2 + # - no ipv4 prefix-list pl3 + # after: [] + + # After state: - #RP/0/0/CPU0:10#show running-config - # - # - # Module Execution: - # - # "after": [], - # "before": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 3 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # }, - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": " 35.0.0.0/8", - # "sequence": 6, - # "eq": 0 - # } - # ], - # "name": "pl3" - # }, - # ] - # } - # ], - # "changed": true, - # "commands": [ - # "no ipv6 prefix-list pl_1", - # "no ipv6 prefix-list pl_2", - # "no ipv4 prefix-list pl1", - # "no ipv4 prefix-list pl2" - # "no ipv4 prefix-list pl3" - # ], - # "invocation": { - # "module_args": { - # "config": null, - # "running_config": null, - # "state": "deleted" - # } - # } - # } - #--------------------------------------------------------------------------------- + # RP/0/0/CPU0:10#show running-config # + # using gathered: - # -------------- - # Before state: - #RP/0/0/CPU0:10#show running-config - # + + + # After state: + # ------------ + # RP/0/0/CPU0:10#show running-config # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! @@ -824,91 +659,57 @@ Examples # ! # ipv4 prefix-list pl2 # 5 remark TEST_PL2_REMARK - #! + # ! # ipv4 prefix-list pl3 # 6 permit 35.0.0.0/8 eq 0 - #! + # ! + + - name: Gather ACL interfaces facts using gathered state cisco.iosxr.iosxr_prefix_lists: - state: gathered - # - # Module Execution: - # - # "gathered": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL_2_REMARK", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # }, - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": "35.0.0.0/8", - # "sequence": 6, - # "eq": 0 - # } - # ], - # "name": "pl3" - # }, - # ] - # } - # ], - # "changed": false, - #-------------------------------------------------------------------------- + state: gathered + + # gathered: + # - afi: ipv6 + # prefix_lists: + # - name: pl_1 + # entries: + # - prefix: 2001:db8:1234::/48 + # action: deny + # sequence: 1 + # - name: pl_2 + # entries: + # - sequence: 2 + # action: remark + # description: TEST_PL_2_REMARK + # - afi: ipv4 + # prefix_lists: + # - name: pl1 + # entries: + # - sequence: 3 + # action: remark + # description: TEST_PL1_2_REMARK + # - sequence: 4 + # action: permit + # prefix: 10.0.0.0/24 + # - name: pl2 + # entries: + # - sequence: 5 + # action: remark + # description: TEST_PL2_REMARK + # - name: pl3 + # entries: + # - sequence: 6 + # action: permit + # prefix: 35.0.0.0/8 + # eq: 0 + + # Using parsed: - # -------------- - # + + # parsed.cfg - #------------------------------ + # ------------------------------ # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! @@ -921,129 +722,93 @@ Examples # ! # ipv4 prefix-list pl2 # 5 remark TEST_PL2_REMARK - #! - # ipv4 prefix-list pl3 - # 6 permit 35.0.0.0/8 eq 0 - # - # + + - name: Parse externally provided Prefix_lists config to agnostic model cisco.iosxr.iosxr_prefix_lists: - running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" - state: parsed - # - # Module execution: - #"parsed": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL_2_REMARK", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # }, - # { - # "entries": [ - # { - # "action": "permit", - # "prefix": "35.0.0.0/8", - # "sequence": 6, - # "eq": 0 - # } - # ], - # "name": "pl3" - # }, - # ] - # } - # ] - # - #---------------------------------------------------------------------------- + running_config: '{{ lookup(''file'', ''./fixtures/parsed.cfg'') }}' + state: parsed + + + # Task Output + # ------------- + # parsed: + # - afi: ipv6 + # prefix_lists: + # - name: pl_1 + # entries: + # - prefix: 2001:db8:1234::/48 + # action: deny + # sequence: 1 + # - name: pl_2 + # entries: + # - sequence: 2 + # action: remark + # description: TEST_PL_2_REMARK + # - afi: ipv4 + # prefix_lists: + # - name: pl1 + # entries: + # - sequence: 3 + # action: remark + # description: TEST_PL1_2_REMARK + # - sequence: 4 + # action: permit + # prefix: 10.0.0.0/24 + # - name: pl2 + # entries: + # - sequence: 5 + # action: remark + # description: TEST_PL2_REMARK + # - sequence: 6 + # action: permit + # prefix: 35.0.0.0/8 + # eq: 0 + + # Using rendered: - # -------------- - # + + - name: Render platform specific commands from task input using rendered state register: result cisco.iosxr.iosxr_prefix_lists: - config: - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: deny - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL_2_REMARK - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_2_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - name: pl2 - entries: - - sequence: 5 - action: remark - description: TEST_PL2_REMARK - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 - - state: rendered - # After state: - # Module Execution: + config: + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: deny + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL_2_REMARK + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_2_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - name: pl2 + entries: + - sequence: 5 + action: remark + description: TEST_PL2_REMARK + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + state: rendered + + + # Task Output + # ------------- # "rendered": [ # "ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48", # "ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK", @@ -1052,12 +817,13 @@ Examples # "ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK", # "ipv4 prefix-list pl2 6 permit 35.0.0.0/8 eq 0" # ] - # - #--------------------------------------------------------------------------------- + # Using overridden: - # -------------- + + # Before state: - #RP/0/0/CPU0:10#show running-config + # ------------- + # RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -1074,175 +840,88 @@ Examples # - name: Overridde all Prefix_lists configuration with provided configuration cisco.iosxr.iosxr_prefix_lists: - config: - - afi: ipv4 - prefix_lists: - - name: pl3 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_3_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 - state: overridden + config: + - afi: ipv4 + prefix_lists: + - name: pl3 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_3_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + state: overridden + + + # Task Output + # ------------- + # before: + # - afi: ipv6 + # prefix_lists: + # - entries: + # - action: deny + # prefix: 2001:db8:1234::/48 + # sequence: 1 + # name: pl_1 + # - entries: + # - action: remark + # description: TEST_PL_2_REMARK + # sequence: 2 + # name: pl_2 + # - afi: ipv4 + # prefix_lists: + # - entries: + # - action: remark + # description: TEST_PL1_2_REMARK + # sequence: 3 + # - action: permit + # prefix: 10.0.0.0/24 + # sequence: 4 + # name: pl1 + # - entries: + # - action: remark + # description: TEST_PL2_REMARK + # sequence: 5 + # name: pl2 + # commands: + # - no ipv6 prefix-list pl_1 + # - no ipv6 prefix-list pl_2 + # - no ipv4 prefix-list pl1 + # - no ipv4 prefix-list pl2 + # - ipv4 prefix-list pl3 3 remark TEST_PL1_3_REMARK + # - ipv4 prefix-list pl3 4 permit 10.0.0.0/24 + # - ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0 + # after: + # - afi: ipv4 + # prefix_lists: + # - entries: + # - action: remark + # description: TEST_PL1_3_REMARK + # sequence: 3 + # - action: permit + # prefix: 10.0.0.0/24 + # sequence: 4 + # - action: permit + # prefix: 35.0.0.0/8 + # sequence: 6 + # eq: 0 + # name: pl3 + # After state: - #RP/0/0/CPU0:10#show running-config + # RP/0/0/CPU0:10#show running-config # - #ipv4 prefix-list pl3 + # ipv4 prefix-list pl3 # 3 remark TEST_PL1_3_REMARK # 4 permit 10.0.0.0/24 # 6 permit 35.0.0.0/8 eq 0 # ! - #! - # # Module Execution: - # "after": [ - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_3_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # }, - # { - # "action": "permit", - # "prefix": "35.0.0.0/8", - # "sequence": 6, - # "eq": 0 - # } - # ], - # "name": "pl3" - # } - # ] - # } - # ], - # "before": [ - # { - # "afi": "ipv6", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "deny", - # "prefix": "2001:db8:1234::/48", - # "sequence": 1 - # } - # ], - # "name": "pl_1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL_2_REMARK", - # "sequence": 2 - # } - # ], - # "name": "pl_2" - # } - # ] - # }, - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_2_REMARK", - # "sequence": 3 - # }, - # { - # "action": "permit", - # "prefix": "10.0.0.0/24", - # "sequence": 4 - # } - # ], - # "name": "pl1" - # }, - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL2_REMARK", - # "sequence": 5 - # } - # ], - # "name": "pl2" - # } - # ] - # } - # ], - # "changed": true, - # "commands": [ - # "no ipv6 prefix-list pl_1", - # "no ipv6 prefix-list pl_2", - # "no ipv4 prefix-list pl1", - # "no ipv4 prefix-list pl2", - # "ipv4 prefix-list pl3 3 remark TEST_PL1_3_REMARK", - # "ipv4 prefix-list pl3 4 permit 10.0.0.0/24", - # "ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0" - # ], - # "invocation": { - # "module_args": { - # "config": [ - # { - # "afi": "ipv4", - # "prefix_lists": [ - # { - # "entries": [ - # { - # "action": "remark", - # "description": "TEST_PL1_3_REMARK", - # "prefix": null, - # "sequence": 3, - # "ge": null, - # "le": null, - # "eq": null - # }, - # { - # "action": "permit", - # "description": null, - # "prefix": "10.0.0.0/24", - # "sequence": 4, - # "ge": null, - # "le": null, - # "eq": null - # }, - # { - # "action": "permit", - # "description": null, - # "prefix": "35.0.0.0/8", - # "sequence": 6, - # "ge": null, - # "le": null, - # "eq": 0 - # } - # ], - # "name": "pl3" - # } - # ] - # } - # ], - # "running_config": null, - # "state": "overridden" - # } - # } - # } - # + # ! diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_snmp_server_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_snmp_server_module.rst index b89aea405..eab8fe518 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_snmp_server_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_snmp_server_module.rst @@ -5417,101 +5417,102 @@ Examples # --------------------- EMPTY ----------------- # Merged play: # ------------ + - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_snmp_server: - config: - vrfs: - - hosts: - - community: test1 - host: 1.1.1.1 - traps: true - vrf: vrf1 - users: - - Ipv4_acl: test1 - Ipv6_acl: test2 - group: test2 - user: u1 - version: v1 - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 12 - targets: - - host: 1.1.1.2 - name: test + config: + vrfs: + - hosts: + - community: test1 + host: 1.1.1.1 + traps: true + vrf: vrf1 + users: + - Ipv4_acl: test1 + Ipv6_acl: test2 + group: test2 + user: u1 + version: v1 + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 12 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 4 + inform: + retries: 7 + chassis_id: test2 + packetsize: 490 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1024 + communities: + - name: test2 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm1 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test1 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 1 + logging_threshold_pdu_processing: 1 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + addrpool: + high: true + low: true + bfd: true + bgp: + cbgp2: true + l2tun: + sessions: true + tunnel_down: true + tunnel_up: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true - ifmib: - internal_cache_max_duration: 4 - inform: - retries: 7 - chassis_id: test2 - packetsize: 490 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1024 - communities: - - name: test2 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm1 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test1 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 1 - logging_threshold_pdu_processing: 1 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - addrpool: - high: true - low: true - bfd: true - bgp: - cbgp2: true - l2tun: - sessions: true - tunnel_down: true - tunnel_up: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true # # Commands Fired: # ------------ @@ -5822,78 +5823,78 @@ Examples # ---------------- - name: Override Snmp-server configuration with provided configuration cisco.iosxr.iosxr_snmp_server: - config: - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 13 - targets: - - host: 1.1.1.2 - name: test + config: + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 13 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 5 + inform: + retries: 7 + chassis_id: test + packetsize: 491 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1025 + communities: + - name: test1 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm2 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test2 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 2 + logging_threshold_pdu_processing: 2 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true + state: overridden - ifmib: - internal_cache_max_duration: 5 - inform: - retries: 7 - chassis_id: test - packetsize: 491 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1025 - communities: - - name: test1 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm2 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test2 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 2 - logging_threshold_pdu_processing: 2 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true - state: overridden # Commands Fired: # --------------- # "commands": [ @@ -6033,78 +6034,78 @@ Examples # ---------------- - name: Replace Snmp-server configuration with provided configuration cisco.iosxr.iosxr_snmp_server: - state: replaced - config: - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 13 - targets: - - host: 1.1.1.2 - name: test + state: replaced + config: + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 13 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 5 + inform: + retries: 7 + chassis_id: test + packetsize: 491 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1025 + communities: + - name: test1 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm2 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test2 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 2 + logging_threshold_pdu_processing: 2 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true - ifmib: - internal_cache_max_duration: 5 - inform: - retries: 7 - chassis_id: test - packetsize: 491 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1025 - communities: - - name: test1 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm2 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test2 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 2 - logging_threshold_pdu_processing: 2 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true # # Commands Fired: # --------------- @@ -6397,7 +6398,9 @@ Examples # Using state: rendered # Rendered play: # -------------- - - name: Render platform specific configuration lines with state rendered (without connecting to the device) + - name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_snmp_server: state: rendered config: @@ -6421,7 +6424,6 @@ Examples targets: - host: 1.1.1.2 name: test - ifmib: internal_cache_max_duration: 4 inform: @@ -6494,6 +6496,7 @@ Examples vc_up: true msdp_peer_state_change: true register: result + # Module Execution Result: # ------------------------ # "rendered": [ diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_static_routes_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_static_routes_module.rst index 5ee96ef65..5005ef6b2 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_static_routes_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_static_routes_module.rst @@ -445,57 +445,115 @@ Examples - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_static_routes: config: - - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.16/28 - next_hops: - - forward_router_address: 192.0.2.10 - interface: FastEthernet0/0/0/1 - description: LAB - metric: 120 - tag: 10 - - - interface: FastEthernet0/0/0/5 - track: ip_sla_1 - - - dest: 192.0.2.32/28 - next_hops: - - forward_router_address: 192.0.2.11 - admin_distance: 100 - - - afi: ipv6 - safi: unicast - routes: - - dest: 2001:db8:1000::/36 - next_hops: - - interface: FastEthernet0/0/0/7 - description: DC - - - interface: FastEthernet0/0/0/8 - forward_router_address: 2001:db8:2000:2::1 - - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - description: DEV - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - track: ip_sla_2 - vrflabel: 124 + - address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.16/28 + next_hops: + - forward_router_address: 192.0.2.10 + interface: FastEthernet0/0/0/1 + description: LAB + metric: 120 + tag: 10 + - interface: FastEthernet0/0/0/5 + track: ip_sla_1 + - dest: 192.0.2.32/28 + next_hops: + - forward_router_address: 192.0.2.11 + admin_distance: 100 + - afi: ipv6 + safi: unicast + routes: + - dest: '2001:db8:1000::/36' + next_hops: + - interface: FastEthernet0/0/0/7 + description: DC + - interface: FastEthernet0/0/0/8 + forward_router_address: '2001:db8:2000:2::1' + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + description: DEV + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + track: ip_sla_2 + vrflabel: 124 state: merged + + # Task Output + # ----------- + # before: [] + # commands: + # - router static + # - address-family ipv4 unicast + # - 192.0.2.16/28 192.0.2.10 FastEthernet0/0/0/1 description LAB metric 120 tag 10 + # - 192.0.2.16/28 FastEthernet0/0/0/5 track ip_sla_1 + # - 192.0.2.32/28 192.0.2.11 100 + # - address-family ipv6 unicast + # - 2001:db8:1000::/36 FastEthernet0/0/0/7 description DC + # - 2001:db8:1000::/36 2001:db8:2000:2::1 FastEthernet0/0/0/8 + # - vrf DEV_SITE + # - address-family ipv4 unicast + # - 192.0.2.48/28 vrf test_1 192.0.2.12 description DEV + # - 192.0.2.80/28 vrf test_1 192.0.2.14 FastEthernet0/0/0/2 track ip_sla_2 vrflabel 124 + # after: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + + + # # After state # ------------- # RP/0/RP0/CPU0:ios#show running-config router static @@ -545,25 +603,123 @@ Examples - name: Update existing static routes configuration using merged cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - vrflabel: 2301 - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - description: rt_test_1 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + vrflabel: 2301 + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + description: rt_test_1 state: merged + # Task Output + # ----------- + # before: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # commands: + # - router static + # - vrf DEV_SITE + # - address-family ipv4 unicast + # - 192.0.2.48/28 vrf test_1 192.0.2.12 description DEV vrflabel 2301 + # - 192.0.2.80/28 vrf test_1 192.0.2.14 FastEthernet0/0/0/2 description rt_test_1 track ip_sla_2 vrflabel 124 + # after: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # vrflabel: 2301 + # - dest: 192.0.2.80/28 + # next_hops: + # - description: rt_test_1 + # dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # After state # ------------- # RP/0/RP0/CPU0:ios#show running-config router static @@ -615,19 +771,125 @@ Examples - name: Replace device configurations of static routes with provided configurations cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.15 - interface: FastEthernet0/0/0/3 - description: DEV_NEW - dest_vrf: dev_test_2 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.15 + interface: FastEthernet0/0/0/3 + description: DEV_NEW + dest_vrf: dev_test_2 state: replaced + # Task Output + # ----------- + # before: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 0.0.0.0/0 + # next_hops: + # - forward_router_address: 10.0.151.254 + # interface: MgmtEth0 + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - forward_router_address: 192.0.3.24 + # interface: GigabitEthernet0/0/0/1 + # vrflabel: 2302 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # commands: + # - router static + # - vrf DEV_SITE + # - address-family ipv4 unicast + # - no 192.0.2.48/28 vrf test_1 192.0.2.12 + # - no 192.0.2.48/28 192.0.3.24 GigabitEthernet0/0/0/1 + # - 192.0.2.48/28 vrf dev_test_2 192.0.2.15 FastEthernet0/0/0/3 description DEV_NEW + # after: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV_NEW + # dest_vrf: dev_test_2 + # forward_router_address: 192.0.2.15 + # interface: FastEthernet0/0/0/3 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # After state # ------------ # RP/0/RP0/CPU0:ios#sh running-config router static @@ -678,27 +940,108 @@ Examples - name: Overridde all static routes configuration with provided configuration cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_NEW - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.15 - interface: FastEthernet0/0/0/3 - description: DEV1 - - afi: ipv6 - safi: unicast - routes: - - dest: 2001:db8:3000::/36 - next_hops: - - interface: FastEthernet0/0/0/4 - forward_router_address: 2001:db8:2000:2::2 - description: PROD1 - track: ip_sla_1 + - vrf: DEV_NEW + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.15 + interface: FastEthernet0/0/0/3 + description: DEV1 + - afi: ipv6 + safi: unicast + routes: + - dest: '2001:db8:3000::/36' + next_hops: + - interface: FastEthernet0/0/0/4 + forward_router_address: '2001:db8:2000:2::2' + description: PROD1 + track: ip_sla_1 state: overridden + # Task Output + # ----------- + # before: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - forward_router_address: 192.0.3.24 + # interface: GigabitEthernet0/0/0/1 + # vrflabel: 2302 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # commands: + # - router static + # - no vrf DEV_SITE + # - no address-family ipv4 unicast + # - no address-family ipv6 unicast + # - vrf DEV_NEW + # - address-family ipv4 unicast + # - 192.0.2.48/28 192.0.2.15 FastEthernet0/0/0/3 description DEV1 + # - address-family ipv6 unicast + # - 2001:db8:3000::/36 2001:db8:2000:2::2 FastEthernet0/0/0/4 description PROD1 + # track ip_sla_1 + # after: + # - vrf: DEV_NEW + # address_families: + # - afi: ipv4 + # safi: unicast + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - forward_router_address: 192.0.2.15 + # interface: FastEthernet0/0/0/3 + # description: DEV1 + # - afi: ipv6 + # safi: unicast + # routes: + # - dest: 2001:db8:3000::/36 + # next_hops: + # - interface: FastEthernet0/0/0/4 + # forward_router_address: 2001:db8:2000:2::2 + # description: PROD1 + # track: ip_sla_1 + # After state # ------------- # RP/0/RP0/CPU0:ios#sh running-config router static @@ -742,12 +1085,113 @@ Examples - name: Delete all destination network entries under a single AFI cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast state: deleted + # Task output + # ----------------------- + # before: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - forward_router_address: 192.0.3.24 + # interface: GigabitEthernet0/0/0/1 + # vrflabel: 2302 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # commands: + # - router static + # - vrf DEV_SITE + # - no address-family ipv4 unicast + # after: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - forward_router_address: 192.0.3.24 + # interface: GigabitEthernet0/0/0/1 + # vrflabel: 2302 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # - vrf: DEV_SITE + # After state # ------------ @@ -796,6 +1240,58 @@ Examples cisco.iosxr.iosxr_static_routes: state: deleted + # Task output + # ----------------------- + # before: + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.16/28 + # next_hops: + # - description: LAB + # forward_router_address: 192.0.2.10 + # interface: FastEthernet0/0/0/1 + # metric: 120 + # tag: 10 + # - interface: FastEthernet0/0/0/5 + # track: ip_sla_1 + # - dest: 192.0.2.32/28 + # next_hops: + # - admin_distance: 100 + # forward_router_address: 192.0.2.11 + # safi: unicast + # - afi: ipv6 + # routes: + # - dest: 2001:db8:1000::/36 + # next_hops: + # - description: DC + # interface: FastEthernet0/0/0/7 + # - forward_router_address: 2001:db8:2000:2::1 + # interface: FastEthernet0/0/0/8 + # safi: unicast + # - address_families: + # - afi: ipv4 + # routes: + # - dest: 192.0.2.48/28 + # next_hops: + # - description: DEV + # dest_vrf: test_1 + # forward_router_address: 192.0.2.12 + # - forward_router_address: 192.0.3.24 + # interface: GigabitEthernet0/0/0/1 + # vrflabel: 2302 + # - dest: 192.0.2.80/28 + # next_hops: + # - dest_vrf: test_1 + # forward_router_address: 192.0.2.14 + # interface: FastEthernet0/0/0/2 + # track: ip_sla_2 + # vrflabel: 124 + # safi: unicast + # vrf: DEV_SITE + # commands: + # - no router static + # after: [] # After state # ------------ # RP/0/RP0/CPU0:ios#sh running-config router static @@ -908,26 +1404,25 @@ Examples # Using rendered - name: Render platform specific commands (without connecting to the device) - cisco.iosxr.iosxr_static_routes: + cisco.iosxr.iosxr_static_routes: null config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - description: DEV - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - track: ip_sla_2 - vrflabel: 124 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + description: DEV + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + track: ip_sla_2 + vrflabel: 124 # Task Output (redacted) # ----------------------- diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_system_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_system_module.rst index efc494ed1..f59eea224 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_system_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_system_module.rst @@ -196,17 +196,17 @@ Examples hostname: iosxr01 domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com - name: remove configuration cisco.iosxr.iosxr_system: hostname: iosxr01 domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com state: absent - name: configure hostname and domain-name with vrf cisco.iosxr.iosxr_system: @@ -214,9 +214,9 @@ Examples vrf: nondefault domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com - name: configure DNS lookup sources cisco.iosxr.iosxr_system: lookup_source: MgmtEth0/0/CPU0/0 @@ -224,8 +224,8 @@ Examples - name: configure name servers cisco.iosxr.iosxr_system: name_servers: - - 8.8.8.8 - - 8.8.4.4 + - 8.8.8.8 + - 8.8.4.4 diff --git a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_user_module.rst b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_user_module.rst index 808742af5..b56d09516 100644 --- a/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_user_module.rst +++ b/ansible_collections/cisco/iosxr/docs/cisco.iosxr.iosxr_user_module.rst @@ -424,18 +424,18 @@ Examples - name: set multiple users to group sys-admin cisco.iosxr.iosxr_user: aggregate: - - name: netop - - name: netend + - name: netop + - name: netend group: sysadmin state: present - name: set multiple users to multiple groups cisco.iosxr.iosxr_user: aggregate: - - name: netop - - name: netend + - name: netop + - name: netend groups: - - sysadmin - - root-system + - sysadmin + - root-system state: present - name: Change Password for User netop cisco.iosxr.iosxr_user: diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/__init__.py b/ansible_collections/cisco/iosxr/meta/__init__.py index e69de29bb..e69de29bb 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/__init__.py +++ b/ansible_collections/cisco/iosxr/meta/__init__.py diff --git a/ansible_collections/cisco/iosxr/meta/runtime.yml b/ansible_collections/cisco/iosxr/meta/runtime.yml index fdc0e14b9..d2e135969 100644 --- a/ansible_collections/cisco/iosxr/meta/runtime.yml +++ b/ansible_collections/cisco/iosxr/meta/runtime.yml @@ -8,11 +8,6 @@ plugin_routing: redirect: cisco.iosxr.iosxr_acls banner: redirect: cisco.iosxr.iosxr_banner - bgp: - redirect: cisco.iosxr.iosxr_bgp - deprecation: - removal_date: "2023-01-29" - warning_text: See the plugin documentation for more details command: redirect: cisco.iosxr.iosxr_command config: diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/__init__.py b/ansible_collections/cisco/iosxr/plugins/cache/__init__.py index e69de29bb..e69de29bb 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/__init__.py +++ b/ansible_collections/cisco/iosxr/plugins/cache/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/cliconf/iosxr.py b/ansible_collections/cisco/iosxr/plugins/cliconf/iosxr.py index 706bff6e5..6b569ae2a 100644 --- a/ansible_collections/cisco/iosxr/plugins/cliconf/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/cliconf/iosxr.py @@ -248,6 +248,17 @@ class Cliconf(CliconfBase): device_info["network_os_model"] = match.group(1) break + if "network_os_model" not in device_info: + data = self.get_command_output("show inventory") + match = re.search(r"DESCR: \"[Cc]isco (\S+ \S+)", data, re.M) + if match: + device_info["network_os_model"] = match.group(1) + + data = self.get_command_output("show inventory") + match = re.search(r"SN: (\S+)\n\nNAME:", data, re.M) + if match: + device_info["network_os_serialnum"] = match.group(1) + hostname = self.get_command_output("show running-config hostname") match = re.search(r"hostname\s(\S+)$", hostname, re.M) if match: @@ -274,7 +285,7 @@ class Cliconf(CliconfBase): if admin and "admin-" in prompt: self.send_command("exit") - def get_config(self, source="running", format="text", flags=None): + def get_config(self, source="running", flags=None, format="text"): if source not in ["running"]: raise ValueError("fetching configuration from %s is not supported" % source) @@ -290,10 +301,11 @@ class Cliconf(CliconfBase): self, candidate=None, commit=True, - admin=False, - exclusive=False, replace=None, + diff=False, comment=None, + admin=False, + exclusive=False, label=None, ): operations = self.get_device_operations() diff --git a/ansible_collections/cisco/iosxr/plugins/doc_fragments/iosxr.py b/ansible_collections/cisco/iosxr/plugins/doc_fragments/iosxr.py index 5049db819..ab9a5b155 100644 --- a/ansible_collections/cisco/iosxr/plugins/doc_fragments/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/doc_fragments/iosxr.py @@ -9,7 +9,6 @@ __metaclass__ = type class ModuleDocFragment(object): - # Standard files documentation fragment DOCUMENTATION = r"""options: {} notes: diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/__init__.py b/ansible_collections/cisco/iosxr/plugins/lookup/__init__.py index e69de29bb..e69de29bb 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/__init__.py +++ b/ansible_collections/cisco/iosxr/plugins/lookup/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/common/__init__.py b/ansible_collections/cisco/iosxr/plugins/module_utils/common/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/common/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py index 7413c1ad9..10d4e1666 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_address_family/bgp_address_family.py @@ -149,6 +149,9 @@ class Bgp_address_familyArgs(object): # pylint: disable=R0903 }, "dampening": { "type": "dict", + "mutually_exclusive": [ + ["set", "value", "route_policy"], + ], "options": { "set": {"type": "bool"}, "value": {"type": "int"}, diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py index 051e26996..3009b9f32 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_global/bgp_global.py @@ -270,6 +270,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "fast_detect": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable", "strict_mode"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -292,6 +295,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "send": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -299,6 +305,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "receive": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -317,6 +326,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "all": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -332,6 +344,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "description": {"type": "str"}, "dmz_link_bandwidth": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -340,6 +355,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "dscp": {"type": "str"}, "ebgp_multihop": { "type": "dict", + "mutually_exclusive": [ + ["value", "mpls"], + ], "options": { "value": {"type": "int"}, "mpls": {"type": "bool"}, @@ -347,6 +365,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ebgp_recv_extcommunity_dmz": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -354,6 +375,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ebgp_send_extcommunity_dmz": { "type": "dict", + "mutually_exclusive": [ + ["set", "cumulatie", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "cumulatie": {"type": "bool"}, @@ -362,6 +386,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "egress_engineering": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -377,6 +404,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "set": {"type": "bool"}, "activate": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -386,6 +416,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "as_prepends": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -395,6 +428,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "local_preference": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "inheritance_disable": { @@ -413,6 +449,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ignore_connected_check": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -421,6 +460,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "keychain": { "type": "dict", "no_log": False, + "mutually_exclusive": [ + ["name", "inheritance_disable"], + ], "options": { "name": {"type": "str"}, "inheritance_disable": {"type": "bool"}, @@ -431,6 +473,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "address": { "type": "dict", + "mutually_exclusive": [ + ["ipv4_address", "inheritance_disable"], + ], "options": { "ipv4_address": {"type": "str"}, "inheritance_disable": { @@ -442,8 +487,24 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "local_as": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, + "no_prepend": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "replace_as": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "dual_as": {"type": "bool"}, + }, + }, + }, + }, "inheritance_disable": {"type": "bool"}, }, }, @@ -455,6 +516,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "in": { "type": "dict", + "mutually_exclusive": [ + ["value", "disable", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "disable": {"type": "bool"}, @@ -465,6 +529,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "out": { "type": "dict", + "mutually_exclusive": [ + ["value", "disable", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "disable": {"type": "bool"}, @@ -486,6 +553,19 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, }, }, + "password": { + "type": "dict", + "no_log": False, + "mutually_exclusive": [ + ["encrypted", "inheritance_disable"], + ], + "options": { + "encrypted": {"type": "str", "no_log": True}, + "inheritance_disable": { + "type": "bool", + }, + }, + }, "receive_buffer_size": {"type": "int"}, "remote_as": {"type": "int"}, "send_buffer_size": {"type": "int"}, @@ -495,6 +575,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "shutdown": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -505,6 +588,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "mss": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "inheritance_disable": { @@ -523,6 +609,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ttl_security": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": {"type": "bool"}, "set": {"type": "bool"}, @@ -568,10 +657,24 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, }, "update_source": {"type": "str"}, + "use": { + "type": "dict", + "options": { + "neighbor_group": { + "type": "str", + }, + "session_group": { + "type": "str", + }, + }, + }, }, }, "nsr": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -862,6 +965,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "fast_detect": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable", "strict_mode"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -886,6 +992,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "send": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": { "type": "bool", @@ -897,6 +1006,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "receive": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": { "type": "bool", @@ -921,6 +1033,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "all": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -938,6 +1053,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "description": {"type": "str"}, "dmz_link_bandwidth": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -955,6 +1073,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ebgp_recv_extcommunity_dmz": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -964,6 +1085,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ebgp_send_extcommunity_dmz": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -974,6 +1098,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "egress_engineering": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -991,6 +1118,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "set": {"type": "bool"}, "activate": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -1000,6 +1130,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "as_prepends": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -1009,6 +1142,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "local_preference": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "inheritance_disable": { @@ -1027,6 +1163,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ignore_connected_check": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -1036,6 +1175,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "keychain": { "type": "dict", + "mutually_exclusive": [ + ["name", "inheritance_disable"], + ], "no_log": False, "options": { "name": {"type": "str"}, @@ -1049,6 +1191,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "address": { "type": "dict", + "mutually_exclusive": [ + ["ipv4_address", "inheritance_disable"], + ], "options": { "ipv4_address": { "type": "str", @@ -1062,8 +1207,24 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "local_as": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, + "no_prepend": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "replace_as": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "dual_as": {"type": "bool"}, + }, + }, + }, + }, "inheritance_disable": { "type": "bool", }, @@ -1077,6 +1238,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "in": { "type": "dict", + "mutually_exclusive": [ + ["value", "disable", "inheritance_disable"], + ], "options": { "value": { "type": "int", @@ -1091,6 +1255,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "out": { "type": "dict", + "mutually_exclusive": [ + ["value", "disable", "inheritance_disable"], + ], "options": { "value": { "type": "int", @@ -1118,6 +1285,19 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, }, }, + "password": { + "type": "dict", + "mutually_exclusive": [ + ["encrypted", "inheritance_disable"], + ], + "no_log": False, + "options": { + "encrypted": {"type": "str", "no_log": True}, + "inheritance_disable": { + "type": "bool", + }, + }, + }, "receive_buffer_size": {"type": "int"}, "remote_as": {"type": "int"}, "send_buffer_size": {"type": "int"}, @@ -1131,6 +1311,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "shutdown": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -1143,6 +1326,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "options": { "mss": { "type": "dict", + "mutually_exclusive": [ + ["value", "inheritance_disable"], + ], "options": { "value": {"type": "int"}, "inheritance_disable": { @@ -1161,6 +1347,9 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, "ttl_security": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "inheritance_disable": { "type": "bool", @@ -1208,6 +1397,17 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 }, }, "update_source": {"type": "str"}, + "use": { + "type": "dict", + "options": { + "neighbor_group": { + "type": "str", + }, + "session_group": { + "type": "str", + }, + }, + }, }, }, "rd": { @@ -1239,6 +1439,7 @@ class Bgp_globalArgs(object): # pylint: disable=R0903 "deleted", "merged", "replaced", + "overridden", "gathered", "rendered", "parsed", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py index a720860b7..68e1bbeae 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_neighbor_address_family/bgp_neighbor_address_family.py @@ -80,6 +80,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "send_cost_community_disable": {"type": "bool"}, "send_med": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -89,10 +92,16 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "allowas_in": { "type": "dict", + "mutually_exclusive": [ + ["set", "value"], + ], "options": {"value": {"type": "int"}, "set": {"type": "bool"}}, }, "as_override": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -105,6 +114,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "default_originate": { "type": "dict", + "mutually_exclusive": [ + ["set", "route_policy", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "route_policy": {"type": "str"}, @@ -137,6 +149,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "multipath": {"type": "bool"}, "next_hop_self": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -179,6 +194,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "route_reflector_client": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -186,6 +204,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_community_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -193,6 +214,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_community_gshut_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -200,6 +224,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_extended_community_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -207,6 +234,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_multicast_attributes": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -217,6 +247,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "options": { "inbound": { "type": "dict", + "mutually_exclusive": [ + ["set", "always", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "always": {"type": "bool"}, @@ -271,6 +304,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "send_cost_community_disable": {"type": "bool"}, "send_med": { "type": "dict", + "mutually_exclusive": [ + ["set", "disable"], + ], "options": { "set": {"type": "bool"}, "disable": {"type": "bool"}, @@ -280,6 +316,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "allowas_in": { "type": "dict", + "mutually_exclusive": [ + ["value", "set"], + ], "options": { "value": {"type": "int"}, "set": {"type": "bool"}, @@ -288,6 +327,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "as_override": { "type": "dict", "aliases": ["as_overrride"], + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -299,6 +341,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "default_originate": { "type": "dict", + "mutually_exclusive": [ + ["set", "route_policy", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "route_policy": {"type": "str"}, @@ -331,6 +376,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "multipath": {"type": "bool"}, "next_hop_self": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -364,6 +412,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "route_reflector_client": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -371,6 +422,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_community_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -378,6 +432,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_community_gshut_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -385,6 +442,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 }, "send_extended_community_ebgp": { "type": "dict", + "mutually_exclusive": [ + ["set", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "inheritance_disable": {"type": "bool"}, @@ -395,6 +455,9 @@ class Bgp_neighbor_address_familyArgs(object): # pylint: disable=R0903 "options": { "inbound": { "type": "dict", + "mutually_exclusive": [ + ["set", "always", "inheritance_disable"], + ], "options": { "set": {"type": "bool"}, "always": {"type": "bool"}, diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/__init__.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/bgp_templates.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/bgp_templates.py new file mode 100644 index 000000000..793f26282 --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/bgp_templates/bgp_templates.py @@ -0,0 +1,612 @@ +# -*- coding: utf-8 -*- +# Copyright 2023 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the +# ansible.content_builder. +# +# Manually editing this file is not advised. +# +# To update the argspec make the desired changes +# in the documentation in the module file and re-run +# ansible.content_builder commenting out +# the path to external 'docstring' in build.yaml. +# +############################################## + +""" +The arg spec for the iosxr_bgp_templates module +""" + + +class Bgp_templatesArgs(object): # pylint: disable=R0903 + """The arg spec for the iosxr_bgp_templates module""" + + argument_spec = { + "config": { + "type": "dict", + "options": { + "as_number": {"type": "str"}, + "neighbor": { + "type": "list", + "elements": "dict", + "options": { + "name": {"type": "str"}, + "address_family": { + "type": "list", + "elements": "dict", + "options": { + "afi": { + "type": "str", + "choices": ["ipv4", "ipv6"], + }, + "safi": { + "type": "str", + "choices": [ + "flowspec", + "mdt", + "multicast", + "mvpn", + "rt-filter", + "tunnel", + "unicast", + "labeled-unicast", + "sr-policy", + ], + }, + "signalling": { + "type": "dict", + "options": { + "bgp_disable": {"type": "bool"}, + "ldp_disable": {"type": "bool"}, + }, + }, + "advertise": { + "type": "dict", + "options": { + "local_labeled_route": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "permanent_network": {"type": "bool"}, + }, + }, + "aigp": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + "set": {"type": "bool"}, + "send_cost_community_disable": { + "type": "bool", + }, + "send_med": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + }, + }, + "allowas_in": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "set": {"type": "bool"}, + }, + }, + "as_override": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "bestpath_origin_as_allow_invalid": { + "type": "bool", + }, + "capability_orf_prefix": { + "type": "str", + "choices": ["both", "send", "none", "receive"], + }, + "default_originate": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "route_policy": {"type": "str"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "encapsulation_type_srv6": {"type": "bool"}, + "long_lived_graceful_restart": { + "type": "dict", + "options": { + "capable": {"type": "bool"}, + "stale_time": { + "type": "dict", + "options": { + "send": {"type": "int"}, + "accept": {"type": "int"}, + }, + }, + }, + }, + "maximum_prefix": { + "type": "dict", + "options": { + "max_limit": {"type": "int"}, + "threshold_value": {"type": "int"}, + "restart": {"type": "int"}, + "warning_only": {"type": "bool"}, + "discard_extra_paths": {"type": "bool"}, + }, + }, + "multipath": {"type": "bool"}, + "next_hop_self": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "next_hop_unchanged": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + "multipath": {"type": "bool"}, + }, + }, + "optimal_route_reflection_group_name": { + "type": "str", + }, + "orf_route_policy": {"type": "str"}, + "origin_as": { + "type": "dict", + "options": { + "validation": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + }, + }, + }, + }, + "remove_private_AS": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inbound": {"type": "bool"}, + "entire_aspath": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "route_policy": { + "type": "dict", + "options": { + "inbound": {"type": "str"}, + "outbound": {"type": "str"}, + }, + }, + "route_reflector_client": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "send_community_ebgp": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "send_community_gshut_ebgp": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "send_extended_community_ebgp": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "send_multicast_attributes": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "soft_reconfiguration": { + "type": "dict", + "options": { + "inbound": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "always": {"type": "bool"}, + "inheritance_disable": { + "type": "bool", + }, + }, + }, + }, + }, + "weight": {"type": "int"}, + "update": { + "type": "dict", + "options": { + "out_originator_loopcheck_disable": { + "type": "bool", + }, + "out_originator_loopcheck_set": { + "type": "bool", + }, + }, + }, + "use": {"type": "str"}, + }, + }, + "advertisement_interval": {"type": "int"}, + "bfd": { + "type": "dict", + "options": { + "fast_detect": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + "strict_mode": {"type": "bool"}, + }, + }, + "minimum_interval": {"type": "int"}, + "multiplier": {"type": "int"}, + }, + }, + "bmp_activate": { + "type": "dict", + "options": {"server": {"type": "int"}}, + }, + "capability": { + "type": "dict", + "options": { + "additional_paths": { + "type": "dict", + "options": { + "send": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "receive": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + }, + }, + "suppress": { + "type": "dict", + "options": { + "four_byte_AS": { + "type": "dict", + "options": {"set": {"type": "bool"}}, + }, + "all": { + "type": "dict", + "options": { + "inheritance_disable": { + "type": "bool", + }, + "set": {"type": "bool"}, + }, + }, + }, + }, + }, + }, + "cluster_id": {"type": "str"}, + "description": {"type": "str"}, + "dmz_link_bandwidth": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "dscp": {"type": "str"}, + "ebgp_multihop": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "mpls": {"type": "bool"}, + }, + }, + "ebgp_recv_extcommunity_dmz": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "ebgp_send_extcommunity_dmz": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "cumulatie": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "egress_engineering": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "enforce_first_as": { + "type": "dict", + "options": {"disable": {"type": "bool"}}, + }, + "graceful_maintenance": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "activate": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "as_prepends": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "value": {"type": "int"}, + }, + }, + "local_preference": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + }, + }, + "graceful_restart": { + "type": "dict", + "options": { + "restart_time": {"type": "int"}, + "stalepath_time": {"type": "int"}, + }, + }, + "ignore_connected_check": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "idle_watch_time": {"type": "int"}, + "internal_vpn_client": {"type": "bool"}, + "keychain": { + "type": "dict", + "no_log": False, + "options": { + "name": {"type": "str", "no_log": True}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "local": { + "type": "dict", + "options": { + "address": { + "type": "dict", + "options": { + "ipv4_address": {"type": "str"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + }, + }, + "local_as": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "no_prepend": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "replace_as": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "dual_as": {"type": "bool"}, + }, + }, + }, + }, + "inheritance_disable": {"type": "bool"}, + }, + }, + "local_address_subnet": {"type": "str"}, + "log": { + "type": "dict", + "options": { + "log_message": { + "type": "dict", + "options": { + "in": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "disable": {"type": "bool"}, + "inheritance_disable": { + "type": "bool", + }, + }, + }, + "out": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "disable": {"type": "bool"}, + "inheritance_disable": { + "type": "bool", + }, + }, + }, + }, + }, + }, + }, + "maximum_peers": {"type": "int"}, + "password": { + "type": "dict", + "no_log": False, + "options": { + "encrypted": {"type": "str", "no_log": True}, + "inheritance_disable": {"type": "bool"}, + }, + }, + "peer_set": {"type": "int"}, + "precedence": { + "type": "str", + "choices": [ + "critical", + "flash", + "flash-override", + "immediate", + "internet", + "network", + "priority", + "routine", + ], + }, + "receive_buffer_size": {"type": "int"}, + "remote_as": {"type": "int"}, + "remote_as_list": {"type": "str"}, + "send_buffer_size": {"type": "int"}, + "session_open_mode": { + "type": "str", + "choices": ["active-only", "both", "passive-only"], + }, + "shutdown": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "tcp": { + "type": "dict", + "options": { + "mss": { + "type": "dict", + "options": { + "value": {"type": "int"}, + "inheritance_disable": {"type": "bool"}, + }, + }, + }, + }, + "timers": { + "type": "dict", + "options": { + "keepalive_time": {"type": "int"}, + "holdtime": {"type": "int"}, + "min_holdtime": {"type": "int"}, + }, + }, + "ttl_security": { + "type": "dict", + "options": { + "inheritance_disable": {"type": "bool"}, + "set": {"type": "bool"}, + }, + }, + "update": { + "type": "dict", + "options": { + "in": { + "type": "dict", + "options": { + "filtering": { + "type": "dict", + "options": { + "attribute_filter": { + "type": "dict", + "options": { + "group": {"type": "str"}, + }, + }, + "logging": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + }, + }, + "update_message": { + "type": "dict", + "options": { + "buffers": {"type": "int"}, + }, + }, + }, + }, + }, + }, + }, + }, + "update_source": {"type": "str"}, + "use": { + "type": "dict", + "options": { + "neighbor_group": {"type": "str"}, + "session_group": {"type": "str"}, + }, + }, + }, + }, + }, + }, + "running_config": {"type": "str"}, + "state": { + "type": "str", + "choices": [ + "deleted", + "merged", + "overridden", + "replaced", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + }, + } # pylint: disable=C0301 diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py index e58ddebbb..dff2f7680 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/l2_interfaces/l2_interfaces.py @@ -69,6 +69,7 @@ class L2_InterfacesArgs(object): "type": "list", }, "q_vlan": {"type": "list", "elements": "int"}, + "qvlan": {"type": "list", "elements": "str"}, "propagate": {"type": "bool"}, "encapsulation": { "type": "dict", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lacp/lacp.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lacp/lacp.py index 2bdda1778..3fcaf8cb0 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lacp/lacp.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lacp/lacp.py @@ -58,6 +58,7 @@ class LacpArgs(object): # pylint: disable=R0903 "choices": [ "merged", "replaced", + "overridden", "deleted", "parsed", "rendered", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py index 6c6c39479..117065223 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/argspec/lldp_global/lldp_global.py @@ -62,6 +62,7 @@ class Lldp_globalArgs(object): # pylint: disable=R0903 "choices": [ "merged", "replaced", + "overridden", "deleted", "parsed", "rendered", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/acls/acls.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/acls/acls.py index 9f9b1ea61..0e0ea7d00 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/acls/acls.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/acls/acls.py @@ -502,7 +502,8 @@ class Acls(ConfigBase): ) ^ set(flatten_dict(want_ace.get("protocol_options", {}))) if delta or protocol_opt_delta: - want_ace = self._dict_merge(have_ace, want_ace) + if self.state not in ["replaced"]: + want_ace = self._dict_merge(have_ace, want_ace) return self._compute_commands(want_ace) def _prepare_for_diff(self, ace): diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py index 69b752be9..4cb4083c6 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_global/bgp_global.py @@ -116,6 +116,7 @@ class Bgp_global(ResourceModule): """ if self.state not in ["parsed", "gathered"]: self.generate_commands() + # import epdb;epdb.serve() self.run_commands() return self.result @@ -123,7 +124,7 @@ class Bgp_global(ResourceModule): """Generate configuration commands to send based on want, have and desired state. """ - if self.state in ["merged", "replaced"]: + if self.state in ["merged", "replaced", "overridden"]: w_asn = self.want.get("as_number") h_asn = self.have.get("as_number") @@ -242,6 +243,8 @@ class Bgp_global(ResourceModule): for the Bgp_global neighbor resource. """ neighbor_parsers = [ + "use.neighbor_group", + "use.session_group", "advertisement_interval", "bfd_fast_detect_disable", "bfd_fast_detect_strict_mode", @@ -275,6 +278,8 @@ class Bgp_global(ResourceModule): "local", "local_address", "origin_as", + "password_inheritance_disable", + "password_encrypted", "remote_as", "receive_buffer_size", "send_buffer_size", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/__init__.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/bgp_templates.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/bgp_templates.py new file mode 100644 index 000000000..c62687dfa --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/bgp_templates/bgp_templates.py @@ -0,0 +1,295 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2023 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +# + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +""" +The iosxr_bgp_templates config file. +It is in this file where the current configuration (as dict) +is compared to the provided configuration (as dict) and the command set +necessary to bring the current configuration to its desired end-state is +created. +""" + +from copy import deepcopy + +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module import ( + ResourceModule, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) + +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.facts import Facts +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.rm_templates.bgp_templates import ( + Bgp_templatesTemplate, +) + + +class Bgp_templates(ResourceModule): + """ + The iosxr_bgp_templates config class + """ + + def __init__(self, module): + super(Bgp_templates, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="bgp_templates", + tmplt=Bgp_templatesTemplate(), + ) + self.parsers = [ + "router", + "advertise.local_labeled_route.disable", + "advertise.local_labeled_route.set", + "advertise.permanent_network", + "aigp.set", + "aigp.disable", + "aigp.send_med", + "aigp.send_cost_community_disable", + "allowas_in", + "as_override", + "bestpath_origin_as_allow_invalid", + "capability_orf_prefix", + "default_originate.set", + "default_originate.route_policy", + "default_originate.inheritance_disable", + "long_lived_graceful_restart_capable", + "long_lived_graceful_restart_stale_time", + "maximum_prefix", + "multipath", + "next_hop_self", + "next_hop_unchanged.set", + "next_hop_unchanged.inheritance_disable", + "next_hop_unchanged.multipath", + "optimal_route_reflection_group_name", + "origin_as", + "remove_private_AS", + "remove_private_AS.set", + "route_reflector_client", + "send_community_ebgp", + "send_community_gshut_ebgp", + "send_extended_community_ebgp", + "send_multicast_attributes", + "soft_reconfiguration", + "weight", + "route_policy.inbound", + "route_policy.outbound", + "signalling", + "update.out_originator_loopcheck_disable", + "update.out_originator_loopcheck_set", + "use", + ] + + def execute_module(self): + """Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + if self.state not in ["parsed", "gathered"]: + self.generate_commands() + self.run_commands() + + return self.result + + def generate_commands(self): + """Generate configuration commands to send based on + want, have and desired state. + """ + w_asn = self.want.pop("as_number", "") + h_asn = self.have.pop("as_number", "") + + asn = w_asn or h_asn + wantd = self._bgp_list_to_dict(deepcopy(self.want)) + haved = self._bgp_list_to_dict(deepcopy(self.have)) + # if state is merged, merge want onto have and then compare + if self.state == "merged": + wantd = dict_merge(haved, wantd) + + # if state is deleted, empty out wantd and set haved to wantd + if self.state == "deleted": + haved = {k: v for k, v in iteritems(haved) if k in wantd or not wantd} + wantd = {} + + if self.state in ["overridden", "deleted"]: + cmds = [] + for k, have in iteritems(haved.get("neighbor", {})): + if k not in wantd.get("neighbor", {}): + cmds.append("no neighbor-group {0}".format(have["name"])) + self.commands.extend(cmds) + + self._compare(asn, want=wantd, have=haved) + + def sort_commands(self, index): + old_cmd = self.commands[index:] + self.commands = self.commands[0:index] + self.commands.extend( + [each for each in old_cmd if "no" in each] + + [each for each in old_cmd if "no" not in each], + ) + + def _compare(self, asn, want, have): + """Leverages the base class `compare()` method and + populates the list of commands to be run by comparing + the `want` and `have` data with the `parsers` defined + for the Bgp_global network resource. + """ + self._compare_ngs(want=want, have=have) + if self.commands and "router bgp" not in self.commands[0]: + self.commands.insert(0, "router bgp {0}".format(asn)) + + def _compare_ngs(self, want, have): + """Leverages the base class `compare()` method and + populates the list of commands to be run by comparing + the `want` and `have` data with the `parsers` defined + for the Bgp_global neighbor resource. + """ + neighbor_parsers = [ + "use.neighbor_group", + "use.session_group", + "advertisement_interval", + "bfd_fast_detect_disable", + "bfd_fast_detect_strict_mode", + "bfd_fast_detect_set", + "bfd_nbr_minimum_interval", + "bfd_nbr_multiplier", + "bmp_activate", + "dmz_link_bandwidth", + "dmz_link_bandwidth_inheritance_disable", + "neighbor_description", + "neighbor_cluster_id", + "dscp", + "ebgp_multihop_value", + "ebgp_multihop_mpls", + "ebgp_recv_extcommunity_dmz", + "ebgp_recv_extcommunity_dmz_set", + "ebgp_send_extcommunity_dmz", + "ebgp_send_extcommunity_dmz_set", + "ebgp_send_extcommunity_dmz_cumulatie", + "egress_engineering", + "egress_engineering_set", + "idle_watch_time", + "internal_vpn_client", + "ignore_connected_check", + "ignore_connected_check_set", + "neighbor_enforce_first_as_disable", + "neighbor_graceful_restart_restart_time", + "neighbor_graceful_restart_stalepath_time", + "keychain", + "keychain_name", + "local_as_inheritance_disable", + "local_as", + "local", + "local_address", + "origin_as", + "password_inheritance_disable", + "password_encrypted", + "peer_set", + "precedence", + "remote_as", + "remote_as_list", + "receive_buffer_size", + "send_buffer_size", + "session_open_mode", + "neighbor_shutdown", + "neighbor_shutdown_inheritance_disable", + "neighbor_tcp_mss", + "neighbor_tcp_mss_inheritance_disable", + "neighbor_timers_keepalive", + "update_source", + "neighbor_ttl_security_inheritance_disable", + "neighbor_ttl_security", + "neighbor_graceful_maintenance_set", + "neighbor_graceful_maintenance_activate", + "neighbor_graceful_maintenance_activate_inheritance_disable", + "neighbor_graceful_maintenance_as_prepends", + "neighbor_graceful_maintenance_local_preference_disable", + "neighbor_graceful_maintenance_local_preference", + "neighbor_graceful_maintenance_as_prepends_value", + "neighbor_capability_additional_paths_send", + "neighbor_capability_additional_paths_send_disable", + "neighbor_capability_additional_paths_rcv_disable", + "neighbor_capability_additional_paths_rcv", + "neighbor_capability_suppress_four_byte_AS", + "neighbor_capability_suppress_all", + "neighbor_capability_suppress_all_inheritance_disable", + "neighbor_log_message_in_value", + "neighbor_log_message_in_disable", + "neighbor_log_message_in_inheritance_disable", + "neighbor_log_message_out_value", + "neighbor_log_message_out_disable", + "neighbor_log_message_out_inheritance_disable", + "neighbor_update_in_filtering_attribute_filter_group", + "neighbor_update_in_filtering_logging_disable", + "neighbor_update_in_filtering_message_buffers", + ] + + want_nbr = want.get("neighbor", {}) + have_nbr = have.get("neighbor", {}) + for name, entry in iteritems(want_nbr): + have = have_nbr.pop(name, {}) + begin = len(self.commands) + self.compare(parsers=neighbor_parsers, want=entry, have=have) + if self.state in ["replaced", "overridden"]: + self.sort_commands(begin) + self._compare_af(want=entry, have=have) + name = entry.get("name", "") + if len(self.commands) != begin: + self.commands.insert( + begin, + self._tmplt.render( + {"name": name}, + "neighbor_group", + False, + ), + ) + + def _compare_af(self, want, have): + """Custom handling of afs option + :params want: the want BGP dictionary + :params have: the have BGP dictionary + """ + wafs = want.get("address_family", {}) + hafs = have.get("address_family", {}) + for name, entry in iteritems(wafs): + begin = len(self.commands) + af_have = hafs.pop(name, {}) + self.compare(parsers=self.parsers, want=entry, have=af_have) + if self.state in ["replaced", "overridden"]: + self.sort_commands(begin) + if len(self.commands) != begin or (not af_have and entry): + self.commands.insert( + begin, + self._tmplt.render( + {"afi": entry.get("afi"), "safi": entry.get("safi")}, + "address_family", + False, + ), + ) + + for name, entry in iteritems(hafs): + self.addcmd( + {"afi": entry.get("afi"), "safi": entry.get("safi")}, + "address_family", + True, + ) + + def _bgp_list_to_dict(self, data): + if "neighbor" in data: + for nbr in data["neighbor"]: + if "address_family" in nbr: + nbr["address_family"] = { + (x["afi"], x.get("safi")): x for x in nbr["address_family"] + } + data["neighbor"] = {x["name"]: x for x in data["neighbor"]} + return data diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/interfaces/interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/interfaces/interfaces.py index 2a0c18852..d13206109 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/interfaces/interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/interfaces/interfaces.py @@ -181,21 +181,33 @@ class Interfaces(ConfigBase): to the desired configuration """ commands = [] + not_in_have = set() + in_have = set() for each in have: for interface in want: - if each["name"] == interface["name"] or interface["name"] in each["name"]: + interface["name"] = normalize_interface(interface["name"]) + if each["name"] == interface["name"]: + in_have.add(interface["name"]) break + if interface["name"] != each["name"]: + not_in_have.add(interface["name"]) else: # We didn't find a matching desired state, which means we can # pretend we received an empty desired state. interface = dict(name=each["name"]) - commands.extend(self._clear_config(interface, each)) + kwargs = {"want": interface, "have": each} + commands.extend(self._clear_config(**kwargs)) continue have_dict = filter_dict_having_none_value(interface, each) - want = dict() - commands.extend(self._clear_config(want, have_dict)) + commands.extend(self._clear_config(dict(), have_dict)) commands.extend(self._set_config(interface, each)) + # Add the want interface that's not already configured in have interface + for each in not_in_have - in_have: + for every in want: + interface = "interface {0}".format(every["name"]) + if each and interface not in commands: + commands.extend(self._set_config(every, {})) # Remove the duplicate interface call commands = remove_duplicate_interface(commands) @@ -305,6 +317,17 @@ class Interfaces(ConfigBase): and want.get("duplex") != have.get("duplex") ): remove_command_from_config_list(interface, "duplex", commands) + + if interface_type.lower() in [ + "gigabitethernet", + "fourhundredgige", + "fiftygige", + "fortygige", + "hundredgige", + "twohundredgige", + "tengige", + "twentyfivegige", + ]: if have.get("mtu") and want.get("mtu") != have.get("mtu"): remove_command_from_config_list(interface, "mtu", commands) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py index c571d3fa0..da44bb709 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l2_interfaces/l2_interfaces.py @@ -262,12 +262,20 @@ class L2_Interfaces(ConfigBase): return commands + def _handle_deprecated(self, config): + if config.get("q_vlan"): + config["qvlan"] = config.get("q_vlan") + del config["q_vlan"] + return config + def _set_config(self, want, have, module): # Set the interface config based on the want and have config commands = [] interface = "interface " + want["name"] l2_protocol_bool = False # Get the diff b/w want and have + want = self._handle_deprecated(want) + have = self._handle_deprecated(have) diff = dict_diff(have, want) if diff: # For merging with already configured l2protocol @@ -286,7 +294,7 @@ class L2_Interfaces(ConfigBase): wants_native = diff.get("native_vlan") l2transport = diff.get("l2transport") - q_vlan = diff.get("q_vlan") + qvlan = diff.get("qvlan") encapsulation = diff.get("encapsulation") propagate = diff.get("propagate") if l2_protocol_bool is False: @@ -308,18 +316,16 @@ class L2_Interfaces(ConfigBase): ) add_command_to_config_list(interface, cmd, commands) - if q_vlan and "." in interface: - q_vlans = " ".join(map(str, want.get("q_vlan"))) - if q_vlans != have.get("q_vlan"): + if qvlan and "." in interface: + q_vlans = " ".join(map(str, want.get("qvlan"))) + if q_vlans != have.get("qvlan"): cmd = "dot1q vlan {0}".format(q_vlans) add_command_to_config_list(interface, cmd, commands) else: if l2transport or l2protocol: for each in l2protocol: each = dict(each) - if isinstance(each, dict) and "cpsv" in list( - each.keys(), - ): + if isinstance(each, dict) and each.get("cpsv"): cmd = "l2transport l2protocol {0} {1}".format( "cpsv", each.get("cpsv"), @@ -361,6 +367,8 @@ class L2_Interfaces(ConfigBase): def _clear_config(self, want, have): # Delete the interface config based on the want and have config commands = [] + want = self._handle_deprecated(want) + have = self._handle_deprecated(have) if want.get("name"): interface = "interface " + want["name"] @@ -375,7 +383,7 @@ class L2_Interfaces(ConfigBase): commands, ) - if have.get("q_vlan"): + if have.get("qvlan"): remove_command_from_config_list( interface, "encapsulation dot1q", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py index 98b7c5965..9b55e2f91 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/l3_interfaces/l3_interfaces.py @@ -11,6 +11,8 @@ created from __future__ import absolute_import, division, print_function +import copy + __metaclass__ = type @@ -119,7 +121,7 @@ class L3_Interfaces(ConfigBase): to the desired configuration """ want = self._module.params["config"] - have = existing_l3_interfaces_facts + have = copy.deepcopy(existing_l3_interfaces_facts) resp = self.set_state(want, have) return to_list(resp) @@ -308,8 +310,12 @@ class L3_Interfaces(ConfigBase): if want.get("ipv4"): for each in want.get("ipv4"): if each.get("address") != "dhcp": - ip_addr_want = validate_n_expand_ipv4(module, each) - each["address"] = ip_addr_want + each["address"] = validate_n_expand_ipv4(module, each) + + if have.get("ipv4"): + for each in have.get("ipv4"): + if each.get("address") != "dhcp": + each["address"] = validate_n_expand_ipv4(module, each) # Get the diff b/w want and have want_dict = dict_to_set(want) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lacp/lacp.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lacp/lacp.py index 8a6744e54..ee0a7768d 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lacp/lacp.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lacp/lacp.py @@ -137,6 +137,7 @@ class Lacp(ConfigBase): :returns: the commands necessary to migrate the current configuration to the desired configuration """ + commands = [] if self.state in ("merged", "replaced", "rendered") and not want: self._module.fail_json( msg="value of config parameter must not be empty for state {0}".format( @@ -148,7 +149,7 @@ class Lacp(ConfigBase): commands = self._state_deleted(want, have) elif self.state in ("merged", "rendered"): commands = self._state_merged(want, have) - elif self.state == "replaced": + elif self.state in ["replaced", "overridden"]: commands = self._state_replaced(want, have) return commands diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py index e4fda3c7c..a5c872f6f 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/lldp_global/lldp_global.py @@ -80,7 +80,6 @@ class Lldp_global(ConfigBase): commands.extend(self.set_config(existing_lldp_global_facts)) if commands and self.state in self.ACTION_STATES: - if not self._module.check_mode: self._connection.edit_config(commands) result["changed"] = True @@ -136,6 +135,7 @@ class Lldp_global(ConfigBase): :returns: the commands necessary to migrate the current configuration to the desired configuration """ + commands = [] state = self._module.params["state"] if state in ("merged", "replaced", "rendered") and not want: self._module.fail_json( @@ -148,7 +148,7 @@ class Lldp_global(ConfigBase): commands = self._state_deleted(want, have) elif state in ("merged", "rendered"): commands = self._state_merged(want, have) - elif state == "replaced": + elif state in ["replaced", "overridden"]: commands = self._state_replaced(want, have) return commands diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/logging_global/logging_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/logging_global/logging_global.py index ff790e548..d3d5223be 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/logging_global/logging_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/logging_global/logging_global.py @@ -178,7 +178,6 @@ class Logging_global(ResourceModule): self.addcmd(hentry, x, negate=True) def list_to_dict(self, config): - data = deepcopy(config) if "tls_servers" in data: data["tls_servers"] = {x["name"]: x for x in data["tls_servers"]} diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py index 05ce42472..16e0bc3e9 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ospfv3/ospfv3.py @@ -10,7 +10,6 @@ from __future__ import absolute_import, division, print_function __metaclass__ = type -from copy import deepcopy from ansible.module_utils.six import iteritems from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module import ( @@ -107,22 +106,11 @@ class Ospfv3(ResourceModule): haved = {k: v for k, v in iteritems(haved) if k in wantd or not wantd} wantd = {} - # delete processes first so we do run into "more than one" errors - if self.state == "deleted": - haved_del = deepcopy(haved) - want_process = {} - for k, t_want in iteritems(haved_del): - want_process["process_id"] = t_want.get("process_id") - if not (len(t_want) == 2 and not t_want.get("areas")): - self._compare(want=want_process, have=haved_del.get(k, {})) - if self.state == "overridden": - haved_del = deepcopy(haved) - want = {} - for k, t_want in iteritems(haved_del): + # if state is overridden, first remove processes that are in have but not in want + if self.state in ["overridden", "deleted"]: + for k, have in iteritems(haved): if k not in wantd: - want["process_id"] = t_want.get("process_id") - if not (len(t_want) == 2 and not t_want.get("areas")): - self._compare(want=want, have=haved_del.get(k, {})) + self.addcmd(have, "pid", True) for k, want in iteritems(wantd): self._compare(want=want, have=haved.pop(k, {})) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ping/ping.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ping/ping.py index ce2a5229c..587fbde98 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ping/ping.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/ping/ping.py @@ -84,7 +84,7 @@ class Ping: Returns the percent of packet loss, received packets, transmitted packets, and RTT data. """ - if type(ping_results) == list: + if isinstance(ping_results, list): ping_results = ping_results[0] ping_data = PingTemplate(lines=ping_results.splitlines()) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py index 9ee3e1a12..b69f2abd7 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/snmp_server/snmp_server.py @@ -281,7 +281,6 @@ class Snmp_server(ResourceModule): "users", "targets", ]: - wantx = want.get(x, {}) havex = have.get(x, {}) if "." in x: @@ -350,7 +349,6 @@ class Snmp_server(ResourceModule): return host_dict def list_to_dict(self, config): - data = deepcopy(config) if data.get("vrfs"): diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/static_routes/static_routes.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/static_routes/static_routes.py index b558f01af..ce8694389 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/static_routes/static_routes.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/config/static_routes/static_routes.py @@ -439,6 +439,57 @@ class Static_routes(ConfigBase): return commands + def _static_route_popper(self, want_afi, have_afi): + """ """ + commands = [] + + update_commands = [] + if not want_afi.get("routes", []): + commands.append( + "no address-family {0} {1}".format( + have_afi["afi"], + have_afi["safi"], + ), + ) + else: + for have_route in have_afi.get("routes", []): + want_route = ( + search_obj_in_list( + have_route["dest"], + want_afi.get("routes", []), + key="dest", + ) + or {} + ) + + rotated_want_next_hops = self.rotate_next_hops( + want_route.get("next_hops", {}), + ) + rotated_have_next_hops = self.rotate_next_hops( + have_route.get("next_hops", {}), + ) + + for key in rotated_want_next_hops.keys(): + if key in rotated_have_next_hops: + cmd = "no {0}".format(want_route["dest"]) + for item in key: + if "." in item or ":" in item or "/" in item: + cmd += " {0}".format(item) + else: + cmd += " vrf {0}".format(item) + update_commands.append(cmd) + if update_commands: + update_commands.insert( + 0, + "address-family {0} {1}".format( + have_afi["afi"], + have_afi["safi"], + ), + ) + commands.extend(update_commands) + + return commands + def _state_deleted(self, want, have): """The command generator when state is deleted @@ -460,12 +511,8 @@ class Static_routes(ConfigBase): or {} ) if have_afi: - commands.append( - "no address-family {0} {1}".format( - have_afi["afi"], - have_afi["safi"], - ), - ) + commands.extend(self._static_route_popper(want_afi, have_afi)) + if "vrf" in want and commands: commands.insert(0, "vrf {0}".format(want["vrf"])) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/__init__.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/bgp_templates.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/bgp_templates.py new file mode 100644 index 000000000..98889ae59 --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/bgp_templates/bgp_templates.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +# Copyright 2023 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +""" +The iosxr bgp_templates fact class +It is in this file the configuration is collected from the device +for a given resource, parsed, and the facts tree is populated +based on the configuration. +""" + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils + +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.argspec.bgp_templates.bgp_templates import ( + Bgp_templatesArgs, +) +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.rm_templates.bgp_templates import ( + Bgp_templatesTemplate, +) +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.utils.utils import ( + flatten_config, +) + + +class Bgp_templatesFacts(object): + """The iosxr bgp_templates facts class""" + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Bgp_templatesArgs.argument_spec + + def get_config(self, connection): + return connection.get("show running-config router bgp") + + def populate_facts(self, connection, ansible_facts, data=None): + """Populate the facts for Bgp_templates network resource + + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + + :rtype: dictionary + :returns: facts + """ + facts = {} + objs = [] + + if not data: + data = self.get_config(connection) + data = flatten_config(data, "neighbor-group") + # parse native config using the Bgp_templates template + bgp_templates_parser = Bgp_templatesTemplate(lines=data.splitlines(), module=self._module) + objs = bgp_templates_parser.parse() + if objs: + objs["neighbor"] = self._post_parse(objs).get( + "neighbor", + [], + ) + ansible_facts["ansible_network_resources"].pop("bgp_templates", None) + + params = utils.remove_empties( + bgp_templates_parser.validate_config(self.argument_spec, {"config": objs}, redact=True), + ) + + facts["bgp_templates"] = params.get("config", {}) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def _post_parse(self, data): + """Converts the intermediate data structure + to valid format as per argspec. + :param obj: dict + """ + if "neighbor" in data: + data["neighbor"] = sorted( + list(data["neighbor"].values()), + key=lambda k, s="name": k[s], + ) + for nbrg in data["neighbor"]: + if nbrg.get("address_family"): + nbrg["address_family"] = list(nbrg["address_family"].values()) + return data diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/facts.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/facts.py index 4d7e7b100..5cafa587d 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/facts.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/facts.py @@ -34,6 +34,9 @@ from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.bg from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.bgp_neighbor_address_family.bgp_neighbor_address_family import ( Bgp_neighbor_address_familyFacts, ) +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.bgp_templates.bgp_templates import ( + Bgp_templatesFacts, +) from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.hostname.hostname import ( HostnameFacts, ) @@ -122,6 +125,7 @@ FACT_RESOURCE_SUBSETS = dict( ntp_global=Ntp_globalFacts, snmp_server=Snmp_serverFacts, hostname=HostnameFacts, + bgp_templates=Bgp_templatesFacts, ) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py index e89dbca2e..5efcd6084 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/interfaces/interfaces.py @@ -92,24 +92,24 @@ class InterfacesFacts(object): config = deepcopy(spec) match = re.search(r"^(\S+)", conf) - - intf = match.group(1) - if match.group(1).lower() == "preconfigure": - match = re.search(r"^(\S+) (.*)", conf) - if match: - intf = match.group(2) - - if get_interface_type(intf) == "unknown": - return {} - # populate the facts from the configuration - config["name"] = intf - config["description"] = utils.parse_conf_arg(conf, "description") - if utils.parse_conf_arg(conf, "speed"): - config["speed"] = int(utils.parse_conf_arg(conf, "speed")) - if utils.parse_conf_arg(conf, "mtu"): - config["mtu"] = int(utils.parse_conf_arg(conf, "mtu")) - config["duplex"] = utils.parse_conf_arg(conf, "duplex") - enabled = utils.parse_conf_cmd_arg(conf, "shutdown", False) - config["enabled"] = enabled if enabled is not None else True - - return utils.remove_empties(config) + if match: + intf = match.group(1) + if match.group(1).lower() == "preconfigure": + match = re.search(r"^(\S+) (.*)", conf) + if match: + intf = match.group(2) + + if get_interface_type(intf) == "unknown": + return {} + # populate the facts from the configuration + config["name"] = intf + config["description"] = utils.parse_conf_arg(conf, "description") + if utils.parse_conf_arg(conf, "speed"): + config["speed"] = int(utils.parse_conf_arg(conf, "speed")) + if utils.parse_conf_arg(conf, "mtu"): + config["mtu"] = int(utils.parse_conf_arg(conf, "mtu")) + config["duplex"] = utils.parse_conf_arg(conf, "duplex") + enabled = utils.parse_conf_cmd_arg(conf, "shutdown", False) + config["enabled"] = enabled if enabled is not None else True + + return utils.remove_empties(config) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py index cdb1d72cf..f562e20f8 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l2_interfaces/l2_interfaces.py @@ -93,18 +93,17 @@ class L2_InterfacesFacts(object): """ config = deepcopy(spec) match = re.search(r"^(\S+)", conf) + if match: + intf = match.group(1) - intf = match.group(1) + if intf.lower() == "preconfigure": + match = re.search(r"^(\S+) (.*)", conf) + if match: + intf = match.group(2) - if match.group(1).lower() == "preconfigure": - match = re.search(r"^(\S+) (.*)", conf) - if match: - intf = match.group(2) + if get_interface_type(intf) == "unknown": + return {} - if get_interface_type(intf) == "unknown": - return {} - - if intf.lower().startswith("gi"): config["name"] = intf # populate the facts from the configuration @@ -128,11 +127,11 @@ class L2_InterfacesFacts(object): encapsulation.group(2).split("second-dot1q ")[1], ) else: - config["q_vlan"] = [] + config["qvlan"] = [] if dot1q: - config["q_vlan"].append(int(dot1q.split(" ")[0])) + config["qvlan"].append(dot1q.split(" ")[0]) if len(dot1q.split(" ")) > 1: - config["q_vlan"].append(int(dot1q.split(" ")[2])) + config["qvlan"].append(dot1q.split(" ")[2]) if utils.parse_conf_cmd_arg(conf, "l2transport", True): config["l2transport"] = True diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py index bf5ce5f85..b4dba858e 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/l3_interfaces/l3_interfaces.py @@ -27,6 +27,7 @@ from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.argspec. ) from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.utils.utils import ( get_interface_type, + netmask_to_cidr, ) @@ -93,39 +94,45 @@ class L3_InterfacesFacts(object): """ config = deepcopy(spec) match = re.search(r"^(\S+)", conf) - - intf = match.group(1) - if match.group(1).lower() == "preconfigure": - match = re.search(r"^(\S+) (.*)", conf) - if match: - intf = match.group(2) - - if get_interface_type(intf) == "unknown": - return {} - - # populate the facts from the configuration - config["name"] = intf - - # Get the configured IPV4 details - ipv4 = [] - ipv4_all = re.findall(r"ipv4 address (\S+.*)", conf) - for each in ipv4_all: - each_ipv4 = dict() - if "secondary" in each: - each_ipv4["address"] = each.split(" secondary")[0] - each_ipv4["secondary"] = True - else: - each_ipv4["address"] = each - ipv4.append(each_ipv4) - config["ipv4"] = ipv4 - - # Get the configured IPV6 details - ipv6 = [] - ipv6_all = re.findall(r"ipv6 address (\S+)", conf) - for each in ipv6_all: - each_ipv6 = dict() - each_ipv6["address"] = each - ipv6.append(each_ipv6) - config["ipv6"] = ipv6 - - return utils.remove_empties(config) + if match: + intf = match.group(1) + if match.group(1).lower() == "preconfigure": + match = re.search(r"^(\S+) (.*)", conf) + if match: + intf = match.group(2) + + if get_interface_type(intf) == "unknown": + return {} + + # populate the facts from the configuration + config["name"] = intf + + # Get the configured IPV4 details + ipv4 = [] + ipv4_all = re.findall(r"ipv4 address (\S+.*)", conf) + for each in ipv4_all: + each_ipv4 = dict() + if "secondary" in each: + each_ipv4["address"] = self.format_ipv4(each.split(" secondary")[0]) + each_ipv4["secondary"] = True + elif "secondary" not in each and "dhcp" not in each: + each_ipv4["address"] = self.format_ipv4(each) + elif "dhcp" in each: + each_ipv4["address"] = "dhcp" + ipv4.append(each_ipv4) + config["ipv4"] = ipv4 + + # Get the configured IPV6 details + ipv6 = [] + ipv6_all = re.findall(r"ipv6 address (\S+)", conf) + for each in ipv6_all: + each_ipv6 = dict() + each_ipv6["address"] = each + ipv6.append(each_ipv6) + config["ipv6"] = ipv6 + return utils.remove_empties(config) + + def format_ipv4(self, address): + if address.split(" ")[1]: + cidr_val = netmask_to_cidr(address.split(" ")[1]) + return address.split(" ")[0] + "/" + cidr_val diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/legacy/base.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/legacy/base.py index 9e346d36c..cc657f42a 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/legacy/base.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/legacy/base.py @@ -30,7 +30,6 @@ from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.iosxr im class FactsBase(object): - COMMANDS = frozenset() def __init__(self, module): @@ -58,8 +57,7 @@ class Default(FactsBase): device_info = resp["device_info"] platform_facts["system"] = device_info["network_os"] - - for item in ("model", "image", "version", "platform", "hostname"): + for item in ("serialnum", "model", "image", "version", "platform", "hostname"): val = device_info.get("network_os_%s" % item) if val: platform_facts[item] = val @@ -71,13 +69,14 @@ class Default(FactsBase): class Hardware(FactsBase): - - COMMANDS = ["dir /all", "show memory summary"] + COMMANDS = ["dir /all", "show memory summary", "show processes cpu | include CPU utilization"] def populate(self): super(Hardware, self).populate() + data = self.responses[0] self.facts["filesystems"] = self.parse_filesystems(data) + self.facts["cpu_utilization"] = self.parse_cpu_utilization(self.responses[2]) data = self.responses[1] match = re.search(r"Physical Memory: (\d+)M total \((\d+)", data) @@ -88,9 +87,29 @@ class Hardware(FactsBase): def parse_filesystems(self, data): return re.findall(r"^Directory of (\S+)", data, re.M) + def parse_cpu_utilization(self, data): + facts = {} + cpu_utilization_regex = re.compile( + r""" + ^CPU\sutilization\sfor\sone\sminute:(\s(?P<one_min>[0-9]+)?%)?; + \sfive\sminutes:\s(?P<five_mins>[0-9]+)?%; + \sfifteen\sminutes:\s(?P<fifteen_mins>[0-9]+)?% + """, + re.VERBOSE, + ) -class Config(FactsBase): + for line in data.split("\n"): + cpu_utilization_match = cpu_utilization_regex.match(line) + if cpu_utilization_match: + facts["one_minute"] = int(cpu_utilization_match.group("one_min")) + facts["five_minutes"] = int(cpu_utilization_match.group("five_mins")) + facts["fifteen_minutes"] = int(cpu_utilization_match.group("fifteen_mins")) + + return facts + + +class Config(FactsBase): COMMANDS = ["show running-config"] def populate(self): @@ -99,7 +118,6 @@ class Config(FactsBase): class Interfaces(FactsBase): - COMMANDS = [ "show interfaces", "show ipv6 interface", diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py index 240ecb4d5..b5c2693f1 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv2/ospfv2.py @@ -19,7 +19,7 @@ import re from copy import deepcopy from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network_template import ( +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import ( NetworkTemplate, ) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py index 49302ce9b..d34f15fbd 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/facts/ospfv3/ospfv3.py @@ -13,7 +13,7 @@ import re from copy import deepcopy from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import utils -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network_template import ( +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import ( NetworkTemplate, ) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/iosxr.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/iosxr.py index ea15fdfcd..c7498aa19 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/iosxr.py @@ -36,7 +36,6 @@ import re from difflib import Differ from ansible.module_utils._text import to_bytes, to_text -from ansible.module_utils.basic import env_fallback from ansible.module_utils.connection import Connection, ConnectionError from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.netconf import ( NetconfConnection, @@ -146,7 +145,6 @@ def build_xml_subtree(container_ele, xmap, param=None, opcode=None): if ( opcode in ("delete", "merge") and meta.get("operation", "unknown") == "edit" ) or meta.get("operation", None) is None: - if meta.get("tag", False) is True: if parent.tag == container_ele.tag: if meta.get("ns", False) is True: @@ -430,7 +428,6 @@ def load_config( nc_get_filter=None, label=None, ): - conn = get_connection(module) diff = None diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/address_family.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/address_family.py deleted file mode 100644 index 0d5393407..000000000 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/address_family.py +++ /dev/null @@ -1,133 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -import re - -from ansible.module_utils.six import iteritems -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import to_list - -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers import ( - CliProvider, -) - - -class AddressFamily(CliProvider): - def render(self, config=None): - commands = list() - safe_list = list() - - router_context = "router bgp %s" % self.get_value("config.bgp_as") - context_config = None - - for item in self.get_value("config.address_family"): - context = "address-family %s %s" % (item["afi"], item["safi"]) - context_commands = list() - - if config: - context_path = [router_context, context] - context_config = self.get_config_context( - config, - context_path, - indent=1, - ) - - for key, value in iteritems(item): - if value is not None: - meth = getattr(self, "_render_%s" % key, None) - if meth: - resp = meth(item, context_config) - if resp: - context_commands.extend(to_list(resp)) - - if context_commands: - commands.append(context) - commands.extend(context_commands) - commands.append("exit") - - safe_list.append(context) - - if config: - resp = self._negate_config(config, safe_list) - commands.extend(resp) - - return commands - - def _negate_config(self, config, safe_list=None): - commands = list() - matches = re.findall(r"(address-family .+)$", config, re.M) - for item in set(matches).difference(safe_list): - commands.append("no %s" % item) - return commands - - def _render_networks(self, item, config=None): - commands = list() - safe_list = list() - - for entry in item["networks"]: - network = entry["prefix"] - if entry["masklen"]: - network = "%s/%s" % (entry["prefix"], entry["masklen"]) - safe_list.append(network) - - cmd = "network %s" % network - - if entry["route_map"]: - cmd += " route-policy %s" % entry["route_map"] - - if not config or cmd not in config: - commands.append(cmd) - - if config and self.params["operation"] == "replace": - matches = re.findall(r"network (\S+)", config, re.M) - for entry in set(matches).difference(safe_list): - commands.append("no network %s" % entry) - - return commands - - def _render_redistribute(self, item, config=None): - commands = list() - safe_list = list() - - for entry in item["redistribute"]: - option = entry["protocol"] - - cmd = "redistribute %s" % entry["protocol"] - - if entry["id"] and entry["protocol"] in ( - "ospf", - "eigrp", - "isis", - "ospfv3", - ): - cmd += " %s" % entry["id"] - option += " %s" % entry["id"] - - if entry["metric"]: - cmd += " metric %s" % entry["metric"] - - if entry["route_map"]: - cmd += " route-policy %s" % entry["route_map"] - - if not config or cmd not in config: - commands.append(cmd) - - safe_list.append(option) - - if self.params["operation"] == "replace": - if config: - matches = re.findall( - r"redistribute (\S+)(?:\s*)(\d*)", - config, - re.M, - ) - for i in range(0, len(matches)): - matches[i] = " ".join(matches[i]).strip() - for entry in set(matches).difference(safe_list): - commands.append("no redistribute %s" % entry) - - return commands diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/neighbors.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/neighbors.py deleted file mode 100644 index 29e4a1d2e..000000000 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/neighbors.py +++ /dev/null @@ -1,136 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -import re -import socket - -from ansible.module_utils.six import iteritems -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import to_list - -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers import ( - CliProvider, -) - - -class Neighbors(CliProvider): - def render(self, config=None): - commands = list() - safe_list = list() - - router_context = "router bgp %s" % self.get_value("config.bgp_as") - context_config = None - - for item in self.get_value("config.neighbors"): - context_commands = list() - - neighbor = item["neighbor"] - - try: - socket.inet_aton(neighbor) - context = "neighbor %s" % neighbor - except socket.error: - context = "neighbor-group %s" % neighbor - - if config: - context_path = [router_context, context] - context_config = self.get_config_context( - config, - context_path, - indent=1, - ) - - for key, value in iteritems(item): - if value is not None: - meth = getattr(self, "_render_%s" % key, None) - if meth: - resp = meth(item, context_config) - if resp: - context_commands.extend(to_list(resp)) - - if context_commands: - commands.append(context) - commands.extend(context_commands) - commands.append("exit") - - safe_list.append(context) - - if config and safe_list: - commands.extend(self._negate_config(config, safe_list)) - - return commands - - def _negate_config(self, config, safe_list=None): - commands = list() - matches = re.findall(r"(neighbor \S+)", config, re.M) - for item in set(matches).difference(safe_list): - commands.append("no %s" % item) - return commands - - def _render_remote_as(self, item, config=None): - cmd = "remote-as %s" % item["remote_as"] - if not config or cmd not in config: - return cmd - - def _render_description(self, item, config=None): - cmd = "description %s" % item["description"] - if not config or cmd not in config: - return cmd - - def _render_enabled(self, item, config=None): - cmd = "shutdown" - if item["enabled"] is True: - cmd = "no %s" % cmd - if not config or cmd not in config: - return cmd - - def _render_update_source(self, item, config=None): - cmd = "update-source %s" % item["update_source"].replace(" ", "") - if not config or cmd not in config: - return cmd - - def _render_password(self, item, config=None): - cmd = "password %s" % item["password"] - if not config or cmd not in config: - return cmd - - def _render_ebgp_multihop(self, item, config=None): - cmd = "ebgp-multihop %s" % item["ebgp_multihop"] - if not config or cmd not in config: - return cmd - - def _render_tcp_mss(self, item, config=None): - cmd = "tcp mss %s" % item["tcp_mss"] - if not config or cmd not in config: - return cmd - - def _render_advertisement_interval(self, item, config=None): - cmd = "advertisement-interval %s" % item["advertisement_interval"] - if not config or cmd not in config: - return cmd - - def _render_neighbor_group(self, item, config=None): - cmd = "use neighbor-group %s" % item["neighbor_group"] - if not config or cmd not in config: - return cmd - - def _render_timers(self, item, config): - """generate bgp timer related configuration""" - keepalive = item["timers"]["keepalive"] - holdtime = item["timers"]["holdtime"] - min_neighbor_holdtime = item["timers"]["min_neighbor_holdtime"] - - if keepalive and holdtime: - cmd = "timers %s %s" % (keepalive, holdtime) - if min_neighbor_holdtime: - cmd += " %s" % min_neighbor_holdtime - if not config or cmd not in config: - return cmd - else: - raise ValueError( - "required both options for timers: keepalive and holdtime", - ) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/process.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/process.py deleted file mode 100644 index bd2c08ae1..000000000 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/cli/config/bgp/process.py +++ /dev/null @@ -1,121 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -import re - -from ansible.module_utils.six import iteritems -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import to_list - -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.cli.config.bgp.address_family import ( - AddressFamily, -) -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.cli.config.bgp.neighbors import ( - Neighbors, -) -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers import ( - CliProvider, - register_provider, -) - - -REDISTRIBUTE_PROTOCOLS = [ - "ospf", - "ospfv3", - "eigrp", - "isis", - "static", - "connected", - "lisp", - "mobile", - "rip", - "subscriber", -] - - -@register_provider("iosxr", "iosxr_bgp") -class Provider(CliProvider): - def render(self, config=None): - commands = list() - - existing_as = None - if config: - match = re.search(r"router bgp (\d+)", config, re.M) - if match: - existing_as = match.group(1) - - operation = self.params["operation"] - - context = None - - if self.params["config"]: - context = "router bgp %s" % self.get_value("config.bgp_as") - - if operation == "delete": - if existing_as: - commands.append("no router bgp %s" % existing_as) - elif context: - commands.append("no %s" % context) - - else: - if operation == "replace": - if existing_as and int(existing_as) != self.get_value( - "config.bgp_as", - ): - # The negate command has to be committed before new BGP AS is used. - self.connection.edit_config( - "no router bgp %s" % existing_as, - ) - config = None - - elif operation == "override": - if existing_as: - # The negate command has to be committed before new BGP AS is used. - self.connection.edit_config( - "no router bgp %s" % existing_as, - ) - config = None - - context_commands = list() - - for key, value in iteritems(self.get_value("config")): - if value is not None: - meth = getattr(self, "_render_%s" % key, None) - if meth: - resp = meth(config) - if resp: - context_commands.extend(to_list(resp)) - - if context and context_commands: - commands.append(context) - commands.extend(context_commands) - commands.append("exit") - - return commands - - def _render_router_id(self, config=None): - cmd = "bgp router-id %s" % self.get_value("config.router_id") - if not config or cmd not in config: - return cmd - - def _render_log_neighbor_changes(self, config=None): - cmd = "bgp log neighbor changes" - log_neighbor_changes = self.get_value("config.log_neighbor_changes") - if log_neighbor_changes is True: - if not config or cmd not in config: - return "%s detail" % cmd - elif log_neighbor_changes is False: - if config and cmd in config: - return "%s disable" % cmd - - def _render_neighbors(self, config): - """generate bgp neighbor configuration""" - return Neighbors(self.params).render(config) - - def _render_address_family(self, config): - """generate address-family configuration""" - return AddressFamily(self.params).render(config) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/module.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/module.py deleted file mode 100644 index afb9b9e7e..000000000 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/module.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -from ansible.module_utils._text import to_text -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.connection import Connection - -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers import providers - - -class NetworkModule(AnsibleModule): - - fail_on_missing_provider = True - - def __init__(self, connection=None, *args, **kwargs): - super(NetworkModule, self).__init__(*args, **kwargs) - - if connection is None: - connection = Connection(self._socket_path) - - self.connection = connection - - @property - def provider(self): - if not hasattr(self, "_provider"): - capabilities = self.from_json(self.connection.get_capabilities()) - - network_os = capabilities["device_info"]["network_os"] - network_api = capabilities["network_api"] - - if network_api == "cliconf": - connection_type = "network_cli" - - cls = providers.get( - network_os, - self._name.split(".")[-1], - connection_type, - ) - - if not cls: - msg = "unable to find suitable provider for network os %s" % network_os - if self.fail_on_missing_provider: - self.fail_json(msg=msg) - else: - self.warn(msg) - - obj = cls(self.params, self.connection, self.check_mode) - - setattr(self, "_provider", obj) - - return getattr(self, "_provider") - - def get_facts(self, subset=None): - try: - self.provider.get_facts(subset) - except Exception as exc: - self.fail_json(msg=to_text(exc)) - - def edit_config(self, config_filter=None): - current_config = self.connection.get_config(flags=config_filter) - try: - commands = self.provider.edit_config(current_config) - changed = bool(commands) - return {"commands": commands, "changed": changed} - except Exception as exc: - self.fail_json(msg=to_text(exc)) diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/providers.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/providers.py deleted file mode 100644 index 94220ffaf..000000000 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/providers/providers.py +++ /dev/null @@ -1,127 +0,0 @@ -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type -import json - -from threading import RLock - -from ansible.module_utils.six import itervalues -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.config import ( - NetworkConfig, -) -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import to_list - - -_registered_providers = {} -_provider_lock = RLock() - - -def register_provider(network_os, module_name): - def wrapper(cls): - _provider_lock.acquire() - try: - if network_os not in _registered_providers: - _registered_providers[network_os] = {} - for ct in cls.supported_connections: - if ct not in _registered_providers[network_os]: - _registered_providers[network_os][ct] = {} - for item in to_list(module_name): - for entry in itervalues(_registered_providers[network_os]): - entry[item] = cls - finally: - _provider_lock.release() - return cls - - return wrapper - - -def get(network_os, module_name, connection_type): - network_os_providers = _registered_providers.get(network_os) - if network_os_providers is None: - raise ValueError("unable to find a suitable provider for this module") - if connection_type not in network_os_providers: - raise ValueError("provider does not support this connection type") - elif module_name not in network_os_providers[connection_type]: - raise ValueError("could not find a suitable provider for this module") - return network_os_providers[connection_type][module_name] - - -class ProviderBase(object): - - supported_connections = () - - def __init__(self, params, connection=None, check_mode=False): - self.params = params - self.connection = connection - self.check_mode = check_mode - - @property - def capabilities(self): - if not hasattr(self, "_capabilities"): - resp = self.from_json(self.connection.get_capabilities()) - setattr(self, "_capabilities", resp) - return getattr(self, "_capabilities") - - def get_value(self, path): - params = self.params.copy() - for key in path.split("."): - params = params[key] - return params - - def get_facts(self, subset=None): - raise NotImplementedError(self.__class__.__name__) - - def edit_config(self): - raise NotImplementedError(self.__class__.__name__) - - -class CliProvider(ProviderBase): - - supported_connections = ("network_cli",) - - @property - def capabilities(self): - if not hasattr(self, "_capabilities"): - resp = self.from_json(self.connection.get_capabilities()) - setattr(self, "_capabilities", resp) - return getattr(self, "_capabilities") - - def get_config_context(self, config, path, indent=1): - if config is not None: - netcfg = NetworkConfig(indent=indent, contents=config) - try: - config = netcfg.get_block_config(to_list(path)) - except ValueError: - config = None - return config - - def render(self, config=None): - raise NotImplementedError(self.__class__.__name__) - - def cli(self, command): - try: - if not hasattr(self, "_command_output"): - setattr(self, "_command_output", {}) - return self._command_output[command] - except KeyError: - out = self.connection.get(command) - try: - out = json.loads(out) - except ValueError: - pass - self._command_output[command] = out - return out - - def get_facts(self, subset=None): - return self.populate() - - def edit_config(self, config=None): - commands = self.render(config) - if commands and self.check_mode is False: - self.connection.edit_config(commands) - return commands diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py index a1d9bfda8..f5ced0b0b 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_address_family.py @@ -74,7 +74,6 @@ def _tmpl_bgp_dampening(config_data): def _tmpl_maximum_paths_ibgp(config_data): - ibgp_conf = config_data.get("maximum_paths", {}).get("ibgp", {}) if ibgp_conf: command = "maximum-paths ibgp" @@ -97,7 +96,6 @@ def _tmpl_maximum_paths_ibgp(config_data): def _tmpl_maximum_paths_ebgp(config_data): - ebgp_conf = config_data.get("maximum_paths", {}).get("ebgp", {}) if ebgp_conf: command = "maximum-paths ebgp" @@ -111,7 +109,6 @@ def _tmpl_maximum_paths_ebgp(config_data): def _tmpl_maximum_paths_eibgp(config_data): - eibgp_conf = config_data.get("maximum_paths", {}).get("eibgp", {}) if eibgp_conf: command = "maximum-paths ebgp" @@ -137,7 +134,6 @@ def _tmpl_nexthop(config_data): nexthop_conf = config_data.get("nexthop", {}) commands = [] if nexthop_conf: - if "resolution_prefix_length_minimum" in nexthop_conf: command = "nexthop resolution prefix-length minimum " + str( nexthop_conf["resolution_prefix_length_minimum"], diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_global.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_global.py index f584d13f5..c1a5962c7 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_global.py @@ -32,6 +32,21 @@ def _tmplt_confederation_peers(config_data): return cmds +def _templ_local_as(config_data): + conf = config_data.get("local_as", {}) + if conf.get("value"): + command = "local-as " + str(conf.get("value", {})) + if "no_prepend" in conf: + if "replace_as" in conf.get("no_prepend", {}): + if "dual_as" in conf.get("no_prepend", {}).get("replace_as", {}): + command += " no-prepend replace-as dual-as" + elif "set" in conf.get("no_prepend", {}).get("replace_as", {}): + command += " no-prepend replace-as" + elif "set" in conf.get("no_prepend", {}): + command += " no-prepend" + return command + + class Bgp_globalTemplate(NetworkTemplate): def __init__(self, lines=None, module=None): super(Bgp_globalTemplate, self).__init__( @@ -2052,10 +2067,12 @@ class Bgp_globalTemplate(NetworkTemplate): r""" \s+(?P<nbr_address>neighbor\s\S+) \s(?P<local_as>local-as\s\S+) + (\s(?P<no_prepend>no-prepend))? + (\s(?P<replace_as>replace-as))? + (\s(?P<dual_as>dual-as))? $""", re.VERBOSE, ), - "setval": "local-as {{ local_as.value }}", - "compval": "local_as.value", + "setval": _templ_local_as, "result": { "vrfs": { '{{ "vrf_" + vrf|d() }}': { @@ -2063,6 +2080,14 @@ class Bgp_globalTemplate(NetworkTemplate): "{{nbr_address.split(" ")[1]}}": { "local_as": { "value": "{{ local_as.split(" ")[1] }}", + "no_prepend": + { + "set": "{{ True if no_prepend is defined and replace_as is undefined and dual_as is undefined else None}}", + "replace_as": { + "set": "{{ True if replace_as is defined and dual_as is undefined}}", + "dual_as": "{{ not not dual_as}}", + }, + }, }, }, }, @@ -2152,6 +2177,55 @@ class Bgp_globalTemplate(NetworkTemplate): }, }, { + "name": "password_inheritance_disable", + "getval": re.compile( + r""" + \s+(?P<nbr_address>neighbor\s\S+) + \s(?P<password>password\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "password inheritance-disable", + "compval": "password.inheritance_disable", + "result": { + "vrfs": { + '{{ "vrf_" + vrf|d() }}': { + "neighbors": { + "{{nbr_address.split(" ")[1]}}": { + "password": { + "inheritance_disable": "{{ True if password is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "password_encrypted", + "getval": re.compile( + r""" + \s+(?P<nbr_address>neighbor\s\S+) + \spassword\sencrypted + \s(?P<password>\S+) + $""", re.VERBOSE, + ), + "setval": "password encrypted {{password.encrypted}}", + "compval": "password.encrypted", + "result": { + "vrfs": { + '{{ "vrf_" + vrf|d() }}': { + "neighbors": { + "{{nbr_address.split(" ")[1]}}": { + "password": { + "encrypted": "{{ password }}", + }, + }, + }, + }, + }, + }, + }, + { "name": "receive_buffer_size", "getval": re.compile( r""" @@ -2360,6 +2434,52 @@ class Bgp_globalTemplate(NetworkTemplate): }, }, { + "name": "use.neighbor_group", + "getval": re.compile( + r""" + \s+(?P<nbr_address>neighbor\s\S+) + \suse\sneighbor-group\s(?P<neighbor_group>\S+) + $""", re.VERBOSE, + ), + "setval": "use neighbor-group {{ use.neighbor_group }}", + "result": { + "vrfs": { + '{{ "vrf_" + vrf|d() }}': { + "neighbors": { + "{{nbr_address.split(" ")[1]}}": { + "use": { + "neighbor_group": "{{ neighbor_group }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "use.session_group", + "getval": re.compile( + r""" + \s+(?P<nbr_address>neighbor\s\S+) + \suse\ssession-group\s(?P<session_group>\S+) + $""", re.VERBOSE, + ), + "setval": "use session-group {{ use.session_group }}", + "result": { + "vrfs": { + '{{ "vrf_" + vrf|d() }}': { + "neighbors": { + "{{nbr_address.split(" ")[1]}}": { + "use": { + "session_group": "{{ session_group }}", + }, + }, + }, + }, + }, + }, + }, + { "name": "update_source", "getval": re.compile( r""" diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_templates.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_templates.py new file mode 100644 index 000000000..f0274944c --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/bgp_templates.py @@ -0,0 +1,2816 @@ +# -*- coding: utf-8 -*- +# Copyright 2023 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +""" +The Bgp_templates parser templates file. This contains +a list of parser definitions and associated functions that +facilitates both facts gathering and native command generation for +the given network resource. +""" + +import re + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.network_template import ( + NetworkTemplate, +) + + +UNIQUE_NEIB_ADD = "{{ nbr_address }}" + + +def _tmpl_maximum_prefix(config_data): + conf = config_data.get("maximum_prefix", {}) + if conf: + command = "maximum-prefix" + if "max_limit" in conf: + command += " " + str(conf["max_limit"]) + if "threshold_value" in conf: + command += " " + str(conf["threshold_value"]) + if "restart" in conf: + command += " restart " + str(conf["restart"]) + elif "warning_only" in conf: + command += " warning-only" + elif "discard_extra_paths" in conf: + command += " discard-extra-paths" + + return command + + +def _tmpl_soft_reconfiguration(config_data): + conf = config_data.get("soft_reconfiguration", {}) + if conf: + command = "soft-reconfiguration " + if "inbound" in conf: + command += "inbound" + if "set" in conf["inbound"]: + pass + elif "always" in conf["inbound"]: + command += " always" + if "inheritance_disable" in conf["inbound"]: + command += " inheritance-disable" + + return command + + +def _tmpl_remove_private_AS(config_data): + conf = config_data.get("remove_private_AS", {}) + if conf: + command = "remove-private-AS" + if "inbound" in conf: + command += " inbound" + if "entire_aspath" in conf: + command += " entire-aspath" + if "inheritance_disable" in conf: + command += " inheritance-disable" + return command + + +def _templ_local_as(config_data): + conf = config_data.get("local_as", {}) + if conf.get("value"): + command = "local-as " + str(conf.get("value", {})) + if "no_prepend" in conf: + command = "local-as" + if "replace_as" in conf.get("no_prepend", {}): + if "dual_as" in conf.get("no_prepend", {}).get("replace_as", {}): + command += " no-prepend replace-as dual-as" + elif "set" in conf.get("no_prepend", {}).get("replace_as", {}): + command += " no-prepend replace-as" + elif "set" in conf.get("no_prepend", {}): + command += " no-prepend" + return command + + +class Bgp_templatesTemplate(NetworkTemplate): + def __init__(self, lines=None, module=None): + super(Bgp_templatesTemplate, self).__init__( + lines=lines, + tmplt=self, + module=module, + ) + + # fmt: off + PARSERS = [ + { + "name": "router", + "getval": re.compile( + r""" + ^router\s + bgp + \s(?P<as_num>\S+) + $""", + re.VERBOSE, + ), + "setval": "router bgp {{ as_number }}", + "compval": "as_number", + "result": {"as_number": "{{ as_num }}"}, + "shared": True, + }, + { + "name": "address_family", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + (?P<address_family>\s+address-family\s(?P<afi>\S+)\s(?P<safi>\S+)) + $""", re.VERBOSE, + ), + "setval": "address-family {{ afi}} {{safi}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "afi": "{{ afi}}", + "safi": "{{safi}}", + }, + }, + }, + }, + }, + "shared": True, + }, + { + "name": "neighbor_group", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + $""", re.VERBOSE, + ), + "setval": "neighbor-group {{ name}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "name": UNIQUE_NEIB_ADD, + }, + }, + }, + "shared": True, + }, + { + "name": "signalling", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sSignalling(?P<signalling>) + (\sbgp\sdisable(?P<b_disable>))? + (\sldp\sdisable(?P<l_disable>))? + $""", re.VERBOSE, + ), + "setval": "{{ 'signalling bgp disable' if signalling.bgp_disable else 'signalling ldp disable' }} ", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "signalling": { + "bgp_disable": "{{ True if b_disable is defined }}", + "ldp_disable": "{{ True if l_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "advertise.local_labeled_route.set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + (?P<a_Set>\sadvertise\slocal-labeled-route(?P<a_set>)) + $""", re.VERBOSE, + ), + "setval": "advertise local-labeled-route", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "advertise": { + "local_labeled_route": { + "set": "{{ True if a_set is defined}}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "advertise.local_labeled_route.disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sadvertise + (\slocal-labeled-route\sdisable(?P<l_disable>))? + $""", re.VERBOSE, + ), + "setval": "advertise local-labeled-route disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "advertise": { + "local_labeled_route": { + "disable": "{{ True if l_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "advertise.permanent_network", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sadvertise + (\spermanent-network(?P<set>))? + $""", re.VERBOSE, + ), + "setval": "advertise permanent-network", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "advertise": { + "permanent_network": "{{ True if set is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "aigp.set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + (?P<aigp>\saigp) + $""", re.VERBOSE, + ), + "setval": "aigp", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "aigp": { + "set": "{{ True if aigp is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "aigp.disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \saigp(?P<aigp>) + (\sdisable(?P<disable>)) + $""", re.VERBOSE, + ), + "setval": "aigp disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "aigp": { + "disable": "{{ True if disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "aigp.send_med", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \saigp(?P<aigp>) + (\ssend\smed(?P<send_med>))? + (\ssend\smed\sdisable(?P<send_disable>))? + $""", re.VERBOSE, + ), + "setval": "'aigp send med disable' if {{aigp.send_med.disable}} is defined else 'aigp send med'", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "aigp": { + "send_med": { + "set": "{{ True if send_med is defined }}", + "disable": "{{ True if send_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "aigp.send_cost_community_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \saigp(?P<aigp>) + (\ssend\scost-community\sdisable(?P<cc_disable>))? + $""", re.VERBOSE, + ), + "setval": "aigp send cost-community disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "aigp": { + "send_cost_community_disable": "{{True if cc_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "allowas_in", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sallowas-in(?P<allowas_in>)(\s(?P<value>\S+))? + $""", re.VERBOSE, + ), + "setval": "allowas-in {{allowas_in.value if allowas_in.value is defined }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "allowas_in": { + "set": "{{True if allowas_in is defined and value is not defined}}", + "value": "{{value }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "as_override", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sas-override(?P<as_override>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "as-override{{' inheritance-disable' if as_override.inheritance_disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "as_override": { + "set": "{{True if as_override is defined " + "and inheritance_disable is not defined}}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "bestpath_origin_as_allow_invalid", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbestpath\sorigin-as\sallow\sinvalid(?P<invalid>) + $""", re.VERBOSE, + ), + "setval": "bestpath origin-as allow invalid", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "bestpath_origin_as_allow_invalid": "{{ True if invalid is defined}}", + }, + }, + }, + }, + }, + }, + { + "name": "capability_orf_prefix", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability\sorf\sprefix\s(?P<capability_orf_prefix>\S+) + $""", re.VERBOSE, + ), + "setval": "capability orf prefix {{capability_orf_prefix }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "capability_orf_prefix": "{{capability_orf_prefix}}", + }, + }, + }, + }, + }, + }, + { + "name": "default_originate.set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+default-originate(?P<default_originate>) + $""", re.VERBOSE, + ), + "setval": "default-originate", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "default_originate": { + "set": "{{True if default_originate is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "default_originate.route_policy", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+default-originate(?P<default_originate>) + (\sroute-policy\s(?P<route_policy>\S+))? + $""", re.VERBOSE, + ), + "setval": "default-originate route-policy {{default_originate.route_policy}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "default_originate": { + "route_policy": "{{route_policy}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "default_originate.inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+default-originate\s(?P<disable>inheritance-disable) + $""", re.VERBOSE, + ), + "setval": "default-originate inheritance-disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "default_originate": { + "inheritance_disable": "{{true if disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "encapsulation_type_srv6", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sencapsulation-type\ssrv6(?P<encapsulation_type_srv6>) + $""", re.VERBOSE, + ), + "setval": "encapsulation-type srv6", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "encapsulation_type_srv6": "{{true if encapsulation_type_srv6 is defined}}", + }, + }, + }, + }, + }, + }, + { + "name": "long_lived_graceful_restart_capable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+long-lived-graceful-restart + \s(?P<capable>capable) + $""", re.VERBOSE, + ), + "setval": "long-lived-graceful-restart capable", + "compval": "long_lived_graceful_restart.capable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "long_lived_graceful_restart": { + "capable": "{{True if capable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "long_lived_graceful_restart_stale_time", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+long-lived-graceful-restart + \s+stale-time\ssend\s(?P<stale_time_send>\d+)\saccept\s(?P<accept>\d+) + $""", re.VERBOSE, + ), + "setval": "long-lived-graceful-restart stale-time send " + "{{stale_time.send}} accept {{stale_time.accept}}", + "compval": "long_lived_graceful_restart.stale_time", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "long_lived_graceful_restart": { + "stale_time": { + "send": "{{stale_time_send}}", + "accept": "{{accept}}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "maximum_prefix", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+maximum-prefix + (\s(?P<maximum_prefix>\d+))? + (\s(?P<threshold_value>\d+))? + (\srestart\s(?P<restart>\d+))? + (\swarning-only\s(?P<warning_only>))? + (\sdiscard-extra-paths\s(?P<discard_extra_paths>))? + $""", re.VERBOSE, + ), + "setval": _tmpl_maximum_prefix, + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "maximum_prefix": { + "max_limit": "{{maximum_prefix}}", + "threshold_value": "{{threshold_value}}", + "restart": "{{restart}}", + "warning_only": "{{ True if warning_only is defined}}", + "discard_extra_paths": "{{ True if discard_extra_paths is defined}}", + }, + }, + }, + }, + }, + }, + }, + + { + "name": "multipath", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \smultipath(?P<multipath>) + $""", re.VERBOSE, + ), + "setval": "multipath", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "multipath": "{{True if multipath is defined}}", + }, + }, + }, + }, + }, + }, + { + "name": "next_hop_self", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \snext-hop-self(?P<next_hop_self>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "next-hop-self{{' inheritance-disable' if next_hop_self.inheritance_disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "next_hop_self": { + "set": "{{True if next_hop_self is defined and" + " inheritance_disable is not defined}}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "next_hop_unchanged.set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \snext-hop-unchanged(?P<next_hop_unchanged>) + $""", re.VERBOSE, + ), + "setval": "next-hop-unchanged", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "next_hop_unchanged": { + "set": "{{True if next_hop_self is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "next_hop_unchanged.inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \snext-hop-unchanged(?P<next_hop_unchanged>) + ((?P<inheritance_disable>)\sinheritance-disable)? + $""", re.VERBOSE, + ), + "setval": "next-hop-unchanged inheritance-disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "next_hop_unchanged": { + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "next_hop_unchanged.multipath", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \snext-hop-unchanged(?P<next_hop_unchanged>) + (?P<multipath>\smultipath)? + $""", re.VERBOSE, + ), + "setval": "next-hop-unchanged multipath", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi}}': { + "next_hop_unchanged": { + "multipath": "{{True if multipath is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "optimal_route_reflection_group_name", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \soptimal-route-reflection\s(?P<group_name>\S+) + $""", re.VERBOSE, + ), + "setval": "optimal-route-reflection {{optimal_route_reflection_group_name}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "optimal_route_reflection_group_name": "{{ group_name}}", + }, + }, + }, + }, + }, + }, + { + "name": "orf_route_policy", + "getval": re.compile( + r""" + \s+(?P<nbr_address>neighbor\s\S+) + \sorf\sroute-policy\s(?P<orf_rr>\S+) + $""", re.VERBOSE, + ), + "setval": "orf route-policy {{orf_route_policy}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "orf_route_policy": "{{orf_rr}}", + }, + }, + }, + }, + }, + }, + { + "name": "origin_as", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sorigin-as\svalidation\sdisable(?P<origin_as>) + $""", re.VERBOSE, + ), + "setval": "origin-as validation disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "origin_as": { + "validation": { + "disable": "{{True if origin_as is defined }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "remove_private_AS.set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sremove-private-AS(?P<remove_private_AS>) + $""", re.VERBOSE, + ), + "setval": "remove-private-AS", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "remove_private_AS": { + "set": "{{True if remove_private_AS is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "remove_private_AS", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sremove-private-AS(?P<remove_private_AS>) + (\sinbound(?P<inbound>))? + (\sentire-aspath(?P<entire_aspath>))? + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": _tmpl_remove_private_AS, + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "remove_private_AS": { + "inheritance_disable": "{{True if inheritance_disable is defined}}", + "inbound": "{{True if inbound is defined}}", + "entire_aspath": "{{True if entire_aspath is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_policy.inbound", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sroute-policy\s(?P<route_policy>\S+) + \sin + $""", re.VERBOSE, + ), + "setval": "route-policy {{route_policy.inbound}} in", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "route_policy": { + "inbound": "{{route_policy}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_policy.outbound", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sroute-policy\s(?P<route_policy>\S+) + \sout + $""", re.VERBOSE, + ), + "setval": "route-policy {{route_policy.outbound}} out", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "route_policy": { + "outbound": "{{route_policy}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "route_reflector_client", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sroute-reflector-client(?P<route_reflector_client>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "route-reflector-client{{' inheritance-disable' " + "if route_reflector_client.inheritance_disable is defined }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "route_reflector_client": { + "set": "{{True if route_reflector_client is defined and " + "inheritance_disable is not defined }}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "send_community_ebgp", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \ssend-community-ebgp(?P<send_community_ebgp>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "send-community-ebgp{{' inheritance-disable' " + "if send_community_ebgp.inheritance_disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "send_community_ebgp": { + "set": "{{True if send_community_ebgp is defined and " + "inheritance_disable is not defined}}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "send_community_gshut_ebgp", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \ssend-community-gshut-ebgp(?P<send_community_gshut_ebg>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "send-community-gshut-ebgp{{' inheritance-disable' " + "if send_community_gshut_ebgp.inheritance_disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "send_community_gshut_ebgp": { + "set": "{{True if send_community_gshut_ebg is defined and " + "inheritance_disable is not defined}}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "send_extended_community_ebgp", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \ssend-extended-community-ebgp(?P<send_extended_community_ebgp>) + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": "send-extended-community-ebgp{{' inheritance-disable' " + "if send_extended_community_ebgp.inheritance_disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "send_extended_community_ebgp": { + "set": "{{True if send_extended_community_ebgp is defined and " + "inheritance_disable is not defined}}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "send_multicast_attributes", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s+(?P<send_multicast_attributes>send-multicast-attributes) + (\sdisable(?P<disable>))? + $""", re.VERBOSE, + ), + "setval": "send-multicast-attributes{{' disable' " + "if send_multicast_attributes.disable is defined else ''}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "send_multicast_attributes": { + "set": "{{True if send_multicast_attributes is " + "defined and disable is not defined}}", + "disable": "{{True if disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "soft_reconfiguration", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \ssoft-reconfiguration + \sinbound(?P<inbound>) + (\salways(?P<always>))? + (\sinheritance-disable(?P<inheritance_disable>))? + $""", re.VERBOSE, + ), + "setval": _tmpl_soft_reconfiguration, + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "soft_reconfiguration": { + "inbound": { + "set": "{{True if inbound is defined and " + "inheritance_disable is not defined and " + "always is not defined}}", + "always": "{{True if always is defined }}", + "inheritance_disable": "{{True if inheritance_disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "weight", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sweight\s(?P<weight>\d+) + $""", re.VERBOSE, + ), + "setval": "weight {{weight}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "weight": "{{weight}}", + }, + }, + }, + }, + }, + }, + { + "name": "use", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \suse\s(?P<af_use>\S+) + $""", re.VERBOSE, + ), + "setval": "weight {{weight}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "use": "{{af_use}}", + }, + }, + }, + }, + }, + }, + { + "name": "update.out_originator_loopcheck_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \supdate\sout\soriginator-loopcheck(?P<set>) + $""", re.VERBOSE, + ), + "setval": "update out originator-loopcheck", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "update": { + "out_originator_loopcheck_set": "{{True if set is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "update.out_originator_loopcheck_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \supdate\sout\soriginator-loopcheck(?P<set>) + (\sdisable(?P<disable>))? + $""", re.VERBOSE, + ), + "setval": "update out originator-loopcheck disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "address_family": { + '{{"address_family_" + afi + "_" + safi }}': { + "update": { + "out_originator_loopcheck_disable": "{{True if disable is defined}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "advertisement_interval", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<advertise_in>advertisement-interval\s\d+) + $""", re.VERBOSE, + ), + "setval": "advertisement-interval {{ advertisement_interval }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "advertisement_interval": "{{ advertise_in.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "bfd_fast_detect_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbfd + \sfast-detect + \s(?P<disable>disable) + $""", re.VERBOSE, + ), + "setval": "bfd fast-detect disable", + "compval": "bfd.fast_detect.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "bfd": { + "fast_detect": {"disable": "{{ True if disable is defined }}"}, + }, + }, + }, + }, + }, + { + "name": "bfd_fast_detect_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbfd + \s(?P<fast_detect>fast-detect) + $""", re.VERBOSE, + ), + "setval": "bfd fast-detect", + "compval": "bfd.fast_detect.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "bfd": { + "fast_detect": {"set": "{{ True if fast_detect is defined }}"}, + }, + }, + }, + }, + }, + { + "name": "bfd_fast_detect_strict_mode", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbfd + \sfast-detect + \s(?P<strict_mode>strict-mode) + $""", re.VERBOSE, + ), + "setval": "bfd fast-detect strict-mode", + "compval": "bfd.fast_detect.strict_mode", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "bfd": { + "fast_detect": {"strict_mode": "{{ True if strict_mode is defined }}"}, + }, + }, + }, + }, + }, + { + "name": "bfd_nbr_multiplier", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbfd + \s(?P<multiplier>multiplier\s\S+) + $""", re.VERBOSE, + ), + "setval": "bfd multiplier {{ bfd.multiplier}}", + "compval": "bfd.multiplier", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: + { + "bfd": { + "multiplier": "{{multiplier.split(" ")[1]}}", + }, + }, + }, + }, + }, + { + "name": "bfd_nbr_minimum_interval", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbfd + \s(?P<min_interval>minimum-interval\s\S+) + $""", re.VERBOSE, + ), + "setval": "bfd minimum-interval {{ bfd.minimum_interval}}", + "compval": "bfd.minimum_interval", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "bfd": { + "minimum_interval": "{{min_interval.split(" ")[1]}}", + }, + }, + }, + }, + }, + { + "name": "bmp_activate", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sbmp-activate + \s(?P<bmp_activate>server\s\d+) + $""", re.VERBOSE, + ), + "setval": "bmp-activate server {{bmp_activate.server}}", + "compval": "bmp_activate.serevr", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "bmp_activate": {"server": "{{ bmp_activate.split(" ")[1] }}"}, + }, + }, + }, + }, + { + "name": "neighbor_cluster_id", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<cluster_id>cluster-id\s\d+) + $""", re.VERBOSE, + ), + "setval": "cluster-id {{ cluster_id }}", + "compval": "cluster_id", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: {"cluster_id": "{{ cluster_id.split(" ")[1] }}"}, + }, + }, + }, + { + "name": "neighbor_description", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sdescription\s(?P<description>.+) + $""", re.VERBOSE, + ), + "setval": "description {{ description }}", + "compval": "description", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: {"description": "{{ description }}"}, + }, + }, + }, + { + "name": "dmz_link_bandwidth", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<dmz_link_bandwidth>dmz-link-bandwidth) + $""", re.VERBOSE, + ), + "setval": "dmz-link-bandwidth", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "dmz_link_bandwidth": { + "set": "{{ True if dmz_link_bandwidth is defined }}", + }, + }, + }, + }, + }, + { + "name": "dmz_link_bandwidth_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sdmz-link-bandwidth + \s(?P<dmz_link_bandwidth>inheritance_disable) + $""", re.VERBOSE, + ), + "setval": "dmz-link-bandwidth inheritance-disable", + "compval": "dmz_link_bandwidth.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "dmz_link_bandwidth": { + "inheritance_disable": "{{ True if dmz_link_bandwidth is defined }}", + }, + }, + }, + }, + }, + { + "name": "dscp", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<dscp>dscp\s\S+) + $""", re.VERBOSE, + ), + "setval": "dscp {{ dscp }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "dscp": "{{ dscp.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "ebgp_multihop_value", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_multihop>ebgp-multihop\s\S+) + $""", re.VERBOSE, + ), + "setval": "ebgp-multihop {{ ebgp_multihop.value}}", + "compval": "ebgp_multihop.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_multihop": { + "value": "{{ ebgp_multihop.split(" ")[1] }}", + }, + }, + }, + }, + }, + { + "name": "ebgp_multihop_mpls", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_multihop>ebgp-multihop\s\S*\smpls) + $""", re.VERBOSE, + ), + "setval": "ebgp-multihop mpls", + "compval": "ebgp_multihop.mpls", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_multihop": {"mpls": "{{ True if ebgp_multihop is defined }}"}, + }, + }, + }, + }, + { + "name": "ebgp_recv_extcommunity_dmz_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_recv_extcommunity_dmz>ebgp-recv-extcommunity-dmz) + $""", re.VERBOSE, + ), + "setval": "ebgp-recv-extcommunity-dmz inheritance-disable", + "compval": "ebgp_recv_extcommunity_dm.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_recv_extcommunity_dmz": { + "set": "{{ True if ebgp_recv_extcommunity_dmz is defined }}", + }, + }, + }, + }, + }, + { + "name": "ebgp_recv_extcommunity_dmz", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_recv_extcommunity_dmz>ebgp-recv-extcommunity-dmz\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "ebgp-recv-extcommunity-dmz inheritance-disable ", + "compval": "ebgp_recv_extcommunity_dmz.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_recv_extcommunity_dmz": { + "inheritance_disable": "{{ True if ebgp_recv_extcommunity_dmz is defined }}", + }, + }, + }, + }, + }, + { + "name": "ebgp_send_extcommunity_dmz", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_send_extcommunity_dmz>ebgp-send-extcommunity-dmz\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "ebgp-send-extcommunity-dmz inheritance-disable ", + "compval": "ebgp_send_extcommunity_dmz.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_send_extcommunity_dmz": { + "inheritance_disable": "{{ True if ebgp_send_extcommunity_dmz is defined }}", + }, + }, + }, + }, + }, + { + "name": "ebgp_send_extcommunity_dmz_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_send_extcommunity_dmz>ebgp-send-extcommunity-dmz) + $""", re.VERBOSE, + ), + "setval": "ebgp-send-extcommunity-dmz", + "compval": "ebgp_send_extcommunity_dmz.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_send_extcommunity_dmz": { + "set": "{{ True if ebgp_send_extcommunity_dmz is defined }}", + }, + }, + }, + }, + }, + { + "name": "ebgp_send_extcommunity_dmz_cumulatie", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ebgp_send_extcommunity_dmz>ebgp-send-extcommunity-dmz\scumulatie) + $""", re.VERBOSE, + ), + "setval": "ebgp-send-extcommunity-dmz cumulatie ", + "compval": "ebgp_send_extcommunity_dmz.cumulatie", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ebgp_send_extcommunity_dmz": { + "cumulatie": "{{ True if ebgp_send_extcommunity_dmz is defined }}", + }, + }, + }, + }, + }, + { + "name": "egress_engineering", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<egress_engineering>egress-engineering\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "egress-engineering inheritance-disable ", + "compval": "egress_engineering.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "egress_engineering": { + "inheritance_disable": "{{ True if egress_engineering is defined }}", + }, + }, + }, + }, + + }, + { + "name": "egress_engineering_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<egress_engineering>egress-engineering) + $""", re.VERBOSE, + ), + "setval": "egress-engineering", + "compval": "egress_engineering.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "egress_engineering": { + "set": "{{ True if egress_engineering is defined }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_enforce_first_as_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<enforce_first_as_disable>enforce-first-as\sdisable) + $""", re.VERBOSE, + ), + "setval": "enforce-first-as disable", + "compval": "enforce_first_as.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "enforce_first_as": { + "disable": "{{ True if enforce_first_as_disable is defined }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_restart_restart_time", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<graceful_restart_restart_time>graceful-restart\srestart-time\s\d+) + $""", re.VERBOSE, + ), + "setval": "graceful-restart restart-time {{ graceful_restart.restart_time}}", + "compval": "graceful_restart.restart_time", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_restart": { + "restart_time": "{{ graceful_restart_restart_time.split(" ")[2] }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_restart_stalepath_time", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<graceful_restart_stalepath_time>graceful-restart\sstalepath-time\s\d+) + $""", re.VERBOSE, + ), + "setval": "graceful-restart stalepath-time {{ graceful_restart.stalepath_time}}", + "compval": "graceful_restart.stalepath_time", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_restart": { + "stalepath_time": "{{ graceful_restart_stalepath_time.split(" ")[2] }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<graceful_maintenance>graceful-maintenance) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance", + "compval": "graceful_maintenance.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "set": "{{ True if graceful_maintenance is defined }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_activate", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<graceful_maintenance>graceful-maintenance\sactivate) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance activate", + "compval": "graceful_maintenance.activate.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "activate": {"set": "{{ True if graceful_maintenance is defined }}"}, + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_activate_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<graceful_maintenance>activate\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance activate inheritance-disable", + "compval": "graceful_maintenance.activate.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "activate": { + "inheritance_disable": "{{ True if graceful_maintenance is defined }}", + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_as_prepends", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<as_prepends>as-prepends\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance as-prepends inheritance-disable", + "compval": "graceful_maintenance.as_prepends.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "as_prepends": { + "inheritance_disable": "{{ True if as_prepends is defined }}", + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_local_preference_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<local_preference>local-preference\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance local-preference inheritance-disable", + "compval": "graceful_maintenance.local_preference.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "local_preference": { + "inheritance_disable": "{{ True if local_preference is defined }}", + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_local_preference", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<local_preference>local-preference\s\d+) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance local-preference {{ graceful_maintenance.local_preference.value}}", + "compval": "graceful_maintenance.local_preference.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "local_preference": { + "value": "{{ local_preference.split(" ")[1]}}", + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_graceful_maintenance_as_prepends_value", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<as_prepends>as-prepends\s\d+) + $""", re.VERBOSE, + ), + "setval": "graceful-maintenance as-prepends {{ graceful_maintenance.as_prepends.value }}", + "compval": "graceful_maintenance.as_prepends.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "graceful_maintenance": { + "as_prepends": { + "value": "{{ as_prepends.split(" ")[1]}}", + }, + }, + }, + }, + }, + }, + { + "name": "ignore_connected_check_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ignore_connected_check>ignore-connected-check) + $""", re.VERBOSE, + ), + "setval": "ignore-connected-check", + "compval": "ignore_connected_check.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ignore_connected_check": { + "set": "{{ True if ignore_connected_check is defined }}", + }, + }, + }, + }, + }, + { + "name": "ignore_connected_check", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ignore_connected_check>ignore-connected-check\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "ignore-connected-check inheritance-disable ", + "compval": "ignore_connected_check.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ignore_connected_check": { + "inheritance_disable": "{{ True if ignore_connected_check is defined }}", + }, + }, + }, + }, + }, + { + "name": "idle_watch_time", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sidle-watch-time(?P<idle_watch_time>\s\S+) + $""", re.VERBOSE, + ), + "setval": "idle-watch-time {{idle_watch_time}} ", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "idle_watch_time": "{{idle_watch_time}}", + }, + }, + }, + }, + { + "name": "internal_vpn_client", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + (?P<internal_vpn_client>\sinternal-vpn-client) + $""", re.VERBOSE, + ), + "setval": "internal-vpn-client", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "internal_vpn_client": "{{true if internal_vpn_client is defined}}", + }, + }, + }, + }, + { + "name": "keychain", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<keychain>keychain\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "keychain inheritance-disable ", + "compval": "keychain.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "keychain": { + "inheritance_disable": "{{ True if keychain is defined }}", + }, + }, + }, + }, + + }, + { + "name": "keychain_name", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<keychain>keychain\s\S+) + $""", re.VERBOSE, + ), + "setval": "keychain {{ keychain.name }}", + "compval": "keychain.name", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "keychain": { + "name": "{{ keychain.split(" ")[1] }}", + }, + }, + }, + }, + }, + { + "name": "local_address", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slocal + \s(?P<local>address\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "local address inheritance-disable", + "compval": "local.address.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "local": { + "address": { + "inheritance_disable": "{{ True if local is defined }}", + }, + }, + }, + }, + }, + }, + { + "name": "local", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slocal + \s(?P<local>address\s\S+) + $""", re.VERBOSE, + ), + "setval": "local address {{ local.address.ipv4_address }}", + "compval": "local.address.ipv4_address", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "local": { + "address": { + "ipv4_address": "{{ local.split(" ")[1] }}", + }, + }, + }, + }, + }, + }, + { + "name": "local_as_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<local_as>local-as\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "local-as inheritance-disable", + "compval": "local_as.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "local_as": { + "inheritance_disable": "{{ True if local_as is defined }}", + }, + }, + }, + }, + }, + { + "name": "local_as", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<local_as>local-as\s\S+) + (\s(?P<no_prepend>no-prepend))? + (\s(?P<replace_as>replace-as))? + (\s(?P<dual_as>dual-as))? + $""", re.VERBOSE, + ), + "setval": _templ_local_as, + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "local_as": { + "value": "{{ local_as.split(" ")[1] }}", + "no_prepend": { + "set": "{{ True if no_prepend is defined and replace_as is undefined and dual_as is undefined else None}}", + "replace_as": { + "set": "{{ True if replace_as is defined and dual_as is undefined}}", + "dual_as": "{{ not not dual_as}}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "local_address_subnet", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slocal-address-subnet(?P<local>\s\S+) + $""", re.VERBOSE, + ), + "setval": "local-address-subnet {{local_address_subnet}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "local_address_subnet": "{{local.split(" ")[1]}}", + }, + }, + }, + }, + { + "name": "neighbor_log_message_in_value", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<value>in\s\d+) + $""", re.VERBOSE, + ), + "setval": "log message in {{ log.message.in.value}}", + "compval": "log.log_message.in.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "in": { + "value": "{{ value.split(" ")[1] }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_log_message_in_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<disable>in\sdisable) + $""", re.VERBOSE, + ), + "setval": "log message in disable", + "compval": "log.log_message.in.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "in": { + "disable": "{{ True if disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_log_message_in_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<disable>in\sinheritance-diable) + $""", re.VERBOSE, + ), + "setval": "log message in inheritance-diable", + "compval": "log.log_message.in.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "in": { + "inheritance_disable": "{{ True if disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_log_message_out_value", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<value>out\s\d+) + $""", re.VERBOSE, + ), + "setval": "log message out {{ log.message.out.value}}", + "compval": "log.log_message.out.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "out": { + "value": "{{ value.split(" ")[1] }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_log_message_out_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<disable>out\sdisable) + $""", re.VERBOSE, + ), + "setval": "log message out disable", + "compval": "log.log_message.out.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "out": { + "disable": "{{ True if disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_log_message_out_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \slog + \smessage + \s(?P<disable>out\sinheritance-diable) + $""", re.VERBOSE, + ), + "setval": "log message out inheritance-diable", + "compval": "log.log_message.out.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "log": { + "log_message": { + "out": { + "inheritance_disable": "{{ True if disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "maximum_peers", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \smaximum-peers(?P<local>\s\S+) + $""", re.VERBOSE, + ), + "setval": "maximum-peers {maximum_peers}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "maximum_peers": "{{local}}", + }, + }, + }, + + }, + { + "name": "password_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<password>password\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "password inheritance-disable", + "compval": "password.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "password": { + "inheritance_disable": "{{ True if password is defined }}", + }, + }, + }, + }, + }, + { + "name": "password_encrypted", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \spassword\sencrypted + \s(?P<password>\S+) + $""", re.VERBOSE, + ), + "setval": "password encrypted {{password.encrypted}}", + "compval": "password.encrypted", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "password": { + "encrypted": "{{ password }}", + }, + }, + }, + }, + }, + { + "name": "peer_set", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \speer-set(?P<local>\s\S+) + $""", re.VERBOSE, + ), + "setval": "peer-set {peer_set}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "peer_set": "{{local}}", + }, + }, + }, + }, + { + "name": "receive_buffer_size", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<receive_buffer_size>receive-buffer-size\s\d+) + $""", re.VERBOSE, + ), + "setval": "receive-buffer-size {{ receive_buffer_size }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "receive_buffer_size": "{{ receive_buffer_size.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "send_buffer_size", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<send_buffer_size>send-buffer-size\s\d+) + $""", re.VERBOSE, + ), + "setval": "send-buffer-size {{ send_buffer_size }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "send_buffer_size": "{{ send_buffer_size.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "precedence", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \sprecedence\s(?P<local>\S+) + $""", re.VERBOSE, + ), + "setval": "precedence {{precedence}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "precedence": "{{local}}", + }, + }, + }, + }, + { + "name": "remote_as", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<remote_as>remote-as\s\S+) + $""", re.VERBOSE, + ), + "setval": "remote-as {{ remote_as }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "remote_as": "{{ remote_as.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "remote_as_list", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<remote_as>remote-as-list\s\S+) + $""", re.VERBOSE, + ), + "setval": "remote-as-list {{ remote_as_list }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "remote_as_list": "{{ remote_as.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "session_open_mode", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<session_open_mode>session-open-mode\s(active-only|both|passive-only)) + $""", re.VERBOSE, + ), + "setval": "session-open-mode {{ session_open_mode }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "session_open_mode": "{{ session_open_mode.split(" ")[1] }}", + }, + }, + }, + }, + { + "name": "neighbor_shutdown", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<shutdown>shutdown) + $""", re.VERBOSE, + ), + "setval": "shutdown", + "compval": "shutdown", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "shutdown": { + "set": "{{ True if shutdown is defined }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_shutdown_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<shutdown>shutdown\sinheritance_disable) + $""", re.VERBOSE, + ), + "setval": "shutdown inheritance-disable", + "compval": "shutdown.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "shutdown": {"inheritance_disable": "{{ True if shutdown is defined }}"}, + }, + }, + }, + }, + { + "name": "neighbor_tcp_mss_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<tcp_mss_disable>tcp\smss\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "tcp mss inheritance-disable", + "compval": "tcp.mss.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "tcp": { + "mss": { + "inheritance_disable": "{{ True if tcp_mss_disable is defined }}", + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_tcp_mss", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<tcp_mss>tcp\smss\s\d+) + $""", re.VERBOSE, + ), + "setval": "tcp mss {{ tcp.mss.value }}", + "compval": "tcp.mss.value", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "tcp": { + "mss": { + "value": "{{ tcp_mss.split(" ")[2] }}", + }, + }, + }, + }, + }, + + }, + { + "name": "neighbor_timers_keepalive", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<timers_keepalive_time>timers\s\d+) + \s(?P<timers_holdtime>\d+) + $""", re.VERBOSE, + ), + "setval": "timers {{ timers.keepalive_time}} {{ timers.holdtime }}", + "compval": "timers", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "timers": { + "keepalive_time": "{{ timers_keepalive_time.split(" ")[1] }}", + "holdtime": "{{ timers_holdtime.split(" ")[0] }}", + }, + }, + }, + }, + }, + { + "name": "use.neighbor_group", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \suse\sneighbor-group\s(?P<neighbor_group>\S+) + $""", re.VERBOSE, + ), + "setval": "use neighbor-group {{ use.neighbor_group }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "use": { + "neighbor_group": "{{ neighbor_group }}", + }, + }, + }, + }, + + }, + { + "name": "use.session_group", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \suse\ssession-group\s(?P<session_group>\S+) + $""", re.VERBOSE, + ), + "setval": "use session-group {{ use.session_group }}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "use": { + "session_group": "{{ session_group }}", + }, + }, + }, + }, + }, + { + "name": "update_source", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \supdate-source + \s(?P<update_source>\S+) + $""", re.VERBOSE, + ), + "setval": "update-source {{ update_source}}", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "update_source": "{{ update_source}}", + }, + }, + }, + }, + { + "name": "neighbor_ttl_security_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ttl_security>ttl-security\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "ttl-security inheritance-disable", + "compval": "ttl_security.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ttl_security": { + "inheritance_disable": "{{ True if ttl_security is defined }}", + }, + }, + }, + }, + }, + { + "name": "neighbor_ttl_security", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<ttl_security>ttl-security) + $""", re.VERBOSE, + ), + "setval": "ttl-security", + "compval": "ttl_security.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "ttl_security": { + "set": "{{ True if ttl_security is defined }}", + }, + }, + }, + }, + + }, + { + "name": "neighbor_update_in_filtering_attribute_filter_group", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<attribute_filter_group>attribute-filter\sgroup\s\S+) + $""", re.VERBOSE, + ), + "setval": "update in filtering attribute-filter group {{ update.in.filtering.attribute_filter.group }}", + "compval": "update.in.filtering.attribute_filter.group", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "update": { + "in": { + "filtering": { + "attribute_filter": { + "group": "{{ attribute_filter_group.split(" ")[2] }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_update_in_filtering_logging_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<logging_disable>logging\sdisable) + $""", re.VERBOSE, + ), + "setval": "update in filtering logging disable", + "compval": "update.in.filtering.logging.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "update": { + "in": { + "filtering": { + "logging": { + "disable": "{{True if logging_disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + + }, + { + "name": "neighbor_update_in_filtering_message_buffers", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \s(?P<message_buffers>message\sbuffers\s\d+) + $""", re.VERBOSE, + ), + "setval": "update in filtering message buffers {{ update.in.filtering.message.buffers}}", + "compval": "update.in.filtering.update_message.buffers", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "update": { + "in": { + "filtering": { + "update_message": { + "buffers": "{{ message_buffers.split(" ")[2] }}", + }, + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_additional_paths_send", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \sadditional-paths + \s(?P<additional_paths_send>send) + $""", re.VERBOSE, + ), + "setval": "capability additional-paths send", + "compval": "capability.additional_paths.send.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "additional_paths": { + "send": { + "set": "{{ True if additional_paths_send is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_additional_paths_send_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \sadditional-paths + \s(?P<additional_paths_send>send\sdisable) + $""", re.VERBOSE, + ), + "setval": "capability additional-paths send disable", + "compval": "capability.additional_paths.send.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "additional_paths": { + "send": { + "disable": "{{ True if additional_paths_send is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_additional_paths_rcv", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \sadditional-paths + \s(?P<additional_paths_receive>receive) + $""", re.VERBOSE, + ), + "setval": "capability additional-paths receive", + "compval": "capability.additional_paths.receive.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "additional_paths": { + "receive": { + "set": "{{ True if additional_paths_receive is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_additional_paths_rcv_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \sadditional-paths + \s(?P<additional_paths_receive_disable>receive\sdisable) + $""", re.VERBOSE, + ), + "setval": "capability additional-paths receive disable", + "compval": "capability.additional_paths.receive.disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "additional_paths": { + "receive": { + "disable": "{{ True if additional_paths_receive_disable is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_suppress_four_byte_AS", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \ssuppress + \s(?P<suppress_4_byte_as>4-byte-as) + $""", re.VERBOSE, + ), + "setval": "capability suppress 4-byte-as", + "compval": "capability.suppress.four_byte_AS.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "suppress": { + "four_byte_AS": { + "set": "{{ True if suppress_4_byte_as is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_suppress_all", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \ssuppress + \s(?P<all>all) + $""", re.VERBOSE, + ), + "setval": "capability suppress all", + "compval": "capability.suppress.all.set", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "suppress": { + "all": { + "set": "{{ True if all is defined }}", + }, + }, + }, + }, + }, + }, + }, + { + "name": "neighbor_capability_suppress_all_inheritance_disable", + "getval": re.compile( + r""" + \s+neighbor-group\s(?P<nbr_address>\S+) + \scapability + \ssuppress + \s(?P<all>all\sinheritance-disable) + $""", re.VERBOSE, + ), + "setval": "capability suppress all inheritance-disable", + "compval": "capability.suppress.all.inheritance_disable", + "result": { + "neighbor": { + UNIQUE_NEIB_ADD: { + "capability": { + "suppress": { + "all": { + "inheritance_disable": "{{ True if all is defined }}", + }, + }, + }, + }, + }, + }, + + }, + + ] + # fmt: on diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv2.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv2.py index e5a54a64f..68937f9bd 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv2.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv2.py @@ -19,11 +19,11 @@ def _tmplt_ospf_default_information(config_data): command += " metric {metric}".format(**config_data["default_information_originate"]) if "metric_type" in config_data["default_information_originate"]: command += " metric-type {metric_type}".format( - **config_data["default_information_originate"] + **config_data["default_information_originate"], ) if "route_policy" in config_data["default_information_originate"]: command += " route-policy {route_policy}".format( - **config_data["default_information_originate"] + **config_data["default_information_originate"], ) return command @@ -35,7 +35,7 @@ def _tmplt_ospf_auto_cost(config_data): command += " disable" if "reference_bandwidth" in config_data["auto_cost"]: command += " reference-bandwidth {reference_bandwidth}".format( - **config_data["auto_cost"] + **config_data["auto_cost"], ) return command @@ -416,11 +416,11 @@ def _tmplt_ospf_area_nssa_def_info_origin(config_data): ) if "metric" in def_info_origin: command += " metric {metric}".format( - **config_data["nssa"]["default_information_originate"] + **config_data["nssa"]["default_information_originate"], ) if "metric_type" in def_info_origin: command += " metric-type {metric_type}".format( - **config_data["nssa"]["default_information_originate"] + **config_data["nssa"]["default_information_originate"], ) return command @@ -531,11 +531,11 @@ def _tmplt_timers_graceful_shutdown(config_data): command = "timers graceful-shutdown" if "initial_delay" in config_data["timers"]["graceful-shutdown"]: command += " initial delay {initial_delay}".format( - **config_data["timers"]["graceful-shutdown"] + **config_data["timers"]["graceful-shutdown"], ) if "retain_routes" in config_data["timers"]["graceful-shutdown"]: command += " retain routes {retain_routes}".format( - **config_data["timers"]["graceful-shutdown"] + **config_data["timers"]["graceful-shutdown"], ) return command diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv3.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv3.py index 14e3720be..ea8807206 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv3.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/rm_templates/ospfv3.py @@ -19,11 +19,11 @@ def _tmplt_ospf_default_information(config_data): command += " metric {metric}".format(**config_data["default_information_originate"]) if "metric_type" in config_data["default_information_originate"]: command += " metric-type {metric_type}".format( - **config_data["default_information_originate"] + **config_data["default_information_originate"], ) if "route_policy" in config_data["default_information_originate"]: command += " route-policy {route_policy}".format( - **config_data["default_information_originate"] + **config_data["default_information_originate"], ) return command @@ -35,7 +35,7 @@ def _tmplt_ospf_auto_cost(config_data): command += " disable" if "reference_bandwidth" in config_data["auto_cost"]: command += " reference-bandwidth {reference_bandwidth}".format( - **config_data["auto_cost"] + **config_data["auto_cost"], ) return command @@ -413,11 +413,11 @@ def _tmplt_ospf_area_nssa_def_info_origin(config_data): ) if "metric" in def_info_origin: command += " metric {metric}".format( - **config_data["nssa"]["default_information_originate"] + **config_data["nssa"]["default_information_originate"], ) if "metric_type" in def_info_origin: command += " metric-type {metric_type}".format( - **config_data["nssa"]["default_information_originate"] + **config_data["nssa"]["default_information_originate"], ) return command @@ -528,11 +528,11 @@ def _tmplt_timers_graceful_shutdown(config_data): command = "timers graceful-shutdown" if "initial_delay" in config_data["timers"]["graceful-shutdown"]: command += " initial delay {initial_delay}".format( - **config_data["timers"]["graceful-shutdown"] + **config_data["timers"]["graceful-shutdown"], ) if "retain_routes" in config_data["timers"]["graceful-shutdown"]: command += " retain routes {retain_routes}".format( - **config_data["timers"]["graceful-shutdown"] + **config_data["timers"]["graceful-shutdown"], ) return command diff --git a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/utils/utils.py b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/utils/utils.py index a4467a487..64c66ca4b 100644 --- a/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/utils/utils.py +++ b/ansible_collections/cisco/iosxr/plugins/module_utils/network/iosxr/utils/utils.py @@ -14,12 +14,11 @@ from functools import total_ordering from ansible.module_utils._text import to_text from ansible.module_utils.basic import missing_required_lib +from ansible.module_utils.common.network import is_masklen, to_netmask from ansible.module_utils.six import iteritems from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( dict_diff, - is_masklen, search_obj_in_list, - to_netmask, ) @@ -109,7 +108,7 @@ def filter_dict_having_none_value(want, have): have_ip = have.get("ipv4") for each in have_ip: if len(want_ip) > 1 and each.get("secondary"): - have_ip = each.get("address").split(" ")[0] + have_ip = each.get("address").split("/")[0] if have_ip != want_ip[0]: diff_ip = True if each.get("secondary") and diff_ip is True: @@ -286,7 +285,7 @@ def normalize_interface(name): if_type = "GigabitEthernet" elif name.lower().startswith("fa"): if_type = "FastEthernet" - elif name.lower().startswith("fo"): + elif name.lower().startswith("for"): if_type = "FortyGigE" elif name.lower().startswith("te"): if_type = "TenGigE" @@ -298,10 +297,16 @@ def normalize_interface(name): if_type = "Vlan" elif name.lower().startswith("lo"): if_type = "Loopback" - elif name.lower().startswith("be"): + elif name.lower().startswith("bundle-e"): if_type = "Bundle-Ether" - elif name.lower().startswith("bp"): + elif name.lower().startswith("bundle-p"): if_type = "Bundle-POS" + elif name.lower().startswith("fif"): + if_type = "FiftyGigE" + elif name.lower().startswith("fou"): + if_type = "FourHundredGigE" + elif name.lower().startswith("two"): + if_type = "TwoHundredGigE" else: if_type = None @@ -310,7 +315,6 @@ def normalize_interface(name): number = number_list[-1].strip() else: number = _get_number(name) - if if_type: proper_interface = if_type + number else: @@ -326,14 +330,16 @@ def get_interface_type(interface): return "GigabitEthernet" elif interface.upper().startswith("FA"): return "FastEthernet" - elif interface.upper().startswith("FO"): + elif interface.upper().startswith("FORT"): return "FortyGigE" elif interface.upper().startswith("ET"): return "Ethernet" elif interface.upper().startswith("LO"): return "Loopback" - elif interface.upper().startswith("BE"): + elif interface.upper().startswith("BUNDLE-E"): return "Bundle-Ether" + elif interface.upper().startswith("BUNDLE-P"): + return "Bundle-POS" elif interface.upper().startswith("NV"): return "nve" elif interface.upper().startswith("TE"): @@ -344,6 +350,16 @@ def get_interface_type(interface): return "HundredGigE" elif interface.upper().startswith("PRE"): return "preconfigure" + elif interface.upper().startswith("FIF"): + return "FiftyGigE" + elif interface.upper().startswith("FOU"): + return "FourHundredGigE" + elif interface.upper().startswith("TWO"): + return "TwoHundredGigE" + elif interface.upper().startswith("MG"): + return "management" + elif interface.upper().startswith("MA"): + return "management" else: return "unknown" @@ -454,3 +470,8 @@ def _coerce(other): if isinstance(other, (int, float)): other = Version(str(other)) return other + + +def netmask_to_cidr(netmask): + # convert netmask to cidr and returns the cidr notation + return str(sum([bin(int(x)).count("1") for x in netmask.split(".")])) diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acl_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acl_interfaces.py index 7dc8df807..80dcc44f4 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acl_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acl_interfaces.py @@ -130,27 +130,26 @@ EXAMPLES = """ - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: in - - name: acl_2 - direction: out - - afi: ipv6 - acls: - - name: acl6_1 - direction: in - - name: acl6_2 - direction: out - - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: out + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: in + - name: acl_2 + direction: out + - afi: ipv6 + acls: + - name: acl6_1 + direction: in + - name: acl6_2 + direction: out + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: out state: merged # After state: @@ -199,14 +198,14 @@ EXAMPLES = """ - name: Update acl_interfaces configuration using merged cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_2 - direction: out - - name: acl_1 - direction: in + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_2 + direction: out + - name: acl_1 + direction: in state: merged # After state: @@ -253,15 +252,17 @@ EXAMPLES = """ # ipv4 access-group acl_1 egress # ! -- name: Replace device configurations of listed interface with provided configurations +- name: >- + Replace device configurations of listed interface with provided + configurations cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv6 - acls: - - name: acl6_3 - direction: in + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv6 + acls: + - name: acl6_3 + direction: in state: replaced # After state: @@ -308,16 +309,16 @@ EXAMPLES = """ - name: Overridde all interface ACL configuration with provided configuration cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 - access_groups: - - afi: ipv4 - acls: - - name: acl_2 - direction: in - - afi: ipv6 - acls: - - name: acl6_3 - direction: out + - name: GigabitEthernet0/0/0/1 + access_groups: + - afi: ipv4 + acls: + - name: acl_2 + direction: in + - afi: ipv6 + acls: + - name: acl6_3 + direction: out state: overridden # After state: @@ -364,7 +365,7 @@ EXAMPLES = """ - name: Delete all ACL attributes of GigabitEthernet0/0/0/1 cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/1 + - name: GigabitEthernet0/0/0/1 state: deleted # After state: @@ -564,14 +565,14 @@ EXAMPLES = """ - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_acl_interfaces: config: - - name: GigabitEthernet0/0/0/0 - access_groups: - - afi: ipv4 - acls: - - name: acl_1 - direction: in - - name: acl_2 - direction: out + - name: GigabitEthernet0/0/0/0 + access_groups: + - afi: ipv4 + acls: + - name: acl_1 + direction: in + - name: acl_2 + direction: out state: rendered # Task Output (redacted) diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acls.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acls.py index 22a7779cb..620838353 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acls.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_acls.py @@ -701,100 +701,210 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:07:45.767 UTC -# RP/0/RP0/CPU0:ios# +# RP/0/RP0/CPU0:ios#show access-lists afi-al +# Fri Sep 22 03:57:04.758 UTC +# ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_acls: config: - - afi: ipv6 - acls: - - name: acl6_1 - aces: - - sequence: 10 - grant: deny - protocol: tcp - source: - prefix: 2001:db8:1234::/48 - port_protocol: - range: - start: ftp - end: telnet - destination: - any: true - protocol_options: - tcp: - syn: true - ttl: - range: - start: 180 - end: 250 - routing: true - authen: true - log: true - - - sequence: 20 - grant: permit - protocol: icmpv6 - source: - any: true - destination: - any: true - protocol_options: - icmpv6: - router_advertisement: true - precedence: network - destopts: true - - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 16 - remark: TEST_ACL_1_REMARK - - - sequence: 21 - grant: permit - protocol: tcp - source: - host: 192.0.2.10 - port_protocol: - range: - start: pop3 - end: 121 - destination: - address: 198.51.100.0 - wildcard_bits: 0.0.0.15 - protocol_options: - tcp: - rst: true - - - sequence: 23 - grant: deny - protocol: icmp - source: - any: true - destination: - prefix: 198.51.100.0/28 - protocol_options: - icmp: - reassembly_timeout: true - dscp: - lt: af12 - - - name: acl_2 - aces: - - sequence: 10 - remark: TEST_ACL_2_REMARK + - afi: ipv6 + acls: + - name: acl6_1 + aces: + - sequence: 10 + grant: deny + protocol: tcp + source: + prefix: '2001:db8:1234::/48' + port_protocol: + range: + start: ftp + end: telnet + destination: + any: true + protocol_options: + tcp: + syn: true + ttl: + range: + start: 180 + end: 250 + routing: true + authen: true + log: true + - sequence: 20 + grant: permit + protocol: icmpv6 + source: + any: true + destination: + any: true + protocol_options: + icmpv6: + router_advertisement: true + precedence: network + destopts: true + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 16 + remark: TEST_ACL_1_REMARK + - sequence: 21 + grant: permit + protocol: tcp + source: + host: 192.0.2.10 + port_protocol: + range: + start: pop3 + end: 121 + destination: + address: 198.51.100.0 + wildcard_bits: 0.0.0.15 + protocol_options: + tcp: + rst: true + - sequence: 23 + grant: deny + protocol: icmp + source: + any: true + destination: + prefix: 198.51.100.0/28 + protocol_options: + icmp: + reassembly_timeout: true + dscp: + lt: af12 + - name: acl_2 + aces: + - sequence: 10 + remark: TEST_ACL_2_REMARK state: merged +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# name: acl_1 +# afi: ipv4 +# +# commands: +# - ipv6 access-list acl6_1 +# - 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log +# - 20 permit icmpv6 any any router-advertisement precedence network destopts +# - ipv4 access-list acl_1 +# - 16 remark TEST_ACL_1_REMARK +# - 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst +# - 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 +# - ipv4 access-list acl_2 +# - 10 remark TEST_ACL_2_REMARK +# +# after: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 + # After state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Fri Sep 22 04:35:19.977 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -809,9 +919,10 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Fri Sep 22 04:37:33.542 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -824,34 +935,212 @@ EXAMPLES = """ - name: Update existing ACEs cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 21 - source: - prefix: 198.51.100.32/28 - port_protocol: - range: - start: pop3 - end: 121 - protocol_options: - tcp: - syn: true - - - sequence: 23 - protocol_options: - icmp: - router_advertisement: true - dscp: - eq: af23 + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 21 + source: + prefix: 198.51.100.32/28 + port_protocol: + range: + start: pop3 + end: 121 + protocol_options: + tcp: + syn: true + - sequence: 23 + protocol_options: + icmp: + router_advertisement: true + dscp: + eq: af23 + +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - ipv4 access-list acl_1 +# - 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn +# - 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 +# after: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# sequence: 21 +# source: +# address: 198.51.100.32 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# wildcard_bits: 0.0.0.15 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# eq: af23 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# router_advertisement: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 # After state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:47:18.711 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Wed Sep 27 09:58:38.345 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn # 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 @@ -866,9 +1155,10 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Fri Sep 22 05:38:36.205 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -880,39 +1170,230 @@ EXAMPLES = """ - name: Replace device configurations of listed ACL with provided configurations cisco.iosxr.iosxr_acls: - config: - - afi: ipv4 - acls: - - name: acl_2 - aces: - - sequence: 11 - grant: permit - protocol: igmp - source: - host: 198.51.100.130 - destination: - any: true - ttl: - eq: 100 - - - sequence: 12 - grant: deny - source: - any: true - destination: - any: true - protocol: icmp state: replaced + config: + - afi: ipv4 + acls: + - name: acl_2 + aces: + - sequence: 11 + grant: permit + protocol: igmp + source: + host: 198.51.100.130 + destination: + any: true + ttl: + eq: 100 + - sequence: 12 + grant: deny + source: + any: true + destination: + any: true + protocol: icmp + +# Task Output +# ----------- +# before: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - ipv4 access-list acl_2 +# - no 10 +# - 11 permit igmp host 198.51.100.130 any ttl eq 100 +# - 12 deny icmp any any +# +# after: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: udp +# sequence: 10 +# source: +# address: 192.168.1.0 +# wildcard_bits: 0.0.0.255 +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: igmp +# sequence: 11 +# source: +# host: 198.51.100.130 +# ttl: +# eq: 100 +# - destination: +# any: true +# grant: deny +# protocol: icmp +# sequence: 12 +# source: +# any: true +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 # After state: # ------------- - -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 06:19:51.496 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Fri Sep 22 05:56:21.103 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK -# 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn -# 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23 +# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst +# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 # ipv4 access-list acl_2 # 11 permit igmp host 198.51.100.130 any ttl eq 100 # 12 deny icmp any any @@ -928,6 +1409,7 @@ EXAMPLES = """ # RP/0/RP0/CPU0:ios#sh access-lists afi-all # Thu Feb 20 05:22:57.021 UTC # ipv4 access-list acl_1 +# 10 permit udp 192.168.1.0 0.0.0.255 any # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst # 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 @@ -940,29 +1422,141 @@ EXAMPLES = """ - name: Overridde all ACLs configuration with provided configuration cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_1 - aces: - - sequence: 10 - grant: permit - source: - any: true - destination: - any: true - protocol: tcp - - - name: acl_2 - aces: - - sequence: 20 - grant: permit - source: - any: true - destination: - any: true - protocol: igmp + - afi: ipv4 + acls: + - name: acl_1 + aces: + - sequence: 10 + grant: permit + source: + any: true + destination: + any: true + protocol: tcp + - name: acl_2 + aces: + - sequence: 20 + grant: permit + source: + any: true + destination: + any: true + protocol: igmp state: overridden +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - no ipv6 access-list acl6_1 +# - ipv4 access-list acl_1 +# - no 16 +# - no 21 +# - no 23 +# - 10 permit tcp any any +# - ipv4 access-list acl_2 +# - no 10 +# - 20 permit igmp any any +# +# after: +# - acls: +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: tcp +# sequence: 10 +# source: +# any: true +# name: acl_1 +# - aces: +# - destination: +# any: true +# grant: permit +# protocol: igmp +# sequence: 20 +# source: +# any: true +# name: acl_2 +# afi: ipv4 + # After state: # ------------- @@ -978,8 +1572,8 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -993,11 +1587,135 @@ EXAMPLES = """ - name: Delete a single ACL cisco.iosxr.iosxr_acls: config: - - afi: ipv6 - acls: - - name: acl6_1 + - afi: ipv6 + acls: + - name: acl6_1 state: deleted +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - no ipv6 access-list acl6_1 +# +# after: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 + + # After state: # ------------- @@ -1015,8 +1733,8 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -1030,13 +1748,136 @@ EXAMPLES = """ - name: Delete all ACLs under one AFI cisco.iosxr.iosxr_acls: config: - - afi: ipv4 + - afi: ipv4 state: deleted +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - no ipv4 access-list acl_1 +# - no ipv4 access-list acl_2 +# +# after: +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 + # After state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all +# RP/0/RP0/CPU0:ios#show access-lists afi-all # Thu Feb 20 05:22:57.021 UTC # ipv6 access-list acl6_1 # 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log @@ -1047,8 +1888,8 @@ EXAMPLES = """ # Before state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all -# Thu Feb 20 05:22:57.021 UTC +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Wed Sep 27 09:34:04.831 UTC # ipv4 access-list acl_1 # 16 remark TEST_ACL_1_REMARK # 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst @@ -1063,15 +1904,115 @@ EXAMPLES = """ cisco.iosxr.iosxr_acls: state: deleted + +# Task Output +# ----------- +# +# before: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 +# +# commands: +# - no ipv4 access-list acl_1 +# - no ipv4 access-list acl_2 +# - no ipv6 access-list acl6_1 +# +# after: [] + # After state: # ------------- -# RP/0/RP0/CPU0:ios#sh access-lists afi-all +# RP/0/RP0/CPU0:ios#show access-lists afi-all # Thu Feb 20 05:07:45.767 UTC # RP/0/RP0/CPU0:ios# # Using gathered to gather ACL facts from the device +# RP/0/RP0/CPU0:ios#show access-lists afi-all +# Wed Sep 27 09:34:04.831 UTC +# ipv4 access-list acl_1 +# 16 remark TEST_ACL_1_REMARK +# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst +# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 +# ipv4 access-list acl_2 +# 10 remark TEST_ACL_2_REMARK +# ipv6 access-list acl6_1 +# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log +# 20 permit icmpv6 any any router-advertisement precedence network destopts + - name: Gather ACL interfaces facts using gathered state cisco.iosxr.iosxr_acls: state: gathered @@ -1079,184 +2020,131 @@ EXAMPLES = """ # Task Output (redacted) # ----------------------- # - -# "gathered": [ -# { -# "acls": [ -# { -# "aces": [ -# { -# "remark": "TEST_ACL_1_REMARK", -# "sequence": 16 -# }, -# { -# "destination": { -# "address": "198.51.100.0", -# "wildcard_bits": "0.0.0.15" -# }, -# "grant": "permit", -# "protocol": "tcp", -# "protocol_options": { -# "tcp": { -# "rst": true -# } -# }, -# "sequence": 21, -# "source": { -# "host": "192.0.2.10", -# "port_protocol": { -# "range": { -# "end": "121", -# "start": "pop3" -# } -# } -# } -# }, -# { -# "destination": { -# "address": "198.51.100.0", -# "wildcard_bits": "0.0.0.15" -# }, -# "dscp": { -# "lt": "af12" -# }, -# "grant": "deny", -# "protocol": "icmp", -# "protocol_options": { -# "icmp": { -# "reassembly_timeout": true -# } -# }, -# "sequence": 23, -# "source": { -# "any": true -# } -# } -# ], -# "name": "acl_1" -# }, -# { -# "aces": [ -# { -# "remark": "TEST_ACL_2_REMARK", -# "sequence": 10 -# } -# ], -# "name": "acl_2" -# } -# ], -# "afi": "ipv4" -# }, -# { -# "acls": [ -# { -# "aces": [ -# { -# "authen": true, -# "destination": { -# "any": true -# }, -# "grant": "deny", -# "log": true, -# "protocol": "tcp", -# "protocol_options": { -# "tcp": { -# "syn": true -# } -# }, -# "routing": true, -# "sequence": 10, -# "source": { -# "port_protocol": { -# "range": { -# "end": "telnet", -# "start": "ftp" -# } -# }, -# "prefix": "2001:db8:1234::/48" -# }, -# "ttl": { -# "range": { -# "end": 250, -# "start": 180 -# } -# } -# }, -# { -# "destination": { -# "any": true -# }, -# "destopts": true, -# "grant": "permit", -# "precedence": "network", -# "protocol": "icmpv6", -# "protocol_options": { -# "icmpv6": { -# "router_advertisement": true -# } -# }, -# "sequence": 20, -# "source": { -# "any": true -# } -# } -# ], -# "name": "acl6_1" -# } -# ], -# "afi": "ipv6" -# } -# ] +# gathered: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 # Using rendered - name: Render platform specific commands (without connecting to the device) cisco.iosxr.iosxr_acls: config: - - afi: ipv4 - acls: - - name: acl_2 - aces: - - sequence: 11 - grant: permit - protocol: igmp - source: - host: 198.51.100.130 - destination: - any: true - ttl: - eq: 100 - - - sequence: 12 - grant: deny - source: - any: true - destination: - any: true - protocol: icmp + - afi: ipv4 + acls: + - name: acl_2 + aces: + - sequence: 11 + grant: permit + protocol: igmp + source: + host: 198.51.100.130 + destination: + any: true + ttl: + eq: 100 + - sequence: 12 + grant: deny + source: + any: true + destination: + any: true + protocol: icmp state: rendered # Task Output (redacted) # ----------------------- -# "rendered": [ -# "ipv4 access-list acl_2", -# "11 permit igmp host 198.51.100.130 any ttl eq 100", -# "12 deny icmp any any" +# rendered: +# - ipv4 access-list acl_2 +# - 11 permit igmp host 198.51.100.130 any ttl eq 100 +# - 12 deny icmp any any # Using parsed # parsed.cfg # ------------ -# # ipv4 access-list acl_1 -# 10 remark TEST_ACL_2_REMARK +# 16 remark TEST_ACL_1_REMARK +# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst +# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 # ipv4 access-list acl_2 -# 11 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log -# 21 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts +# 10 remark TEST_ACL_2_REMARK # ipv6 access-list acl6_1 # 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log -# 20 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts +# 20 permit icmpv6 any any router-advertisement precedence network destopts - name: Parse externally provided ACL config to agnostic model cisco.iosxr.iosxr_acls: @@ -1265,142 +2153,84 @@ EXAMPLES = """ # Task Output (redacted) # ----------------------- -# "parsed": [ -# { -# "acls": [ -# { -# "aces": [ -# { -# "remark": "TEST_ACL_2_REMARK", -# "sequence": 10 -# } -# ], -# "name": "acl_1" -# }, -# { -# "aces": [ -# { -# "authen": true, -# "destination": { -# "any": true -# }, -# "grant": "deny", -# "log": true, -# "protocol": "tcp", -# "protocol_options": { -# "tcp": { -# "syn": true -# } -# }, -# "routing": true, -# "sequence": 11, -# "source": { -# "port_protocol": { -# "range": { -# "end": "telnet", -# "start": "ftp" -# } -# }, -# "prefix": "2001:db8:1234::/48" -# }, -# "ttl": { -# "range": { -# "end": 250, -# "start": 180 -# } -# } -# }, -# { -# "destination": { -# "any": true -# }, -# "destopts": true, -# "grant": "permit", -# "packet_length": { -# "eq": 576 -# }, -# "precedence": "network", -# "protocol": "icmpv6", -# "protocol_options": { -# "icmpv6": { -# "router_advertisement": true -# } -# }, -# "sequence": 21, -# "source": { -# "any": true -# } -# } -# ], -# "name": "acl_2" -# } -# ], -# "afi": "ipv4" -# }, -# { -# "acls": [ -# { -# "aces": [ -# { -# "authen": true, -# "destination": { -# "any": true -# }, -# "grant": "deny", -# "log": true, -# "protocol": "tcp", -# "protocol_options": { -# "tcp": { -# "syn": true -# } -# }, -# "routing": true, -# "sequence": 10, -# "source": { -# "port_protocol": { -# "range": { -# "end": "telnet", -# "start": "ftp" -# } -# }, -# "prefix": "2001:db8:1234::/48" -# }, -# "ttl": { -# "range": { -# "end": 250, -# "start": 180 -# } -# } -# }, -# { -# "destination": { -# "any": true -# }, -# "destopts": true, -# "grant": "permit", -# "packet_length": { -# "eq": 576 -# }, -# "precedence": "network", -# "protocol": "icmpv6", -# "protocol_options": { -# "icmpv6": { -# "router_advertisement": true -# } -# }, -# "sequence": 20, -# "source": { -# "any": true -# } -# } -# ], -# "name": "acl6_1" -# } -# ], -# "afi": "ipv6" -# } -# ] +# parsed: +# - acls: +# - aces: +# - remark: TEST_ACL_1_REMARK +# sequence: 16 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# grant: permit +# protocol: tcp +# protocol_options: +# tcp: +# rst: true +# sequence: 21 +# source: +# host: 192.0.2.10 +# port_protocol: +# range: +# end: '121' +# start: pop3 +# - destination: +# address: 198.51.100.0 +# wildcard_bits: 0.0.0.15 +# dscp: +# lt: af12 +# grant: deny +# protocol: icmp +# protocol_options: +# icmp: +# reassembly_timeout: true +# sequence: 23 +# source: +# any: true +# name: acl_1 +# - aces: +# - remark: TEST_ACL_2_REMARK +# sequence: 10 +# name: acl_2 +# afi: ipv4 +# - acls: +# - aces: +# - authen: true +# destination: +# any: true +# grant: deny +# log: true +# protocol: tcp +# protocol_options: +# tcp: +# syn: true +# routing: true +# sequence: 10 +# source: +# port_protocol: +# range: +# end: telnet +# start: ftp +# prefix: 2001:db8:1234::/48 +# ttl: +# range: +# end: 250 +# start: 180 +# - destination: +# any: true +# destopts: true +# grant: permit +# precedence: network +# protocol: icmpv6 +# protocol_options: +# icmpv6: +# router_advertisement: true +# sequence: 20 +# source: +# any: true +# name: acl6_1 +# afi: ipv6 """ + RETURN = """ before: description: The configuration prior to the model invocation. @@ -1428,6 +2258,28 @@ commands: - 16 remark TEST_ACL_1_REMARK - 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst - 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12 +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - ipv6 access-list acl6_1 + - 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log + - 20 permit icmpv6 any any router-advertisement precedence network destopts +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: list + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: list + sample: > + This output will always be in the same format as the + module argspec. """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_banner.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_banner.py index 2d80022b9..909d79511 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_banner.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_banner.py @@ -70,7 +70,7 @@ EXAMPLES = """ - name: Configure banner from file cisco.iosxr.iosxr_banner: banner: motd - text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" + text: '{{ lookup(''file'', ''./config_partial/raw_banner.cfg'') }}' state: present """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp.py deleted file mode 100644 index 9a42225ab..000000000 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp.py +++ /dev/null @@ -1,365 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# -# (c) 2019, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -# - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ -module: iosxr_bgp -author: Nilashish Chakraborty (@NilashishC) -short_description: Module to configure BGP protocol settings. -description: -- This module provides configuration management of global BGP parameters on devices - running Cisco IOS-XR -version_added: 1.0.0 -deprecated: - alternative: iosxr_bgp_global - why: Updated module released with more functionality. - removed_at_date: '2023-01-29' -notes: -- This module works with connection C(network_cli). See L(the IOS-XR Platform Options,../network/user_guide/platform_iosxr.html). -options: - config: - description: - - Specifies the BGP related configuration. - type: dict - suboptions: - bgp_as: - description: - - Specifies the BGP Autonomous System (AS) number to configure on the device. - type: int - required: true - router_id: - description: - - Configures the BGP routing process router-id value. - type: str - log_neighbor_changes: - description: - - Enable/disable logging neighbor up/down and reset reason. - type: bool - neighbors: - description: - - Specifies BGP neighbor related configurations. - type: list - elements: dict - suboptions: - neighbor: - description: - - Neighbor router address. - type: str - required: true - remote_as: - description: - - Remote AS of the BGP neighbor to configure. - type: int - required: true - update_source: - description: - - Source of the routing updates. - type: str - password: - description: - - Password to authenticate the BGP peer connection. - type: str - enabled: - description: - - Administratively shutdown or enable a neighbor. - type: bool - description: - description: - - Neighbor specific description. - type: str - advertisement_interval: - description: - - Specifies the minimum interval (in seconds) between sending BGP routing - updates. - - The range is from 0 to 600. - type: int - tcp_mss: - description: - - Specifies the TCP initial maximum segment size to use. - - The range is from 68 to 10000. - type: int - ebgp_multihop: - description: - - Specifies the maximum hop count for EBGP neighbors not on directly connected - networks. - - The range is from 0 to 255. - type: int - timers: - description: - - Specifies BGP neighbor timer related configurations. - type: dict - suboptions: - keepalive: - description: - - Frequency with which the Cisco IOS-XR software sends keepalive messages - to its peer. - - The range is from 0 to 65535. - type: int - holdtime: - description: - - Interval after not receiving a keepalive message that the software - declares a peer dead. - - The range is from 3 to 65535. - type: int - min_neighbor_holdtime: - description: - - Interval specifying the minimum acceptable hold-time from a BGP - neighbor. - - The minimum acceptable hold-time must be less than, or equal to, - the interval specified in the holdtime argument. - - The range is from 3 to 65535. - type: int - address_family: - description: - - Specifies BGP address family related configurations. - type: list - elements: dict - suboptions: - afi: - description: - - Type of address family to configure. - choices: - - ipv4 - - ipv6 - required: true - type: str - safi: - description: - - Specifies the type of cast for the address family. - choices: - - flowspec - - unicast - - multicast - - labeled-unicast - type: str - default: unicast - redistribute: - description: - - Specifies the redistribute information from another routing protocol. - type: list - elements: dict - suboptions: - protocol: - description: - - Specifies the protocol for configuring redistribute information. - type: str - choices: - - ospf - - ospfv3 - - eigrp - - isis - - static - - connected - - lisp - - mobile - - rip - - subscriber - required: true - id: - description: - - Identifier for the routing protocol for configuring redistribute - information. - - Valid for protocols 'ospf', 'eigrp', 'isis' and 'ospfv3'. - type: str - metric: - description: - - Specifies the metric for redistributed routes. - type: int - route_map: - description: - - Specifies the route map reference. - type: str - networks: - description: - - Specify networks to announce via BGP. - - For operation replace, this option is mutually exclusive with root level - networks option. - type: list - elements: dict - suboptions: - network: - description: - - Network ID to announce via BGP. - required: true - aliases: - - prefix - type: str - masklen: - description: - - Subnet mask length for the network to announce(e.g, 8, 16, 24, etc.). - type: int - required: true - route_map: - description: - - Route map to modify the attributes. - type: str - operation: - description: - - Specifies the operation to be performed on the BGP process configured on the - device. - - In case of merge, the input configuration will be merged with the existing BGP - configuration on the device. - - In case of replace, if there is a diff between the existing configuration and - the input configuration, the existing configuration will be replaced by the - input configuration for every option that has the diff. - - In case of override, all the existing BGP configuration will be removed from - the device and replaced with the input configuration. - - In case of delete the existing BGP configuration will be removed from the device. - default: merge - type: str - choices: - - merge - - replace - - override - - delete -""" - -EXAMPLES = """ -- name: configure global bgp as 65000 - cisco.iosxr.iosxr_bgp: - bgp_as: 65000 - router_id: 1.1.1.1 - neighbors: - - neighbor: 182.168.10.1 - remote_as: 500 - description: PEER_1 - - neighbor: 192.168.20.1 - remote_as: 500 - update_source: GigabitEthernet 0/0/0/0 - address_family: - - name: ipv4 - cast: unicast - networks: - - network: 192.168.2.0/23 - - network: 10.0.0.0/8 - redistribute: - - protocol: ospf - id: 400 - metric: 110 - -- name: remove bgp as 65000 from config - ios_bgp: - bgp_as: 65000 - state: absent -""" - -RETURN = """ -commands: - description: The list of configuration mode commands to send to the device - returned: always - type: list - sample: - - router bgp 65000 - - bgp router-id 1.1.1.1 - - neighbor 182.168.10.1 remote-as 500 - - neighbor 182.168.10.1 description PEER_1 - - neighbor 192.168.20.1 remote-as 500 - - neighbor 192.168.20.1 update-source GigabitEthernet0/0/0/0 - - address-family ipv4 unicast - - redistribute ospf 400 metric 110 - - network 192.168.2.0/23 - - network 10.0.0.0/8 - - exit -""" -from ansible.module_utils._text import to_text - -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.cli.config.bgp.process import ( - REDISTRIBUTE_PROTOCOLS, -) -from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.module import ( - NetworkModule, -) - - -def main(): - """main entry point for module execution""" - network_spec = { - "network": dict(aliases=["prefix"], required=True), - "masklen": dict(type="int", required=True), - "route_map": dict(), - } - - redistribute_spec = { - "protocol": dict(choices=REDISTRIBUTE_PROTOCOLS, required=True), - "id": dict(), - "metric": dict(type="int"), - "route_map": dict(), - } - - timer_spec = { - "keepalive": dict(type="int"), - "holdtime": dict(type="int"), - "min_neighbor_holdtime": dict(type="int"), - } - - neighbor_spec = { - "neighbor": dict(required=True), - "remote_as": dict(type="int", required=True), - "update_source": dict(), - "password": dict(no_log=True), - "enabled": dict(type="bool"), - "description": dict(), - "advertisement_interval": dict(type="int"), - "ebgp_multihop": dict(type="int"), - "tcp_mss": dict(type="int"), - "timers": dict(type="dict", options=timer_spec), - } - - address_family_spec = { - "afi": dict(choices=["ipv4", "ipv6"], required=True), - "safi": dict( - choices=["flowspec", "labeled-unicast", "multicast", "unicast"], - default="unicast", - ), - "networks": dict(type="list", elements="dict", options=network_spec), - "redistribute": dict( - type="list", - elements="dict", - options=redistribute_spec, - ), - } - - config_spec = { - "bgp_as": dict(type="int", required=True), - "router_id": dict(), - "log_neighbor_changes": dict(type="bool"), - "neighbors": dict(type="list", elements="dict", options=neighbor_spec), - "address_family": dict( - type="list", - elements="dict", - options=address_family_spec, - ), - } - - argument_spec = { - "config": dict(type="dict", options=config_spec), - "operation": dict( - default="merge", - choices=["merge", "replace", "override", "delete"], - ), - } - - module = NetworkModule( - argument_spec=argument_spec, - supports_check_mode=True, - ) - - try: - result = module.edit_config(config_filter="router bgp") - except Exception as exc: - module.fail_json(msg=to_text(exc)) - - module.exit_json(**result) - - -if __name__ == "__main__": - main() diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_address_family.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_address_family.py index 3010a2f7f..b0cf5a8c7 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_address_family.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_address_family.py @@ -492,17 +492,17 @@ EXAMPLES = """ cisco.iosxr.iosxr_bgp_address_family: state: merged config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -597,10 +597,10 @@ EXAMPLES = """ cisco.iosxr.iosxr_bgp_address_family: state: replaced config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 10 # Task output @@ -674,10 +674,10 @@ EXAMPLES = """ cisco.iosxr.iosxr_bgp_address_family: state: overridden config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 10 @@ -768,17 +768,17 @@ EXAMPLES = """ cisco.iosxr.iosxr_bgp_address_family: state: rendered config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -808,21 +808,21 @@ EXAMPLES = """ # # Using gathered # ------------- -- name: Merge the provided configuration with the existing running configuration +- name: Gather existing running configuration cisco.iosxr.iosxr_bgp_address_family: state: gathered config: - as_number: "65536" + as_number: '65536' address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast vrf: vrf1 dynamic_med: 9 redistribute: - protocol: connected metric: 10 - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast dynamic_med: 10 redistribute: - protocol: application @@ -860,8 +860,8 @@ EXAMPLES = """ # # Using parsed # -#parsed.cfg -#------------ +# parsed.cfg +# ------------ # router bgp 65536 # bgp router-id 192.0.1.1 # address-family ipv4 unicast diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_global.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_global.py index bddd8789a..fe444a9ea 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_global.py @@ -559,6 +559,23 @@ options: inheritance_disable: description: Prevent local AS from being inherited from parent. type: bool + no_prepend: + description: Do not prepend local AS to announcements from this neighbor. + type: dict + suboptions: + set: + type: bool + description: Do not prepend local AS to announcements from this neighbor. + replace_as: + type: dict + description: Prepend only local AS to announcements to this neighbor. + suboptions: + set: + type: bool + description: Prepend only local AS to announcements to this neighbor. + dual_as: + type: bool + description: Dual-AS mode. log: description: Logging update messages per neighbor. type: dict @@ -604,6 +621,16 @@ options: disable: description: Disable RPKI origin-AS validation. type: bool + password: + type: dict + description: Set a password. + suboptions: + encrypted: + type: str + description: Specifies an ENCRYPTED password will follow. + inheritance_disable: + description: Prevent password from being inherited from parent. + type: bool receive_buffer_size: description: Set socket and BGP receive buffer size.Example <512-131072>. type: int @@ -697,6 +724,16 @@ options: update_source: description: Source of routing updates.Refer vendor document for valid values. type: str + use: + description: Use a neighbor-group and session-group template. + type: dict + suboptions: + neighbor_group: + description: Inherit configuration from a neighbor-group. + type: str + session_group: + description: Inherit address-family independent config from a session-group + type: str nsr: description: Enable non-stop-routing support for all neighbors. type: dict @@ -893,73 +930,98 @@ options: description: - The state the configuration should be left in. type: str - choices: [deleted, merged, replaced, gathered, rendered, parsed, purged] + choices: [deleted, merged, replaced, gathered, rendered, parsed, purged, overridden] default: merged """ EXAMPLES = """ -##### Using Merged ########################################## ------------------------------------------------------------------ - -# configuration on device Before merge state: - - -#RP/0/0/CPU0:10#show running-config router bgp -#Thu Feb 4 09:38:36.245 UTC -#% No such configuration item(s) -#RP/0/0/CPU0:10# - -# --------------Merge state--------------- -# - name: Merge the following configuration -# cisco.iosxr.iosxr_bgp_global: -# config: -# as_number: 65536 -# default_metric: 5 -# socket: -# receive_buffer_size: 514 -# send_buffer_size: 4098 -# bgp: -# confederation: -# identifier: 4 -# bestpath: -# med: -# confed: True -# cluster_id: 5 -# router_id: 192.0.2.10 -# neighbors: -# - neighbor: 192.0.2.13 -# remote_as: 65538 -# bfd: -# fast_detect: -# strict_mode: True -# multiplier: 6 -# minimum_interval: 20 -# vrfs: -# - vrf: vrf1 -# default_metric: 5 -# ---------------------------------------- +# Using merged # +# Before state +# ------------ +# RP/0/0/CPU0:10#show running-config router bgp +# Thu Feb 4 09:38:36.245 UTC +# % No such configuration item(s) +# RP/0/0/CPU0:10# +- name: Merge the following BGP global configuration + cisco.iosxr.iosxr_bgp_global: + config: + as_number: 65536 + default_metric: 5 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.13 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 +# +# Task Output: +# --------------- +# +# before: {} # commands: -# - "router bgp 65536", -# - "bgp cluster-id 5", -# - "bgp router-id 192.0.2.10", -# - "bgp bestpath med confed", -# - "bgp confederation identifier 4", -# - "default-metric 5", -# - "socket receive-buffer-size 514", -# - "socket send-buffer-size 4098", -# - "neighbor 192.0.2.13", -# - "bfd fast-detect strict-mode", -# - "bfd minimum-interval 20", -# - "bfd multiplier 6", -# - "remote-as 65538", -# - "vrf vrf1", -# - "default-metric 5" - -# Configuration on device After Merge state: -# -------------------------------------------- +# - router bgp 65536 +# - bgp cluster-id 5 +# - bgp router-id 192.0.2.10 +# - bgp bestpath med confed +# - bgp confederation identifier 4 +# - default-metric 5 +# - socket receive-buffer-size 514 +# - socket send-buffer-size 4098 +# - neighbor 192.0.2.13 +# - bfd fast-detect strict-mode +# - bfd minimum-interval 20 +# - bfd multiplier 6 +# - remote-as 65538 +# - vrf vrf1 +# - default-metric 5 +# +# after: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 5 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.13 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +# +# After state +# ----------- # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:44:32.480 UTC @@ -982,10 +1044,10 @@ EXAMPLES = """ # ! # ! -##### Using replaced ########################################### - -# configuration on device before replaced -# -------------------------------------------- +# Using replaced +# +# Before state +# ------------ # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:44:32.480 UTC @@ -1007,49 +1069,105 @@ EXAMPLES = """ # default-metric 5 # ! # ! -# --------------Replace state--------------- -# - name: Replace the following configuration -# cisco.iosxr.iosxr_bgp_global: -# state: replaced -# config: -# as_number: 65536 -# default_metric: 4 -# socket: -# receive_buffer_size: 514 -# send_buffer_size: 4098 -# bgp: -# confederation: -# identifier: 4 -# bestpath: -# med: -# confed: True -# cluster_id: 5 -# router_id: 192.0.2.10 -# neighbors: -# - neighbor: 192.0.2.14 -# remote_as: 65538 -# bfd: -# fast_detect: -# strict_mode: True -# multiplier: 6 -# minimum_interval: 20 -# vrfs: -# - vrf: vrf1 -# default_metric: 5 -# ------------------------------------------- -# commands: -# - "router bgp 65536", -# - "default-metric 4", -# - "neighbor 192.0.2.14", -# - "bfd fast-detect strict-mode", -# - "bfd minimum-interval 20", -# - "bfd multiplier 6", -# - "remote-as 65538", -# - "no neighbor 192.0.2.13" -# configuration on device After Replaced state: -# ---------------------------------------------- +- name: Replace the following configuration + cisco.iosxr.iosxr_bgp_global: + state: replaced + config: + as_number: 65536 + default_metric: 4 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.14 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 +# +# Task Output: +# ------------- +# +# before: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 5 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.13 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +# +# commands: +# - router bgp 65536 +# - default-metric 4 +# - neighbor 192.0.2.14 +# - bfd fast-detect strict-mode +# - bfd minimum-interval 20 +# - bfd multiplier 6 +# - remote-as 65538 +# - no neighbor 192.0.2.13 +# +# after: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 4 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.14 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +# +# After state +# ----------- +# # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC # router bgp 65536 @@ -1071,11 +1189,154 @@ EXAMPLES = """ # ! # ! +# Using overridden +# +# Before state +# ------------ +# +# RP/0/0/CPU0:10#show running-config router bgp +# Thu Feb 4 09:44:32.480 UTC +# router bgp 65536 +# bgp confederation identifier 4 +# bgp router-id 192.0.2.10 +# bgp cluster-id 5 +# default-metric 5 +# socket send-buffer-size 4098 +# bgp bestpath med confed +# socket receive-buffer-size 514 +# neighbor 192.0.2.13 +# remote-as 65538 +# bfd fast-detect strict-mode +# bfd multiplier 6 +# bfd minimum-interval 20 +# ! +# vrf vrf1 +# default-metric 5 +# ! +# ! -##### Using deleted ############################################ +- name: Override running config with provided configuration + cisco.iosxr.iosxr_bgp_global: + state: overridden + config: + as_number: 65536 + default_metric: 4 + socket: + receive_buffer_size: 514 + send_buffer_size: 4098 + bgp: + confederation: + identifier: 4 + bestpath: + med: + confed: true + cluster_id: 5 + router_id: 192.0.2.10 + neighbors: + - neighbor: 192.0.2.14 + remote_as: 65538 + bfd: + fast_detect: + strict_mode: true + multiplier: 6 + minimum_interval: 20 + vrfs: + - vrf: vrf1 + default_metric: 5 +# +# Task Output: +# ------------- +# +# before: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 5 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.13 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +# +# commands: +# - router bgp 65536 +# - default-metric 4 +# - neighbor 192.0.2.14 +# - bfd fast-detect strict-mode +# - bfd minimum-interval 20 +# - bfd multiplier 6 +# - remote-as 65538 +# - no neighbor 192.0.2.13 +# +# after: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 4 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.14 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 + +# After state +# ----------- +# +# RP/0/0/CPU0:10#show running-config router bgp +# Thu Feb 4 09:54:11.161 UTC +# router bgp 65536 +# bgp confederation identifier 4 +# bgp router-id 192.0.2.10 +# bgp cluster-id 5 +# default-metric 4 +# socket send-buffer-size 4098 +# bgp bestpath med confed +# socket receive-buffer-size 514 +# neighbor 192.0.2.14 +# remote-as 65538 +# bfd fast-detect strict-mode +# bfd multiplier 6 +# bfd minimum-interval 20 +# ! +# vrf vrf1 +# default-metric 5 +# ! +# ! -# configuration on device Before deleted state -# --------------------------------------------- +# Using deleted +# +# Before state +# ------------ # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC @@ -1098,27 +1359,60 @@ EXAMPLES = """ # ! # ! # -# -------------------------------------------------------- -# - name: Delete BGP configurations handled by this module -# cisco.iosxr.iosxr_bgp_global: -# state: deleted -# config: -# as_number: 65536 + +- name: Delete BGP configurations handled by this module + cisco.iosxr.iosxr_bgp_global: + config: + as_number: 65536 + state: deleted + +# +# Task Output: +# ------------- +# +# before: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 4 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.14 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 # # commands: -# "router bgp 65536", -# "no bgp cluster-id 5", -# "no bgp router-id 192.0.2.10", -# "no bgp bestpath med confed", -# "no bgp confederation identifier 4", -# "no default-metric 4", -# "no socket receive-buffer-size 514", -# "no socket send-buffer-size 4098", -# "no neighbor 192.0.2.14", -# "no vrf vrf1" +# - router bgp 65536 +# - no bgp cluster-id 5 +# - no bgp router-id 192.0.2.10 +# - no bgp bestpath med confed +# - no bgp confederation identifier 4 +# - no default-metric 4 +# - no socket receive-buffer-size 514 +# - no socket send-buffer-size 4098 +# - no neighbor 192.0.2.14 +# - no vrf vrf1 # -# configuration on device after delete -# ------------------------------------------- +# after: +# as_number: '65536' +# +# After state +# ----------- # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 10:01:08.232 UTC @@ -1126,11 +1420,10 @@ EXAMPLES = """ # ! # - -################# Using Purged ######################################## - -# configuration on device Before Purged state -# -------------------------------------------- +# Using purged +# +# Before state +# ------------ # # RP/0/0/CPU0:10#show running-config router bgp # Thu Feb 4 09:54:11.161 UTC @@ -1138,104 +1431,138 @@ EXAMPLES = """ # bgp confederation identifier 4 # bgp router-id 192.0.2.10 # bgp cluster-id 5 -# default-metric 4 +# default-metric 5 # socket send-buffer-size 4098 # bgp bestpath med confed # socket receive-buffer-size 514 -# address-family ipv4 unicast -# neighbor 192.0.2.14 +# neighbor 192.0.2.13 # remote-as 65538 # bfd fast-detect strict-mode # bfd multiplier 6 # bfd minimum-interval 20 -# address-family ipv4 unicast # ! # vrf vrf1 # default-metric 5 # ! # ! # -# - name: Purge all BGP configurations from the device -# cisco.iosxr.iosxr_bgp_global: -# state: purged + +- name: Purge all BGP configurations from the device + cisco.iosxr.iosxr_bgp_global: + state: purged + +# +# Task Output: +# ------------- +# +# before: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 5 +# neighbors: +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.13 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +# +# commands: +# - no router bgp 65536 # -# commands: -# - no router bgp 65563 +# after: {} # -# configuration on device After purged state: -# --------------------------------------------- +# After state +# ----------- # -# #RP/0/0/CPU0:10#show running-config router bgp -# #Thu Feb 4 09:38:36.245 UTC -# #% No such configuration item(s) -# #RP/0/0/CPU0:10# +# RP/0/0/CPU0:10#show running-config router bgp +# Thu Feb 4 09:38:36.245 UTC +# % No such configuration item(s) +# RP/0/0/CPU0:10# # + # -# ################# Using Rendred ####################################################### +# Using Rendered +# ----------------- # -# - name: Render platform specific configuration lines (without connecting to the device) -# cisco.iosxr.iosxr_bgp_global: -# state: rendered -# config: -# as_number: 1 -# default_metric: 4 -# vrfs: -# - vrf: vrf3 -# bfd: -# minimum_interval: 20 -# multiplier: 10 -# bgp: -# fast_external_fallover: -# disable: True -# router_id: 1.2.3.4 -# auto_policy_soft_reset: -# disable: True -# #rd: -# # auto: True -# # #value: 1 -# timers: -# keepalive_time: 20 -# holdtime: 30 -# - vrf: vrf2 -# bgp: -# enforce_first_as: -# disable: True -# default_metric: 4 -# neighbors: -# - neighbor: 1.1.1.3 -# remote_as: 2 -# graceful_maintenance: -# set: True -# activate: -# #set: True -# inheritance_disable: True -# local_preference: -# value: 1 -# #inheritance_disable: True -# as_prepends: -# value: 2 -# rendered output -# ------------------------------------ -# "router bgp 1", -# "default-metric 4", -# "vrf vrf3", -# "bfd multiplier 10", -# "bfd minimum-interval 20", -# "bgp auto-policy-soft-reset disable", -# "bgp fast-external-fallover disable", -# "bgp router-id 1.2.3.4", -# "timers bgp 20 30", -# "vrf vrf2", -# "neighbor 1.1.1.3", -# "remote-as 2", -# "graceful-maintenance", -# "graceful-maintenance activate inheritance-disable", -# "graceful-maintenance local-preference 1", -# "graceful-maintenance as-prepends 2", -# "bgp enforce-first-as disable", -# "default-metric 4" +- name: >- + Render platform specific configuration lines (without connecting to the + device) + cisco.iosxr.iosxr_bgp_global: + state: rendered + config: + as_number: 1 + default_metric: 4 + vrfs: + - vrf: vrf3 + bfd: + minimum_interval: 20 + multiplier: 10 + bgp: + fast_external_fallover: + disable: true + router_id: 1.2.3.4 + auto_policy_soft_reset: + disable: true + timers: + keepalive_time: 20 + holdtime: 30 + - vrf: vrf2 + bgp: + enforce_first_as: + disable: true + default_metric: 4 + neighbors: + - neighbor: 1.1.1.3 + remote_as: 2 + graceful_maintenance: + set: true + activate: + inheritance_disable: true + local_preference: + value: 1 + as_prepends: + value: 2 + +# +# Task output +# ----------------------- +# rendered: +# - router bgp 1 +# - default-metric 4 +# - vrf vrf3 +# - bfd multiplier 10 +# - bfd minimum-interval 20 +# - bgp auto-policy-soft-reset disable +# - bgp fast-external-fallover disable +# - bgp router-id 1.2.3.4 +# - timers bgp 20 30 +# - vrf vrf2 +# - neighbor 1.1.1.3 +# - remote-as 2 +# - graceful-maintenance +# - graceful-maintenance activate inheritance-disable +# - graceful-maintenance local-preference 1 +# - graceful-maintenance as-prepends 2 +# - bgp enforce-first-as disable +# - default-metric 4 + +# Using parsed # -# ############## Using parsed ##################### # parsed.cfg # ------------ # router bgp 65536 @@ -1257,38 +1584,148 @@ EXAMPLES = """ # bfd minimum-interval 20 # ! # ! -# ------------------------------------ -# -# - name: Parse externally provided BGP config -# cisco.iosxr.iosxr_bgp_global: -# running_config: "{{ lookup('file', 'parsed.cfg') }}" -# state: parsed # -# #Task output using parsed -# as_number: "65536" + +- name: Parse externally provided BGP config + cisco.iosxr.iosxr_bgp_global: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + +# Task output +# ----------------------- +# parsed: +# as_number: '65536' +# bgp: +# bestpath: +# med: +# confed: true +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 # default_metric: 4 +# neighbors: +# - cluster_id: '3' +# neighbor_address: 192.0.2.11 +# remote_as: 65537 +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.14 +# remote_as: 65538 # socket: # receive_buffer_size: 514 # send_buffer_size: 4098 + +# Using gathered +# +# Before state +# ------------ +# + +# RP/0/0/CPU0:10#show running-config router bgp +# Thu Feb 4 09:38:36.245 UTC +# router bgp 65536 +# bgp confederation identifier 4 +# bgp router-id 192.0.2.10 +# bgp cluster-id 5 +# default-metric 5 +# socket send-buffer-size 4098 +# bgp bestpath med confed +# socket receive-buffer-size 514 +# neighbor 192.0.2.13 +# remote-as 65538 +# bfd fast-detect strict-mode +# bfd multiplier 6 +# bfd minimum-interval 20 +# ! +# vrf vrf1 +# default-metric 5 +# ! +# ! + +- name: Gather bgp global facts + cisco.iosxr.iosxr_bgp_global: + state: gathered + +# Task Output: +# ------------ +# +# gathered: +# as_number: '65536' # bgp: -# confederation: -# identifier: 4 # bestpath: # med: # confed: true -# cluster_id: "5" -# router_id: "192.0.2.10" +# cluster_id: '5' +# confederation: +# identifier: 4 +# router_id: 192.0.2.10 +# default_metric: 5 # neighbors: -# - neighbor: 192.0.2.11 -# remote_as: 65537 -# cluster_id: "3" -# - neighbor: "192.0.2.14" -# remote_as: 65538 -# bfd: -# fast_detect: -# strict_mode: true -# multiplier: 6 -# minimum_interval: 20 +# - bfd: +# fast_detect: +# strict_mode: true +# minimum_interval: 20 +# multiplier: 6 +# neighbor_address: 192.0.2.13 +# remote_as: 65538 +# socket: +# receive_buffer_size: 514 +# send_buffer_size: 4098 +# vrfs: +# - default_metric: 5 +# vrf: vrf1 +""" +RETURN = """ +before: + description: The configuration prior to the model invocation. + returned: always + type: dict + sample: > + The configuration returned will always be in the same format + of the parameters above. +after: + description: The resulting configuration model invocation. + returned: when changed + type: dict + sample: > + The configuration returned will always be in the same format + of the parameters above. +commands: + description: The set of commands pushed to the remote device. + returned: always + type: list + sample: + - router bgp 65536 + - bgp cluster-id 5 + - bgp router-id 192.0.2.10 + - bgp bestpath med confed + +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - router bgp 1 + - default-metric 4 + - vrf vrf3 +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: list + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: list + sample: > + This output will always be in the same format as the + module argspec. """ from ansible.module_utils.basic import AnsibleModule diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_neighbor_address_family.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_neighbor_address_family.py index 85903d307..4657d771a 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_neighbor_address_family.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_neighbor_address_family.py @@ -418,16 +418,16 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true weight: 5 - neighbor_address: 192.0.2.3 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -437,8 +437,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.4 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -447,8 +447,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.5 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -600,7 +600,7 @@ EXAMPLES = """ # capability orf prefix both # default-originate -- name: Delete the provided configuration +- name: Delete the provided configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: state: deleted config: @@ -608,8 +608,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -703,8 +703,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast default_originate: set: true weight: 4 @@ -831,7 +831,7 @@ EXAMPLES = """ # capability orf prefix both # default-originate -- name: override the provided configuration +- name: override the provided configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: state: overridden config: @@ -839,8 +839,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -912,7 +912,9 @@ EXAMPLES = """ # neighbor 192.0.2.5 # remote-as 65540 -- name: Render platform specific configuration lines with state rendered (without connecting to the device) +- name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_bgp_neighbor_address_family: state: rendered config: @@ -920,16 +922,16 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.2 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true weight: 5 - neighbor_address: 192.0.2.3 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -939,8 +941,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.4 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -949,8 +951,8 @@ EXAMPLES = """ neighbors: - neighbor_address: 192.0.2.5 address_family: - - afi: "ipv4" - safi: "unicast" + - afi: ipv4 + safi: unicast multipath: true default_originate: set: true @@ -984,8 +986,8 @@ EXAMPLES = """ # # Using parsed # -#parsed.cfg -#------------ +# parsed.cfg +# ------------ # router bgp 65536 # bgp router-id 192.0.1.1 # address-family ipv4 unicast @@ -1067,8 +1069,8 @@ EXAMPLES = """ # capability_orf_prefix: both # # -#Using Gathered -#----------------- +# Using Gathered +# ----------------- # Before state state: # ------------- # RP/0/0/CPU0:iosxr-02#show running-config router bgp @@ -1110,8 +1112,8 @@ EXAMPLES = """ # - name: Gathered the provided configuration with the existing running configuration cisco.iosxr.iosxr_bgp_neighbor_address_family: - config: - state: gathered + config: + state: gathered # Task output @@ -1157,7 +1159,6 @@ EXAMPLES = """ # set: true # capability_orf_prefix: both # - """ from ansible.module_utils.basic import AnsibleModule diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_templates.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_templates.py new file mode 100644 index 000000000..5db2cb2ad --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_bgp_templates.py @@ -0,0 +1,1708 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Copyright 2023 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +""" +The module file for iosxr_bgp_templates +""" + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +DOCUMENTATION = """ +module: iosxr_bgp_templates +short_description: Manages BGP templates resource module. +description: +- This module configures and manages the attributes of BGP templates on Cisco IOS-XR platforms. +version_added: 6.0.0 +author: Ashwini Mhatre (@amhatre) +notes: +- This module works with connection C(network_cli). +options: + config: + description: BGP template configurations. + type: dict + suboptions: + as_number: + description: Autonomous system number. + type: str + neighbor: + description: A list of BGP neighbor group configurations. + type: list + elements: dict + suboptions: + name: + description: Name of neighbor group. + type: str + address_family: + description: Enable address family and enter its config mode + type: list + elements: dict + suboptions: + afi: + description: address family. + type: str + choices: [ 'ipv4', 'ipv6' ] + safi: + description: Address Family modifier + type: str + choices: [ 'flowspec', 'mdt', 'multicast', 'mvpn', 'rt-filter', 'tunnel', 'unicast', 'labeled-unicast' , 'sr-policy'] + signalling: + type: dict + description: Signalling protocols to disable, BGP or LDP + suboptions: + bgp_disable: + type: bool + description: Select BGP to disable + ldp_disable: + type: bool + description: Select LDP to disable + advertise: + type: dict + description: Per neighbor advertisement options + suboptions: + local_labeled_route: + type: dict + description: Advertisement of routes with local-label + suboptions: + set: + type: bool + description: set local-labeled-route + disable: + type: bool + description: disable local-labeled-route + permanent_network: + type: bool + description: Allow permanent networks for this neighbor + aigp: + description: AIGP attribute + type: dict + suboptions: + disable: + description: Ignore AIGP attribute. + type: bool + set: + description: Set AIGP attribute. + type: bool + send_cost_community_disable: + description: send AIGP attribute. + type: bool + send_med: + description: send med options. + type: dict + suboptions: + set: + type: bool + description: set Send AIGP value in MED. + disable: + description: disable Send AIGP value in MED. + type: bool + allowas_in: + type: dict + description: Allow as-path with my AS present in it. + suboptions: + value: + type: int + description: Number of occurences of AS number 1-10. + set: + type: bool + description: set allowas_in + as_override: + type: dict + description: Override matching AS-number while sending update + suboptions: + set: + type: bool + description: set as_override + inheritance_disable: + type: bool + description: Prevent as-override from being inherited from the parent. + bestpath_origin_as_allow_invalid: + type: bool + description: Change default route selection criteria.Allow BGP origin-AS knobs. + capability_orf_prefix: + type: str + description: Advertise address prefix ORF capability to this neighbor. + choices: [ 'both', 'send', 'none', 'receive' ] + default_originate: + type: dict + description: Originate default route to this neighbor. + suboptions: + set: + type: bool + description: set default route. + route_policy: + type: str + description: Route policy to specify criteria to originate default + inheritance_disable: + type: bool + description: Prevent default-originate from being inherited from the parent. + encapsulation_type_srv6: + type: bool + description: Specify encapsulation type + long_lived_graceful_restart: + type: dict + description: Enable long lived graceful restart support. + suboptions: + capable: + type: bool + description: Treat neighbor as LLGR capable. + stale_time: + type: dict + description: Maximum time to wait before purging long-lived stale routes. + suboptions: + send: + type: int + description: max send time + accept: + type: int + description: max accept time + maximum_prefix: + type: dict + description: Maximum number of prefixes to accept from this peer. + suboptions: + max_limit: + type: int + description: maximum no. of prefix limit.<1-4294967295. + threshold_value: + type: int + description: hreshold value (%) at which to generate a warning msg <1-100>. + restart: + type: int + description: Restart time interval. + warning_only: + type: bool + description: Only give warning message when limit is exceeded. + discard_extra_paths: + description: Discard extra paths when limit is exceeded. + type: bool + multipath: + type: bool + description: Paths from this neighbor is eligible for multipath. + next_hop_self: + type: dict + description: Disable the next hop calculation for this neighbor. + suboptions: + set: + type: bool + description: set next hop self. + inheritance_disable: + type: bool + description: Prevent next_hop_self from being inherited from the parent. + next_hop_unchanged: + type: dict + description: Disable the next hop calculation for this neighbor. + suboptions: + set: + type: bool + description: set next hop unchanged. + inheritance_disable: + type: bool + description: Prevent next_hop_unchanged from being inherited from the parent. + multipath: + type: bool + description: Do not overwrite nexthop before advertising multipaths. + optimal_route_reflection_group_name: + type: str + description: Configure optimal-route-reflection group. + orf_route_policy: &orf_rp + type: str + description: Specify ORF and inbound filtering criteria.' + origin_as: + description: BGP origin-AS knobs. + type: dict + suboptions: + validation: + description: BGP origin-AS validation knobs. + type: dict + suboptions: + disable: + description: Disable RPKI origin-AS validation. + type: bool + remove_private_AS: + type: dict + description: Remove private AS number from outbound updates. + suboptions: + set: + type: bool + description: set remove private As. + inbound: + type: bool + description: Remove private AS number from inbound updates. + entire_aspath: + type: bool + description: remove only if all ASes in the path are private. + inheritance_disable: + type: bool + description: Prevent remove-private-AS from being inherited from the parent. + route_policy: + type: dict + description: Apply route policy to neighbor. + suboptions: + inbound: + type: str + description: Apply route policy to inbound routes. + outbound: + type: str + description: Apply route policy to outbound routes. + route_reflector_client: + type: dict + description: Configure a neighbor as Route Reflector client. + suboptions: + set: + type: bool + description: set route-reflector-client. + inheritance_disable: + type: bool + description: Prevent route-reflector-client from being inherited from the parent. + send_community_ebgp: + description: Send community attribute to this external neighbor. + type: dict + suboptions: + set: + type: bool + description: set send_community_ebgp. + inheritance_disable: + type: bool + description: Prevent send_community_ebgp from being inherited from the parent. + send_community_gshut_ebgp: + description: Allow the g-shut community to be sent to this external neighbor. + type: dict + suboptions: + set: + type: bool + description: set send_community_gshut_ebgp. + inheritance_disable: + type: bool + description: Prevent send_community_gshut_ebgp from being inherited from the parent. + send_extended_community_ebgp: + description: Send extended community attribute to this external neighbor. + type: dict + suboptions: + set: + type: bool + description: set send_extended_community_ebgp. + inheritance_disable: + type: bool + description: Prevent send_extended_community_ebgp from being inherited from the parent. + send_multicast_attributes: + description: Send multicast attributes to this neighbor . + type: dict + suboptions: + set: + type: bool + description: set send_multicast_attributes. + disable: + type: bool + description: Disable send multicast attributes. + soft_reconfiguration: &soft_reconfiguration + description: Per neighbor soft reconfiguration. + type: dict + suboptions: + inbound: + type: dict + description: inbound soft reconfiguration + suboptions: + set: + type: bool + description: set inbound + always: + type: bool + description: Allow inbound soft reconfiguration for this neighbor. Always use soft reconfig, even if route refresh is supported. + inheritance_disable: + type: bool + description: Prevent soft_reconfiguration from being inherited from the parent. + weight: + type: int + description: Set default weight for routes from this neighbor. + update: + type: dict + description: update + suboptions: + out_originator_loopcheck_disable: + type: bool + description: Disable originator loop check + out_originator_loopcheck_set: + type: bool + description: Set originator loop check + use: + description: Inherit configuration for this address-family from an af-group. + type: str + advertisement_interval: + description: Minimum interval between sending BGP routing updates.Example-<0-600>. + type: int + bfd: + description: Configure BFD parameters. + type: dict + suboptions: + fast_detect: + description: Enable Fast detection + type: dict + suboptions: + set: + description: set fast-detect + type: bool + disable: + description: Prevent bfd settings from being inherited from the parent. + type: bool + strict_mode: + description: Hold down neighbor session until BFD session is up + type: bool + minimum_interval: + description: Specifies the BFD session's minimum-interval value for the neighbor. + type: int + multiplier: + description: Specifies the BFD session's multiplier value for the neighbor. + type: int + bmp_activate: + description: Enable BMP logging for this neighbor. + type: dict + suboptions: + server: + description: Enable BMP connection to particular server.Example-<1-8>. + type: int + capability: + description: Advertise capability to the peer. + type: dict + suboptions: + additional_paths: + description: BGP additional-paths commands. + type: dict + suboptions: + send: + type: dict + description: Additional paths Send capability + suboptions: + set: + type: bool + description: set send capability + disable: + type: bool + description: set send capability + receive: + type: dict + description: Additional paths receive capability + suboptions: + set: + type: bool + description: set receive capability + disable: + type: bool + description: set receive capability + suppress: + description: Suppress advertising capability to the peer. + type: dict + suboptions: + four_byte_AS: + description: 4-byte-as capability + type: dict + suboptions: + set: + description: set 4_byte_as. + type: bool + + all: + description: all capability + type: dict + suboptions: + inheritance_disable: + description: Do not inherit this configuration from parent group. + type: bool + set: + description: set all. + type: bool + cluster_id: + description: Cluster ID of this router acting as a route reflector. + type: str + description: + description: Neighbor specific description. + type: str + dmz_link_bandwidth: + description: Propagate the DMZ link bandwidth. + type: dict + suboptions: + inheritance_disable: + description: Do not inherit this configuration from parent group. + type: bool + set: + description: set dmz-link-bandwidth. + type: bool + dscp: + description: Set IP DSCP (DiffServ CodePoint).Please refer vendor document for valid entries. + type: str + ebgp_multihop: + description: Allow EBGP neighbors not on directly connected networks. + type: dict + suboptions: + value: + description: maximum hop count.Example-<1-255>. + type: int + mpls: + description: Disable BGP MPLS forwarding. + type: bool + ebgp_recv_extcommunity_dmz: + description: Receive extcommunity dmz link bandwidth from ebgp neighbor. + type: dict + suboptions: + inheritance_disable: + description: Prevent ebgp-recv-community-dmz from being inherited from parent + type: bool + set: + description: set ebgp-recv-community-dmz. + type: bool + ebgp_send_extcommunity_dmz: + description: Send extcommunity dmz link bandwidth from ebgp neighbor. + type: dict + suboptions: + inheritance_disable: + description: Prevent ebgp-send-community-dmz from being inherited from parent + type: bool + cumulatie: + description: Send cumulative community dmz link bandwidth of all multipaths to ebgp neighbor. + type: bool + set: + description: set ebgp-send-community-dmz. + type: bool + egress_engineering: + type: dict + description: Enable egress peer engineering for this neighbor. + suboptions: + inheritance_disable: + description: Prevent egress-engineering from being inherited from parent + type: bool + set: + description: set egress-engineering. + type: bool + enforce_first_as: + description: Enforce the first AS for EBGP routes + type: dict + suboptions: + disable: + description: disable enforce 1st as + type: bool + graceful_maintenance: + description: + Attributes for Graceful Maintenance. This will cause neighbors to de-prefer routes from this router and + choose alternates. This allows the router to be brought in or out of service gracefully. + type: dict + suboptions: + set: + description: set graceful maintenance. + type: bool + activate: + description: Routes will be announced with the graceful maintenance attributes while activated either here or under router + bgp configuration. + type: dict + suboptions: + inheritance_disable: + description: Prevent activate from being inherited from the parent. + type: bool + set: + description: activate. + type: bool + as_prepends: + description: Number of times to prepend the local AS number to the + AS path of routes. Default=0 + type: dict + suboptions: + inheritance_disable: + description: Prevent as prepends from being inherited from the parent. + type: bool + value: + description: Range of values for as prepends.Example-<0-6> . + type: int + local_preference: + description: local preference with which to advertise routes to ibgp neigbors. Default=No Touch + type: dict + suboptions: + value: + description: Range of values for Local Preference.Example-<0-4294967295> . + type: int + inheritance_disable: + description: Prevent local preference from being inherited from the parent. + type: bool + graceful_restart: + description: Enable graceful restart support for this neighbor. + type: dict + suboptions: + restart_time: + description: Restart time advertised to neighbors in seconds <1-4095>. + type: int + stalepath_time: + description: Maximum time to wait for restart of GR capable peers in seconds <1-4095>. + type: int + ignore_connected_check: + description: Bypass the directly connected nexthop check for single-hop eBGP peering + type: dict + suboptions: + inheritance_disable: + description: Prevent ignore-connected-check from being inherited from the parent + type: bool + set: + description: set ignore-connected-check. + type: bool + idle_watch_time: + type: int + description: Maximum time to wait for deletion of IDLE state dynamic peer. + internal_vpn_client: + type: bool + description: Preserve iBGP CE neighbor path in ATTR_SET across VPN core. + keychain: + description: Set keychain based authentication. + type: dict + suboptions: + name: + description: Name of the key chain - maximum 32 characters. + type: str + inheritance_disable: + description: Prevent keychain from being inherited from parent. + type: bool + local: + type: dict + description: Configure local parameter + suboptions: + address: + description: IPv4 address + type: dict + suboptions: + ipv4_address: + description: IPv4 address <A.B.C.D>. + type: str + inheritance_disable: + description: Prevent local address from being inherited from parent. + type: bool + local_as: + description: Specify local AS number. + type: dict + suboptions: + value: + description: 2 byte, 4 byte As number + type: int + no_prepend: + description: Do not prepend local AS to announcements from this neighbor. + type: dict + suboptions: + set: + type: bool + description: Do not prepend local AS to announcements from this neighbor. + replace_as: + type: dict + description: Prepend only local AS to announcements to this neighbor. + suboptions: + set: + type: bool + description: Prepend only local AS to announcements to this neighbor. + dual_as: + type: bool + description: Dual-AS mode. + inheritance_disable: + description: Prevent local AS from being inherited from parent. + type: bool + local_address_subnet: + type: str + description: Local address subnet of routing updates + log: + description: Logging update messages per neighbor. + type: dict + suboptions: + log_message: + description: Logging update/notification messages per neighbor. + type: dict + suboptions: + in: + description: Inbound log messages + type: dict + suboptions: + value: + description: Range for message log buffer size <1-100>. + type: int + disable: + description: Disable inbound message logging. + type: bool + inheritance_disable: + description: Prevents the msg log from being inherited from the parent. + type: bool + out: + description: Outbound log messages + type: dict + suboptions: + value: + description: Range for message log buffer size <1-100>. + type: int + disable: + description: Disable inbound message logging. + type: bool + inheritance_disable: + description: Prevents the msg log from being inherited from the parent. + type: bool + maximum_peers: + type: int + description: Maximum dynamic neighbors <1-4095>. + password: + type: dict + description: Set a password. + suboptions: + encrypted: + type: str + description: Specifies an ENCRYPTED password will follow. + inheritance_disable: + description: Prevent password from being inherited from parent. + type: bool + peer_set: + type: int + description: Assign this neighbor to a peer-set used for egress peer engineering <1-255>. + precedence: + type: str + choices: ["critical", "flash", "flash-override", "immediate", "internet", "network", "priority","routine"] + description: Set precedence + receive_buffer_size: + description: Set socket and BGP receive buffer size.Example <512-131072>. + type: int + remote_as: + description: Neighbor Autonomous System. + type: int + remote_as_list: + description: Remote as-list configuration + type: str + send_buffer_size: + description: Set socket and BGP send buffer size.Example <4096-131072>. + type: int + session_open_mode: + description: Establish BGP session using this TCP open mode. + type: str + choices: [ 'active-only', 'both', 'passive-only' ] + shutdown: + description: Administratively shut down this neighbor. + type: dict + suboptions: + inheritance_disable: + description: Prevent shutdown from being inherited from parent + type: bool + set: + description: shutdown. + type: bool + tcp: + description: TCP session configuration commands. + type: dict + suboptions: + mss: + description: Maximum Segment Size. + type: dict + suboptions: + value: + description: TCP initial maximum segment size. + type: int + inheritance_disable: + description: Prevent mss from being inherited from parent + type: bool + timers: + description: BGP per neighbor timers. + type: dict + suboptions: + keepalive_time: + description: keepalive interval <0-65535>. + type: int + holdtime: + description: hold time <3-65535> or 0 Disable hold time. + type: int + min_holdtime: + description: Minimum acceptable holdtime from neighbor <3-65535>. + type: int + ttl_security: + description: Enable EBGP TTL security. + type: dict + suboptions: + inheritance_disable: + description: Prevent ttl-security from being inherited from parent + type: bool + set: + description: set ttl-security + type: bool + update: + description: BGP Update configuration. + type: dict + suboptions: + in: + description: Inbound update message handling. + type: dict + suboptions: + filtering: + description: Inbound update message filtering + type: dict + suboptions: + attribute_filter: + description: Attribute-filter configuration. + type: dict + suboptions: + group: + description: Name of group. + type: str + logging: + description: Update filtering syslog message. + type: dict + suboptions: + disable: + description: Disable update filtering syslog message. + type: bool + update_message: + description: Filtered update messages. + type: dict + suboptions: + buffers: + description: Number of buffers to store filtered update messages. + type: int + update_source: + description: Source of routing updates.Refer vendor document for valid values. + type: str + use: + description: Use a neighbor-group and session-group template. + type: dict + suboptions: + neighbor_group: + description: Inherit configuration from a neighbor-group. + type: str + session_group: + description: Inherit address-family independent config from a session-group + type: str + running_config: + description: + - This option is used only with state I(parsed). + - The value of this option should be the output received from the Iosxr device by + executing the command B(show running-config router bgp). + - The state I(parsed) reads the configuration from C(running_config) option and + transforms it into Ansible structured data as per the resource module's argspec + and the value is then returned in the I(parsed) key within the result. + type: str + state: + description: + - The state the configuration should be left in. + type: str + choices: [deleted, merged, overridden, replaced, gathered, rendered, parsed] + default: merged +""" + +EXAMPLES = """ +# Using merged +# Before state: +# ------------- +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:00:12.668 UTC +# % No such configuration item(s) +# +# RP/0/RP0/CPU0:10# + +- name: Merge the provided configuration with the existing running configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: '1' + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + state: merged + +# Task Output +# ----------- +# before: {} +# commands: +# - router bgp 65536 +# - neighbor-group neighbor-group1 +# - advertisement-interval 10 +# - bfd fast-detect strict-mode +# - internal-vpn-client +# - precedence critical +# - address-family ipv4 unicast +# - advertise local-labeled-route +# - neighbor-group neighbor-group2 +# - dmz-link-bandwidth +# - description neighbor-group2 +# - cluster-id 1 +# - ebgp-multihop 255 +# - egress-engineering +# - internal-vpn-client +# - ignore-connected-check +# - local-as 6 +# - local address inheritance-disable +# - precedence flash +# - receive-buffer-size 512 +# - send-buffer-size 4096 +# - session-open-mode both +# - tcp mss inheritance-disable +# - update-source Loopback919 +# - ttl-security +# - graceful-maintenance +# - graceful-maintenance as-prepends 0 +# after: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 10 +# bfd: +# fast_detect: +# strict_mode: true +# internal_vpn_client: true +# name: neighbor-group1 +# precedence: critical +# - cluster_id: '1' +# description: neighbor-group2 +# dmz_link_bandwidth: +# set: true +# ebgp_multihop: +# value: 255 +# egress_engineering: +# set: true +# graceful_maintenance: +# as_prepends: +# value: 0 +# set: true +# ignore_connected_check: +# set: true +# internal_vpn_client: true +# local: +# address: +# inheritance_disable: true +# local_as: +# value: 6 +# name: neighbor-group2 +# precedence: flash +# receive_buffer_size: 512 +# send_buffer_size: 4096 +# session_open_mode: both +# tcp: +# mss: +# inheritance_disable: true +# ttl_security: +# set: true +# update_source: Loopback919 + +# After state: +# ------------ +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:14:33.116 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# bfd fast-detect strict-mode +# precedence critical +# advertisement-interval 10 +# internal-vpn-client +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 255 +# egress-engineering +# precedence flash +# graceful-maintenance +# as-prepends 0 +# ! +# tcp mss inheritance-disable +# local-as 6 +# cluster-id 1 +# dmz-link-bandwidth +# description neighbor-group2 +# ttl-security +# local address inheritance-disable +# update-source Loopback919 +# ignore-connected-check +# session-open-mode both +# send-buffer-size 4096 +# receive-buffer-size 512 +# internal-vpn-client +# ! +# ! + + +# Using replaced +# Before state: +# ------------ +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:14:33.116 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# bfd fast-detect strict-mode +# precedence critical +# advertisement-interval 10 +# internal-vpn-client +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 255 +# egress-engineering +# precedence flash +# graceful-maintenance +# as-prepends 0 +# ! +# tcp mss inheritance-disable +# local-as 6 +# cluster-id 1 +# dmz-link-bandwidth +# description neighbor-group2 +# ttl-security +# local address inheritance-disable +# update-source Loopback919 +# ignore-connected-check +# session-open-mode both +# send-buffer-size 4096 +# receive-buffer-size 512 +# internal-vpn-client +# ! +# ! + +- name: Replaced given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + name: neighbor-group1 + precedence: flash + - cluster_id: '2' + description: replace neighbor-group2 + ebgp_multihop: + value: 254 + graceful_maintenance: + as_prepends: + value: 2 + set: true + update_source: Loopback917 + name: neighbor-group2 + state: replaced + +# Task Output +# ----------- +# before: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 10 +# bfd: +# fast_detect: +# strict_mode: true +# internal_vpn_client: true +# name: neighbor-group1 +# precedence: critical +# - cluster_id: '1' +# description: neighbor-group2 +# dmz_link_bandwidth: +# set: true +# ebgp_multihop: +# value: 255 +# egress_engineering: +# set: true +# graceful_maintenance: +# as_prepends: +# value: 0 +# set: true +# ignore_connected_check: +# set: true +# internal_vpn_client: true +# local: +# address: +# inheritance_disable: true +# local_as: +# value: 6 +# name: neighbor-group2 +# precedence: flash +# receive_buffer_size: 512 +# send_buffer_size: 4096 +# session_open_mode: both +# tcp: +# mss: +# inheritance_disable: true +# ttl_security: +# set: true +# update_source: Loopback919 +# commands: +# - router bgp 65536 +# - neighbor-group neighbor-group1 +# - no bfd fast-detect strict-mode +# - no internal-vpn-client +# - advertisement-interval 12 +# - precedence flash +# - neighbor-group neighbor-group2 +# - no dmz-link-bandwidth +# - no egress-engineering +# - no internal-vpn-client +# - no ignore-connected-check +# - no local-as 6 +# - no local address inheritance-disable +# - no precedence flash +# - no receive-buffer-size 512 +# - no send-buffer-size 4096 +# - no session-open-mode both +# - no tcp mss inheritance-disable +# - no ttl-security +# - description replace neighbor-group2 +# - cluster-id 2 +# - ebgp-multihop 254 +# - update-source Loopback917 +# - graceful-maintenance as-prepends 2 +# after: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 12 +# name: neighbor-group1 +# precedence: flash +# - cluster_id: '2' +# description: replace neighbor-group2 +# ebgp_multihop: +# value: 254 +# graceful_maintenance: +# as_prepends: +# value: 2 +# set: true +# name: neighbor-group2 +# update_source: Loopback917 + +# After state: +# ------------ +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:23:34.104 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# precedence flash +# advertisement-interval 12 +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 254 +# graceful-maintenance +# as-prepends 2 +# ! +# cluster-id 2 +# description replace neighbor-group2 +# update-source Loopback917 +# ! +# ! + + +# Using deleted +# Before state: +# ------------- +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:23:34.104 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# precedence flash +# advertisement-interval 12 +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 254 +# graceful-maintenance +# as-prepends 2 +# ! +# cluster-id 2 +# description replace neighbor-group2 +# update-source Loopback917 +# ! +# ! + +- name: Delete given bgp_nbr_address_family configuration + cisco.iosxr.iosxr_bgp_templates: &deleted + config: + state: deleted + +# Task Output +# ----------- +# before: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 12 +# name: neighbor-group1 +# precedence: flash +# - cluster_id: '2' +# description: replace neighbor-group2 +# ebgp_multihop: +# value: 254 +# graceful_maintenance: +# as_prepends: +# value: 2 +# set: true +# name: neighbor-group2 +# update_source: Loopback917 +# commands: +# - router bgp 65536 +# - no neighbor-group neighbor-group1 +# - no neighbor-group neighbor-group2 +# after: {} + +# After state: +# ------------- +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:00:12.668 UTC +# % No such configuration item(s) +# +# RP/0/RP0/CPU0:10# + +# Using gathered +# Before state: +# ------------- +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:30:38.785 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# bfd fast-detect strict-mode +# precedence critical +# advertisement-interval 10 +# internal-vpn-client +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 255 +# egress-engineering +# precedence flash +# graceful-maintenance +# as-prepends 0 +# ! +# tcp mss inheritance-disable +# local-as 6 +# cluster-id 1 +# dmz-link-bandwidth +# description neighbor-group2 +# ttl-security +# local address inheritance-disable +# update-source Loopback919 +# ignore-connected-check +# session-open-mode both +# send-buffer-size 4096 +# receive-buffer-size 512 +# internal-vpn-client +# ! +# ! + +- name: Gather given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: &id001 + config: + state: gathered + +# Task output +# ----------- +# gathered: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 10 +# bfd: +# fast_detect: +# strict_mode: true +# internal_vpn_client: true +# name: neighbor-group1 +# precedence: critical +# - cluster_id: '1' +# description: neighbor-group2 +# dmz_link_bandwidth: +# set: true +# ebgp_multihop: +# value: 255 +# egress_engineering: +# set: true +# graceful_maintenance: +# as_prepends: +# value: 0 +# set: true +# ignore_connected_check: +# set: true +# internal_vpn_client: true +# local: +# address: +# inheritance_disable: true +# local_as: +# value: 6 +# name: neighbor-group2 +# precedence: flash +# receive_buffer_size: 512 +# send_buffer_size: 4096 +# session_open_mode: both +# tcp: +# mss: +# inheritance_disable: true +# ttl_security: +# set: true +# update_source: Loopback919 + + +# Using overridden + +# Before state: +# ------------- +# RP/0/RP0/CPU0:10#show running-config router bgp +# Thu Mar 23 10:30:38.785 UTC +# router bgp 65536 +# neighbor-group neighbor-group1 +# bfd fast-detect strict-mode +# precedence critical +# advertisement-interval 10 +# internal-vpn-client +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 255 +# egress-engineering +# precedence flash +# graceful-maintenance +# as-prepends 0 +# ! +# tcp mss inheritance-disable +# local-as 6 +# cluster-id 1 +# dmz-link-bandwidth +# description neighbor-group2 +# ttl-security +# local address inheritance-disable +# update-source Loopback919 +# ignore-connected-check +# session-open-mode both +# send-buffer-size 4096 +# receive-buffer-size 512 +# internal-vpn-client +# ! +# ! +- name: override given bgp_templates configuration + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + disable: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + bfd: + fast_detect: + strict_mode: true + name: neighbor-group1 + precedence: flash + state: overridden + +# Task Output +# ----------- +# before: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 10 +# bfd: +# fast_detect: +# strict_mode: true +# internal_vpn_client: true +# name: neighbor-group1 +# precedence: critical +# - cluster_id: '1' +# description: neighbor-group2 +# dmz_link_bandwidth: +# set: true +# ebgp_multihop: +# value: 255 +# egress_engineering: +# set: true +# graceful_maintenance: +# as_prepends: +# value: 0 +# set: true +# ignore_connected_check: +# set: true +# internal_vpn_client: true +# local: +# address: +# inheritance_disable: true +# local_as: +# value: 6 +# name: neighbor-group2 +# precedence: flash +# receive_buffer_size: 512 +# send_buffer_size: 4096 +# session_open_mode: both +# tcp: +# mss: +# inheritance_disable: true +# ttl_security: +# set: true +# update_source: Loopback919 +# commands: +# - router bgp 65536 +# - no neighbor-group neighbor-group2 +# - neighbor-group neighbor-group1 +# - no internal-vpn-client +# - advertisement-interval 12 +# - precedence flash +# - address-family ipv4 unicast +# - no advertise local-labeled-route +# - advertise local-labeled-route disable +# after: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# disable: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 12 +# bfd: +# fast_detect: +# strict_mode: true +# name: neighbor-group1 +# precedence: flash + + +# Using rendered +- name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: '1' + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + state: rendered + +# Task Output +# ----------- +# rendered: +# - router bgp 65536 +# - neighbor-group neighbor-group1 +# - advertisement-interval 10 +# - bfd fast-detect strict-mode +# - internal-vpn-client +# - precedence critical +# - address-family ipv4 unicast +# - advertise local-labeled-route +# - neighbor-group neighbor-group2 +# - dmz-link-bandwidth +# - description neighbor-group2 +# - cluster-id 1 +# - ebgp-multihop 255 +# - egress-engineering +# - internal-vpn-client +# - ignore-connected-check +# - local-as 6 +# - local address inheritance-disable +# - precedence flash +# - receive-buffer-size 512 +# - send-buffer-size 4096 +# - session-open-mode both +# - tcp mss inheritance-disable +# - update-source Loopback919 +# - ttl-security +# - graceful-maintenance +# - graceful-maintenance as-prepends 0 + + +# Using parsed +- name: Parse externally provided BGP configuration + register: result + cisco.iosxr.iosxr_bgp_templates: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + +# content of pared.cfg +# router bgp 65536 +# neighbor-group neighbor-group1 +# bfd fast-detect strict-mode +# precedence critical +# advertisement-interval 10 +# internal-vpn-client +# address-family ipv4 unicast +# advertise local-labeled-route +# ! +# ! +# neighbor-group neighbor-group2 +# ebgp-multihop 255 +# egress-engineering +# precedence flash +# graceful-maintenance +# as-prepends 0 +# ! +# tcp mss inheritance-disable +# local-as 6 +# cluster-id 1 +# dmz-link-bandwidth +# description neighbor-group2 +# ttl-security +# local address inheritance-disable +# update-source Loopback919 +# idle-watch-time 30 +# ignore-connected-check +# session-open-mode both +# send-buffer-size 4096 +# receive-buffer-size 512 +# internal-vpn-client +# ! +# ! +# Task output +# ----------- +# parsed: +# as_number: '65536' +# neighbor: +# - address_family: +# - advertise: +# local_labeled_route: +# set: true +# afi: ipv4 +# safi: unicast +# advertisement_interval: 10 +# bfd: +# fast_detect: +# strict_mode: true +# internal_vpn_client: true +# name: neighbor-group1 +# precedence: critical +# - cluster_id: '1' +# description: neighbor-group2 +# dmz_link_bandwidth: +# set: true +# ebgp_multihop: +# value: 255 +# egress_engineering: +# set: true +# graceful_maintenance: +# as_prepends: +# value: 0 +# set: true +# ignore_connected_check: +# set: true +# internal_vpn_client: true +# local: +# address: +# inheritance_disable: true +# local_as: +# value: 6 +# name: neighbor-group2 +# precedence: flash +# receive_buffer_size: 512 +# send_buffer_size: 4096 +# session_open_mode: both +# tcp: +# mss: +# inheritance_disable: true +# ttl_security: +# set: true +# update_source: Loopback919 +""" + +RETURN = """ +before: + description: The configuration prior to the module execution. + returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged) + type: dict + sample: > + This output will always be in the same format as the + module argspec. +after: + description: The resulting configuration after module execution. + returned: when changed + type: dict + sample: > + This output will always be in the same format as the + module argspec. +commands: + description: The set of commands pushed to the remote device. + returned: when I(state) is C(merged), C(replaced), C(overridden), C(deleted) or C(purged) + type: list + sample: + - router bgp 65536 + - neighbor-group neighbor-group1 + - advertisement-interval 10 + - bfd fast-detect strict-mode + - internal-vpn-client +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - router bgp 65536 + - neighbor-group neighbor-group1 + - advertisement-interval 10 + - bfd fast-detect strict-mode + - internal-vpn-client +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: list + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: list + sample: > + This output will always be in the same format as the + module argspec. +""" + +from ansible.module_utils.basic import AnsibleModule + +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.argspec.bgp_templates.bgp_templates import ( + Bgp_templatesArgs, +) +from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.config.bgp_templates.bgp_templates import ( + Bgp_templates, +) + + +def main(): + """ + Main entry point for module execution + + :returns: the result form module invocation + """ + module = AnsibleModule( + argument_spec=Bgp_templatesArgs.argument_spec, + mutually_exclusive=[["config", "running_config"]], + required_if=[ + ["state", "merged", ["config"]], + ["state", "replaced", ["config"]], + ["state", "overridden", ["config"]], + ["state", "rendered", ["config"]], + ["state", "parsed", ["running_config"]], + ], + supports_check_mode=True, + ) + + result = Bgp_templates(module).execute_module() + module.exit_json(**result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_command.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_command.py index 5838de0da..814ee5d68 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_command.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_command.py @@ -88,32 +88,32 @@ EXAMPLES = """ - name: run multiple commands on remote nodes cisco.iosxr.iosxr_command: commands: - - show version - - show interfaces - - {command: example command that prompts, prompt: expected prompt, answer: yes} + - show version + - show interfaces + - {command: example command that prompts, prompt: expected prompt, answer: true} - name: run multiple commands and evaluate the output cisco.iosxr.iosxr_command: commands: - - show version - - show interfaces + - show version + - show interfaces wait_for: - - result[0] contains IOS-XR - - result[1] contains Loopback0 + - result[0] contains IOS-XR + - result[1] contains Loopback0 -- name: multiple prompt, multiple answer (mandatory check for all prompts) +- name: 'multiple prompt, multiple answer (mandatory check for all prompts)' cisco.iosxr.iosxr_command: commands: - - command: key config-key password-encryption - prompt: - - "Enter old key :" - - "Enter new key :" - - "Enter confirm key :" - answer: - - "test1234" - - "test12345" - - "test12345" - check_all: true + - command: key config-key password-encryption + prompt: + - 'Enter old key :' + - 'Enter new key :' + - 'Enter confirm key :' + answer: + - test1234 + - test12345 + - test12345 + check_all: true """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_config.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_config.py index f723b5697..7fc59fefa 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_config.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_config.py @@ -21,10 +21,11 @@ version_added: 1.0.0 extends_documentation_fragment: - cisco.iosxr.iosxr notes: -- This module works with connection C(network_cli). See L(the IOS-XR Platform Options,../network/user_guide/platform_iosxr.html). +- This module works with connection C(network_cli). + See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_iosxr.html) - This module does not support C(netconf) connection -- Abbreviated commands are NOT idempotent, see L(Network FAQ,../network/user_guide/faq.html - #why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands). +- Abbreviated commands are NOT idempotent, see + U(https://docs.ansible.com/ansible/latest/network/user_guide/faq.html#why-do-the-config-modules-always-return-changed-true-with-abbreviated-commands) - Avoid service disrupting changes (viz. Management IP) from config replace. - Do not use C(end) in the replace config file. - To ensure idempotency and correct diff the configuration lines in the relevant module options should be similar to how they @@ -194,28 +195,26 @@ EXAMPLES = """ - name: configure interface settings cisco.iosxr.iosxr_config: lines: - - description test interface - - ip address 172.31.1.1 255.255.255.0 + - description test interface + - ip address 172.31.1.1 255.255.255.0 parents: interface GigabitEthernet0/0/0/0 - name: load a config from disk and replace the current config cisco.iosxr.iosxr_config: src: config.cfg replace: config - backup: yes + backup: 'yes' -- name: for idempotency, use full-form commands +- name: 'for idempotency, use full-form commands' cisco.iosxr.iosxr_config: lines: - # - shut - - shutdown - # parents: int g0/0/0/1 + - shutdown parents: interface GigabitEthernet0/0/0/1 - name: configurable backup path cisco.iosxr.iosxr_config: src: config.cfg - backup: yes + backup: true backup_options: filename: backup.cfg dir_path: /home/user @@ -227,6 +226,11 @@ commands: returned: If there are commands to run against the host type: list sample: ['hostname foo', 'router ospf 1', 'router-id 1.1.1.1'] +updates: + description: The set of commands that will be pushed to the remote device + returned: If there are commands to run against the host + type: list + sample: ['hostname foo', 'router ospf 1', 'router-id 1.1.1.1'] backup_path: description: The full path to the backup file returned: when backup is yes @@ -344,7 +348,6 @@ def run(module, result): exclusive = module.params["exclusive"] check_mode = module.check_mode label = module.params["label"] - candidate_config = get_candidate(module) running_config = get_running_config(module) @@ -392,6 +395,7 @@ def run(module, result): commands.extend(module.params["after"]) result["commands"] = commands + result["updates"] = commands commit = not check_mode diff = load_config( @@ -437,9 +441,9 @@ def main(): mutually_exclusive = [("lines", "src"), ("parents", "src")] required_if = [ - ("match", "strict", ["lines"]), - ("match", "exact", ["lines"]), - ("replace", "block", ["lines"]), + ("match", "strict", ["lines", "src"], True), + ("match", "exact", ["lines", "src"], True), + ("replace", "block", ["lines", "src"], True), ("replace", "config", ["src"]), ] diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_facts.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_facts.py index 38925b985..c406a18b7 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_facts.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_facts.py @@ -67,25 +67,25 @@ EXAMPLES = """ # Collect only the config and default facts - cisco.iosxr.iosxr_facts: gather_subset: - - config + - config # Do not collect hardware facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!hardware' + - '!hardware' # Collect only the lacp facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!all' - - '!min' + - '!all' + - '!min' gather_network_resources: - - lacp + - lacp # Do not collect lacp_interfaces facts - cisco.iosxr.iosxr_facts: gather_network_resources: - - '!lacp_interfaces' + - '!lacp_interfaces' # Collect lacp and minimal default facts - cisco.iosxr.iosxr_facts: @@ -95,11 +95,11 @@ EXAMPLES = """ # Collect only the interfaces facts - cisco.iosxr.iosxr_facts: gather_subset: - - '!all' - - '!min' + - '!all' + - '!min' gather_network_resources: - - interfaces - - l2_interfaces + - interfaces + - l2_interfaces """ RETURN = """ @@ -147,6 +147,10 @@ ansible_net_memtotal_mb: description: The total memory on the remote device in Mb returned: when hardware is configured type: int +ansible_net_cpu_utilization: + description: The current CPU utilization of the device + returned: when hardware is configured + type: dict # config ansible_net_config: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_hostname.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_hostname.py index a41aaf77d..7ea657a32 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_hostname.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_hostname.py @@ -71,9 +71,9 @@ EXAMPLES = """ # Before state: # ------------- -#RP/0/RP0/CPU0:ios#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC -#hostname ios +# RP/0/RP0/CPU0:ios#show running-config hostname +# Thu Jan 20 19:48:56.011 UTC +# hostname ios # Merged play: # ------------ @@ -94,7 +94,7 @@ EXAMPLES = """ # ------------ # RP/0/0/CPU0:Router1#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC +# Thu Jan 20 19:48:56.011 UTC # hostname Router1 @@ -103,7 +103,7 @@ EXAMPLES = """ # ------------- # RP/0/0/CPU0:Router1#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC +# Thu Jan 20 19:48:56.011 UTC # hostname Router1 # Deleted play: @@ -122,9 +122,9 @@ EXAMPLES = """ # After state: # ------------ -#RP/0/RP0/CPU0:ios#show running-config hostname -#Thu Jan 20 19:55:12.971 UTC -#hostname ios +# RP/0/RP0/CPU0:ios#show running-config hostname +# Thu Jan 20 19:55:12.971 UTC +# hostname ios # Using state: overridden # Before state: @@ -151,17 +151,17 @@ EXAMPLES = """ # After state: # ------------ -#RP/0/RP0/CPU0:RouterTest#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC -#hostname RouterTest +# RP/0/RP0/CPU0:RouterTest#show running-config hostname +# Thu Jan 20 19:48:56.011 UTC +# hostname RouterTest # Using state: replaced # Before state: # ------------- -#RP/0/RP0/CPU0:RouterTest#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC -#hostname RouterTest +# RP/0/RP0/CPU0:RouterTest#show running-config hostname +# Thu Jan 20 19:48:56.011 UTC +# hostname RouterTest # Replaced play: # -------------- @@ -185,9 +185,9 @@ EXAMPLES = """ # Before state: # ------------- -#RP/0/RP0/CPU0:RouterTest#show running-config hostname -#Thu Jan 20 19:48:56.011 UTC -#hostname RouterTest +# RP/0/RP0/CPU0:RouterTest#show running-config hostname +# Thu Jan 20 19:48:56.011 UTC +# hostname RouterTest # Gathered play: # -------------- diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_interfaces.py index b1c169cbc..bfa25edca 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_interfaces.py @@ -34,7 +34,10 @@ author: - Sumit Jaiswal (@justjais) - Rohit Thakur (@rohitthakur2590) notes: -- This module works with connection C(network_cli). See L(the IOS-XR Platform Options,../network/user_guide/platform_iosxr.html). +- This module works with connection C(network_cli). + See U(https://docs.ansible.com/ansible/latest/network/user_guide/platform_iosxr.html) +- The module examples uses callback plugin (stdout_callback = yaml) to generate task + output in yaml format. options: config: description: A dictionary of interface options @@ -102,221 +105,335 @@ options: EXAMPLES = """ # Using merged + # Before state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# description Replaced by Ansible Team -# mtu 2000 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# dot1q native vlan 1021 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! + - name: Configure Ethernet interfaces cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - duplex: full + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + duplex: full state: merged + +# Task Output +# ----------- +# +# before: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - description Configured by Ansible +# - no shutdown +# - interface GigabitEthernet0/0/0/3 +# - description Configured by Ansible Network +# - duplex full +# - shutdown +# after: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# enabled: true +# name: GigabitEthernet0/0/0/2 +# - description: Configured by Ansible Network +# duplex: full +# enabled: false +# name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# description Configured and Merged by Ansible Network -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# description Configured and Merged by Ansible Network -# mtu 2600 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/2 +# description Configured by Ansible +# ! +# interface preconfigure GigabitEthernet0/0/0/3 +# description Configured by Ansible Network # duplex full # shutdown -# dot1q native vlan 1021 # ! + # Using replaced + # Before state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# description Configured by Ansible -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# description Test -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# dot1q native vlan 1021 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/2 +# description Configured by Ansible # ! -- name: Configure following interfaces and replace their existing config +# interface preconfigure GigabitEthernet0/0/0/3 +# description Configured by Ansible Network +# duplex full +# shutdown +# ! + +- name: Replace their existing configuration per interface cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - mtu: 2000 - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - duplex: auto + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + mtu: 2000 + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + duplex: auto state: replaced + +# Task Output +# ----------- +# +# before: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# enabled: true +# name: GigabitEthernet0/0/0/2 +# - description: Configured by Ansible Network +# duplex: full +# enabled: false +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - mtu 2000 +# - interface GigabitEthernet0/0/0/3 +# - duplex half +# after: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# enabled: true +# mtu: 2000 +# name: GigabitEthernet0/0/0/2 +# - description: Configured by Ansible Network +# duplex: half +# enabled: false +# name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# description Configured by Ansible -# shutdown +# interface Loopback888 +# ! +# interface Loopback999 +# ! +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/2 -# description Configured and Replaced by Ansible +# interface preconfigure GigabitEthernet0/0/0/2 +# description Configured by Ansible # mtu 2000 -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 # ! -# interface GigabitEthernet0/0/0/3 -# description Configured and Replaced by Ansible Network -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 +# interface preconfigure GigabitEthernet0/0/0/3 +# description Configured by Ansible Network # duplex half # shutdown -# dot1q native vlan 1021 # ! + # Using overridden + # Before state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# description Configured by Ansible -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/2 # description Configured by Ansible -# mtu 2600 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# duplex full +# mtu 2000 +# ! +# interface preconfigure GigabitEthernet0/0/0/3 +# description Configured by Ansible Network +# duplex half # shutdown -# dot1q native vlan 1021 # ! -- name: Override interfaces + +- name: Override interfaces configuration cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - description: Configured by Ansible - enabled: true - duplex: auto - - name: GigabitEthernet0/0/0/3 - description: Configured by Ansible Network - enabled: false - speed: 1000 + - name: GigabitEthernet0/0/0/2 + description: Configured by Ansible + enabled: true + duplex: auto + - name: GigabitEthernet0/0/0/3 + description: Configured by Ansible Network + enabled: false + speed: 1000 state: overridden + +# Task Output +# ----------- +# +# before: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# enabled: true +# mtu: 2000 +# name: GigabitEthernet0/0/0/2 +# - description: Configured by Ansible Network +# duplex: half +# enabled: false +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - no mtu +# - duplex half +# - interface GigabitEthernet0/0/0/3 +# - no description +# - no shutdown +# - no duplex +# after: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# duplex: half +# enabled: true +# name: GigabitEthernet0/0/0/2 +# - enabled: true +# name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# description Configured and Overridden by Ansible Network -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# speed 1000 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# description Configured and Overridden by Ansible Network -# mtu 2000 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# duplex full -# shutdown -# dot1q native vlan 1021 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/2 +# description Configured by Ansible +# duplex half # ! +# interface preconfigure GigabitEthernet0/0/0/3 +# ! + # Using deleted + # Before state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# description Configured and Overridden by Ansible Network -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# speed 1000 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# description Configured and Overridden by Ansible Network -# mtu 2000 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# duplex full -# shutdown -# dot1q native vlan 1021 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/2 +# description Configured by Ansible +# duplex half # ! -- name: Delete IOSXR interfaces as in given arguments +# interface preconfigure GigabitEthernet0/0/0/3 +# ! + +- name: Delete interfaces arguments cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/2 - - name: GigabitEthernet0/0/0/3 + - name: GigabitEthernet0/0/0/2 + - name: GigabitEthernet0/0/0/3 state: deleted + +# Task Output +# ----------- +# +# before: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - description: Configured by Ansible +# duplex: half +# enabled: true +# name: GigabitEthernet0/0/0/2 +# - enabled: true +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - no description +# - no duplex +# after: +# - enabled: true +# name: Loopback888 +# - enabled: true +# name: Loopback999 +# - enabled: true +# name: GigabitEthernet0/0/0/2 +# - enabled: true +# name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# vrf custB -# ipv4 address 178.18.169.23 255.255.255.0 -# dot1q native vlan 30 +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# vrf custB -# ipv4 address 10.10.0.2 255.255.255.0 -# dot1q native vlan 1021 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! +# interface preconfigure GigabitEthernet0/0/0/2 +# ! +# interface preconfigure GigabitEthernet0/0/0/3 +# ! + # Using parsed -# parsed.cfg -# ------------ + +# File: parsed.cfg +# ---------------- # # interface Loopback888 # description test for ansible @@ -337,95 +454,76 @@ EXAMPLES = """ # interface GigabitEthernet0/0/0/4 # shutdown # ! -# - name: Convert ACL interfaces config to argspec without connecting to the appliance + +# - name: Parse provided configuration # cisco.iosxr.iosxr_interfaces: # running_config: "{{ lookup('file', './parsed.cfg') }}" # state: parsed -# Task Output (redacted) -# ----------------------- -# "parsed": [ -# { -# "name": "MgmtEth0/RP0/CPU0/0" -# }, -# { -# "access_groups": [ -# { -# "acls": [ -# { -# "direction": "in", -# "name": "acl_1" -# }, -# { -# "direction": "out", -# "name": "acl_2" -# } -# ], -# "afi": "ipv4" -# }, -# { -# "acls": [ -# { -# "direction": "in", -# "name": "acl6_1" -# }, -# { -# "direction": "out", -# "name": "acl6_2" -# } -# ], -# "afi": "ipv6" -# } -# ], -# "name": "GigabitEthernet0/0/0/0" -# }, -# { -# "access_groups": [ -# { -# "acls": [ -# { -# "direction": "out", -# "name": "acl_1" -# } -# ], -# "afi": "ipv4" -# } -# ], -# "name": "GigabitEthernet0/0/0/1" -# } -# ] -# } + +# Task Output +# ----------- +# +# parsed: +# - name: MgmtEth0/RP0/CPU0/0 +# - access_groups: +# - acls: +# - direction: in +# name: acl_1 +# - direction: out +# name: acl_2 +# afi: ipv4 +# - acls: +# - direction: in +# name: acl6_1 +# - direction: out +# name: acl6_2 +# afi: ipv6 +# name: GigabitEthernet0/0/0/0 +# - access_groups: +# - acls: +# - direction: out +# name: acl_1 +# afi: ipv4 +# name: GigabitEthernet0/0/0/1 + + # Using rendered + - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_interfaces: config: - - name: GigabitEthernet0/0/0/0 - description: Configured and Merged by Ansible-Network - mtu: 110 - enabled: true - duplex: half - - name: GigabitEthernet0/0/0/1 - description: Configured and Merged by Ansible-Network - mtu: 2800 - enabled: false - speed: 100 - duplex: full + - name: GigabitEthernet0/0/0/0 + description: Configured and Merged by Ansible-Network + mtu: 110 + enabled: true + duplex: half + - name: GigabitEthernet0/0/0/1 + description: Configured and Merged by Ansible-Network + mtu: 2800 + enabled: false + speed: 100 + duplex: full state: rendered -# Task Output (redacted) -# ----------------------- -# "rendered": [ -# "interface GigabitEthernet0/0/0/0", -# "description Configured and Merged by Ansible-Network", -# "mtu 110", -# "duplex half", -# "no shutdown", -# "interface GigabitEthernet0/0/0/1", -# "description Configured and Merged by Ansible-Network", -# "mtu 2800", -# "speed 100", -# "duplex full", -# "shutdown" -# ] + +# Task Output +# ----------- +# +# rendered: +# - interface GigabitEthernet0/0/0/0 +# - description Configured and Merged by Ansible-Network +# - mtu 110 +# - duplex half +# - no shutdown +# - interface GigabitEthernet0/0/0/1 +# - description Configured and Merged by Ansible-Network +# - mtu 2800 +# - speed 100 +# - duplex full +# - shutdown + + # Using gathered + # Before state: # ------------ # @@ -449,58 +547,28 @@ EXAMPLES = """ # interface GigabitEthernet0/0/0/4 # shutdown # ! -- name: Gather IOSXR interfaces as in given arguments + +- name: Gather facts for interfaces cisco.iosxr.iosxr_interfaces: config: state: gathered -# Task Output (redacted) -# ----------------------- -# -# "gathered": [ -# { -# "description": "test for ansible", -# "enabled": false, -# "name": "Loopback888" -# }, -# { -# "description": "Configured and Merged by Ansible-Network", -# "duplex": "half", -# "enabled": true, -# "mtu": 110, -# "name": "GigabitEthernet0/0/0/0" -# }, -# { -# "enabled": false, -# "name": "GigabitEthernet0/0/0/3" -# }, -# { -# "enabled": false, -# "name": "GigabitEthernet0/0/0/4" -# } -# ] -# After state: -# ------------ + +# Task Output +# ----------- # -# RP/0/0/CPU0:an-iosxr-02#show running-config interface -# interface Loopback888 -# description test for ansible -# shutdown -# ! -# interface MgmtEth0/0/CPU0/0 -# ipv4 address 10.8.38.70 255.255.255.0 -# ! -# interface GigabitEthernet0/0/0/0 -# description Configured and Merged by Ansible-Network -# mtu 110 -# ipv4 address 172.31.1.1 255.255.255.0 -# duplex half -# ! -# interface GigabitEthernet0/0/0/3 -# shutdown -# ! -# interface GigabitEthernet0/0/0/4 -# shutdown -# ! +# gathered: +# - description: test for ansible +# enabled: false +# name: Loopback888 +# - description: Configured and Merged by Ansible-Network +# duplex: half +# enabled: true +# mtu: 110 +# name: GigabitEthernet0/0/0/0 +# - enabled: false +# name: GigabitEthernet0/0/0/3 +# - enabled: false +# name: GigabitEthernet0/0/0/4 """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l2_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l2_interfaces.py index 2c5da2d4d..0614dbda4 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l2_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l2_interfaces.py @@ -120,8 +120,19 @@ options: list when configuring Q-in-any vlan as input. Note, that this option is valid only with respect to Sub-Interface and is not valid when configuring for Interface. + - This option is DEPRECATED and replaced with qvlan, + this attribute will be removed after 2026-06-01. type: list elements: int + qvlan: + description: + - 802.1Q VLAN configuration. Note that it can accept either 2 VLAN IDs when + configuring Q-in-Q VLAN, or it will accept 1 VLAN ID and 'any' as input + list when configuring Q-in-any vlan as input. Note, that this option is + valid only with respect to Sub-Interface and is not valid when configuring + for Interface. + type: list + elements: str propagate: description: - Propagate Layer 2 transport events. Note that it will work only when the @@ -172,20 +183,21 @@ EXAMPLES = """ - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/3 - native_vlan: 20 - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: tunnel - - name: GigabitEthernet0/0/0/3.900 - l2transport: true - q_vlan: - - 20 - - 40 + - name: GigabitEthernet0/0/0/3 + native_vlan: 20 + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: tunnel + - name: GigabitEthernet0/0/0/3.900 + l2transport: true + q_vlan: + - 20 + - 40 state: merged + # After state: # ------------ # @@ -234,20 +246,23 @@ EXAMPLES = """ # dot1q vlan 20 40 # ! -- name: Replaces device configuration of listed interfaces with provided configuration +- name: >- + Replaces device configuration of listed interfaces with provided + configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: forward - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - any + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: forward + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - any state: replaced + # After state: # ------------- # @@ -299,17 +314,18 @@ EXAMPLES = """ - name: Override device configuration of all interfaces with provided configuration cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 - l2transport: true - l2protocol: - - stp: forward - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - any + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 + l2transport: true + l2protocol: + - stp: forward + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - any state: overridden + # After state: # ------------- # @@ -358,7 +374,7 @@ EXAMPLES = """ - name: "Delete L2 attributes of given interfaces (Note: This won't delete the interface itself)" cisco.iosxr.iosxr_l2_interfaces: config: - - name: GigabitEthernet0/0/0/4 + - name: GigabitEthernet0/0/0/4 state: deleted # After state: @@ -500,25 +516,21 @@ EXAMPLES = """ - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_l2_interfaces: config: - - - name: GigabitEthernet0/0/0/1 - native_vlan: 10 - l2transport: true - l2protocol: - - - pvst: tunnel - - - cdp: forward - propagate: true - - - name: GigabitEthernet0/0/0/3.900 - q_vlan: - - 20 - - 40 - - - name: GigabitEthernet0/0/0/4 - native_vlan: 40 + - name: GigabitEthernet0/0/0/1 + native_vlan: 10 + l2transport: true + l2protocol: + - pvst: tunnel + - cdp: forward + propagate: true + - name: GigabitEthernet0/0/0/3.900 + q_vlan: + - 20 + - 40 + - name: GigabitEthernet0/0/0/4 + native_vlan: 40 state: rendered + # Task Output (redacted) # ----------------------- # "rendered": [ @@ -645,9 +657,6 @@ EXAMPLES = """ # shutdown # dot1q native vlan 40 # ! - - - """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l3_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l3_interfaces.py index 98785f6b4..babf38a90 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l3_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_l3_interfaces.py @@ -113,56 +113,70 @@ EXAMPLES = """ # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.0.2 255.255.255.0 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/2 # ! -# interface GigabitEthernet0/0/0/4 -# ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 # ! - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/2 - ipv4: - - address: 192.168.0.1/24 - - name: GigabitEthernet0/0/0/3 - ipv4: - - address: 192.168.2.1/24 - secondary: true + - name: GigabitEthernet0/0/0/2 + ipv4: + - address: 192.168.0.1/24 + - name: GigabitEthernet0/0/0/3 + ipv4: + - address: 192.168.2.1/24 + secondary: true state: merged +# Task Output +# ----------- +# +# before: +# - name: Loopback888 +# - name: Loopback999 +# - name: GigabitEthernet0/0/0/2 +# - name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - ipv4 address 192.168.0.1 255.255.255.0 +# - interface GigabitEthernet0/0/0/3 +# - ipv4 address 192.168.2.1 255.255.255.0 secondary +# after: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.0.1/24 +# name: GigabitEthernet0/0/0/2 +# - ipv4: +# - address: 192.168.2.1/24 +# secondary: true +# name: GigabitEthernet0/0/0/3 + # After state: # ------------ # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# ipv4 address 192.168.0.1 255.255.255.0 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.1.0 255.255.255.0 -# ipv4 address 192.168.2.1 255.255.255.0 secondary -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/2 +# ipv4 address 192.168.0.1 255.255.255.0 # ! -# interface GigabitEthernet0/0/0/4 -# ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 +# ipv4 address 192.168.2.1 255.255.255.0 secondary # ! # Using overridden @@ -171,57 +185,76 @@ EXAMPLES = """ # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# ipv4 address 192.168.0.1 255.255.255.0 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.1.0 255.255.255.0 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/2 +# ipv4 address 192.168.0.1 255.255.255.0 # ! -# interface GigabitEthernet0/0/0/4 -# ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 +# ipv4 address 192.168.2.1 255.255.255.0 secondary # ! - name: Override device configuration of all interfaces with provided configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - ipv4: - - address: 192.168.0.1/24 - - name: GigabitEthernet0/0/0/3.700 - ipv4: - - address: 192.168.0.2/24 - - address: 192.168.2.1/24 - secondary: true + - name: GigabitEthernet0/0/0/3 + ipv4: + - address: 192.168.0.2/24 + - address: 192.168.2.1/24 + secondary: true state: overridden + +# Task Output +# ----------- +# +# before: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.0.1/24 +# name: GigabitEthernet0/0/0/2 +# - ipv4: +# - address: 192.168.2.1/24 +# secondary: true +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/2 +# - no ipv4 address +# - interface GigabitEthernet0/0/0/3 +# - ipv4 address 192.168.0.2 255.255.255.0 +# - ipv4 address 192.168.0.1 255.255.255.0 +# after: +# - name: Loopback888 +# - name: Loopback999 +# - name: GigabitEthernet0/0/0/2 +# - ipv4: +# - address: 192.168.0.1/24 +# - address: 192.168.2.1/24 +# secondary: true +# name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.0.1 255.255.255.0 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 -# ipv4 address 192.168.0.2 255.255.255.0 -# ipv4 address 192.168.2.1 255.255.255.0 secondary +# interface preconfigure GigabitEthernet0/0/0/2 # ! -# interface GigabitEthernet0/0/0/4 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 +# ipv4 address 192.168.0.1 255.255.255.0 +# ipv4 address 192.168.2.1 255.255.255.0 secondary # ! # Using replaced @@ -230,55 +263,78 @@ EXAMPLES = """ # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.0.2 255.255.255.0 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 -# ipv4 address 192.168.0.1 255.255.255.0 +# interface preconfigure GigabitEthernet0/0/0/2 # ! -# interface GigabitEthernet0/0/0/4 -# ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 +# ipv4 address 192.168.0.1 255.255.255.0 +# ipv4 address 192.168.2.1 255.255.255.0 secondary # ! -- name: Replaces device configuration of listed interfaces with provided configuration +- name: >- + Replaces device configuration of listed interfaces with provided + configuration cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - ipv6: - - address: fd5d:12c9:2201:1::1/64 - - name: GigabitEthernet0/0/0/4 - ipv4: - - address: 192.168.0.2/24 + - name: GigabitEthernet0/0/0/3 + ipv6: + - address: 'fd5d:12c9:2201:1::1/64' + - name: GigabitEthernet0/0/0/2 + ipv4: + - address: 192.168.0.2/24 state: replaced + +# Task Output +# ----------- +# +# before: +# - name: Loopback888 +# - name: Loopback999 +# - name: GigabitEthernet0/0/0/2 +# - ipv4: +# - address: 192.168.0.1/24 +# - address: 192.168.2.1/24 +# secondary: true +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/3 +# - no ipv4 address +# - ipv6 address fd5d:12c9:2201:1::1/64 +# - interface GigabitEthernet0/0/0/2 +# - ipv4 address 192.168.0.2 255.255.255.0 +# after: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.0.2/24 +# name: GigabitEthernet0/0/0/2 +# - ipv6: +# - address: fd5d:12c9:2201:1::1/64 +# name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# shutdown -# ! -# interface GigabitEthernet0/0/0/2 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/3 -# ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3.700 -# ipv4 address 192.168.0.1 255.255.255.0 +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/4 +# interface preconfigure GigabitEthernet0/0/0/2 # ipv4 address 192.168.0.2 255.255.255.0 -# shutdown +# ! +# interface preconfigure GigabitEthernet0/0/0/3 +# ipv6 address fd5d:12c9:2201:1::1/64 # ! # Using deleted @@ -287,112 +343,180 @@ EXAMPLES = """ # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# ipv4 address 192.168.2.1 255.255.255.0 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# ipv4 address 192.168.3.1 255.255.255.0 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# ipv4 address 192.168.0.2 255.255.255.0 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 -# ipv4 address 192.168.0.1 255.255.255.0 +# interface preconfigure GigabitEthernet0/0/0/2 +# ipv4 address 192.168.0.2 255.255.255.0 # ! -# interface GigabitEthernet0/0/0/4 +# interface preconfigure GigabitEthernet0/0/0/3 # ipv6 address fd5d:12c9:2201:1::1/64 -# shutdown # ! -- name: "Delete L3 attributes of given interfaces (Note: This won't delete the interface itself)" +- name: Delete attributes for interfaces (This won't delete the interface itself) cisco.iosxr.iosxr_l3_interfaces: config: - - name: GigabitEthernet0/0/0/3 - - name: GigabitEthernet0/0/0/4 - - name: GigabitEthernet0/0/0/3.700 + - name: GigabitEthernet0/0/0/3 + - name: GigabitEthernet0/0/0/4 + - name: GigabitEthernet0/0/0/3.700 state: deleted + +# Task Output +# ----------- +# +# before: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.0.2/24 +# name: GigabitEthernet0/0/0/2 +# - ipv6: +# - address: fd5d:12c9:2201:1::1/64 +# name: GigabitEthernet0/0/0/3 +# commands: +# - interface GigabitEthernet0/0/0/3 +# - no ipv6 address +# after: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.0.2/24 +# name: GigabitEthernet0/0/0/2 +# - name: GigabitEthernet0/0/0/3 + # After state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 -# ipv4 address 192.168.2.1 255.255.255.0 -# shutdown +# interface Loopback888 # ! -# interface GigabitEthernet0/0/0/2 -# ipv4 address 192.168.3.1 255.255.255.0 -# shutdown +# interface Loopback999 # ! -# interface GigabitEthernet0/0/0/3 -# shutdown +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/2 +# ipv4 address 192.168.0.2 255.255.255.0 # ! -# interface GigabitEthernet0/0/0/4 -# shutdown +# interface preconfigure GigabitEthernet0/0/0/3 # ! -# Using Deleted without any config passed -# "(NOTE: This will delete all of configured resource module attributes from each configured interface)" +# Using deleted - will delete all interface configuration and not interface # Before state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 +# interface Loopback888 +# ! +# interface Loopback999 +# ! +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/1 # ipv4 address 192.168.2.1 255.255.255.0 # shutdown # ! -# interface GigabitEthernet0/0/0/2 +# interface preconfigure GigabitEthernet0/0/0/2 # ipv4 address 192.168.3.1 255.255.255.0 # shutdown # ! -# interface GigabitEthernet0/0/0/3 +# interface preconfigure GigabitEthernet0/0/0/3 # ipv4 address 192.168.0.2 255.255.255.0 # shutdown # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/3.700 # ipv4 address 192.168.0.1 255.255.255.0 # ! -# interface GigabitEthernet0/0/0/4 +# interface preconfigure GigabitEthernet0/0/0/4 # ipv6 address fd5d:12c9:2201:1::1/64 # shutdown # ! - -- name: "Delete L3 attributes of all interfaces (Note: This won't delete the interface itself)" +- name: "Delete L3 config of all interfaces (This won't delete the interface itself)" cisco.iosxr.iosxr_l3_interfaces: state: deleted +# Task Output +# ----------- +# +# before: +# - name: Loopback888 +# - name: Loopback999 +# - ipv4: +# - address: 192.168.2.1/24 +# name: GigabitEthernet0/0/0/1 +# - ipv4: +# - address: 192.168.3.1/24 +# name: GigabitEthernet0/0/0/2 +# - ipv4: +# - address: 192.168.0.2/24 +# name: GigabitEthernet0/0/0/3 +# - ipv4: +# - address: 192.168.0.1/24 +# name: GigabitEthernet0/0/0/3.700 +# - ipv6: +# - address: fd5d:12c9:2201:1::1/64 +# name: GigabitEthernet0/0/0/4 +# commands: +# - interface GigabitEthernet0/0/0/1 +# - no ipv4 address +# - interface GigabitEthernet0/0/0/2 +# - no ipv4 address +# - interface GigabitEthernet0/0/0/3 +# - no ipv4 address +# - interface GigabitEthernet0/0/0/3.700 +# - no ipv4 address +# - interface GigabitEthernet0/0/0/4 +# - no ipv6 address +# after: +# - name: Loopback888 +# - name: Loopback999 +# - name: GigabitEthernet0/0/0/1 +# - name: GigabitEthernet0/0/0/2 +# - name: GigabitEthernet0/0/0/3 +# - name: GigabitEthernet0/0/0/3.700 +# - name: GigabitEthernet0/0/0/4 + # After state: # ------------- # # viosxr#show running-config interface -# interface GigabitEthernet0/0/0/1 +# interface Loopback888 +# ! +# interface Loopback999 +# ! +# interface MgmtEth0/RP0/CPU0/0 +# ipv4 address dhcp +# ! +# interface preconfigure GigabitEthernet0/0/0/1 # shutdown # ! -# interface GigabitEthernet0/0/0/2 +# interface preconfigure GigabitEthernet0/0/0/2 # shutdown # ! -# interface GigabitEthernet0/0/0/3 +# interface preconfigure GigabitEthernet0/0/0/3 # shutdown # ! -# interface GigabitEthernet0/0/0/3.700 +# interface preconfigure GigabitEthernet0/0/0/3.700 # ! -# interface GigabitEthernet0/0/0/4 +# interface preconfigure GigabitEthernet0/0/0/4 # shutdown # ! # Using parsed -# parsed.cfg -# ------------ + +# File: parsed.cfg +# ---------------- # -# nterface Loopback888 +# interface Loopback888 # description test for ansible # shutdown # ! @@ -423,79 +547,60 @@ EXAMPLES = """ # ipv4 address 192.0.22.1 255.255.255.0 # ipv4 address 192.0.23.1 255.255.255.0 # ! -# - name: Convert L3 interfaces config to argspec without connecting to the appliance -# cisco.iosxr.iosxr_l3_interfaces: -# running_config: "{{ lookup('file', './parsed.cfg') }}" -# state: parsed -# Task Output (redacted) -# ----------------------- -# "parsed": [ -# { -# "ipv4": [ -# { -# "address": "192.0.2.1 255.255.255.0" -# }, -# { -# "address": "192.0.2.2 255.255.255.0", -# "secondary": true -# } -# ], -# "ipv6": [ -# { -# "address": "2001:db8:0:3::/64" -# } -# ], -# "name": "GigabitEthernet0/0/0/0" -# }, -# { -# "name": "GigabitEthernet0/0/0/1" -# }, -# { -# "ipv4": [ -# { -# "address": "192.0.22.1 255.255.255.0" -# }, -# { -# "address": "192.0.23.1 255.255.255.0" -# } -# ], -# "name": "GigabitEthernet0/0/0/3" -# } -# ] +- name: Convert L3 interfaces config to argspec without connecting to the appliance + cisco.iosxr.iosxr_l3_interfaces: + running_config: "{{ lookup('file', './parsed.cfg') }}" + state: parsed + +# Task Output +# ----------- +# +# parsed: +# - ipv4: +# - address: 192.0.2.1 255.255.255.0 +# - address: 192.0.2.2 255.255.255.0 +# secondary: true +# ipv6: +# - address: 2001:db8:0:3::/64 +# name: GigabitEthernet0/0/0/0 +# - name: GigabitEthernet0/0/0/1 +# - ipv4: +# - address: 192.0.22.1 255.255.255.0 +# - address: 192.0.23.1 255.255.255.0 +# name: GigabitEthernet0/0/0/3 # Using rendered + - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_l3_interfaces: config: + - name: GigabitEthernet0/0/0/0 + ipv4: + - address: 198.51.100.1/24 + - name: GigabitEthernet0/0/0/1 + ipv6: + - address: '2001:db8:0:3::/64' + ipv4: + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 + secondary: true + state: rendered - - name: GigabitEthernet0/0/0/0 - ipv4: - - - address: 198.51.100.1/24 - - - name: GigabitEthernet0/0/0/1 - ipv6: - - - address: 2001:db8:0:3::/64 - ipv4: - - address: 192.0.2.1/24 +# Task Output +# ----------- +# +# rendered: +# - interface GigabitEthernet0/0/0/0 +# - ipv4 address 198.51.100.1 255.255.255.0 +# - interface GigabitEthernet0/0/0/1 +# - ipv4 address 192.0.2.2 255.255.255.0 secondary +# - ipv4 address 192.0.2.1 255.255.255.0 +# - ipv6 address 2001:db8:0:3::/64 - - address: 192.0.2.2/24 - secondary: true - state: rendered -# Task Output (redacted) -# ----------------------- -# "rendered": [ -# "interface GigabitEthernet0/0/0/0", -# "ipv4 address 198.51.100.1 255.255.255.0", -# "interface GigabitEthernet0/0/0/1", -# "ipv4 address 192.0.2.2 255.255.255.0 secondary", -# "ipv4 address 192.0.2.1 255.255.255.0", -# "ipv6 address 2001:db8:0:3::/64" -# ] # Using gathered + # Before state: # ------------ # @@ -534,84 +639,27 @@ EXAMPLES = """ # shutdown # dot1q native vlan 40 # ! -- name: Gather IOSXR l3 interfaces as in given arguments + +- name: Gather l3 interfaces facts cisco.iosxr.iosxr_l3_interfaces: config: state: gathered -# Task Output (redacted) -# ----------------------- -# -# "gathered": [ -# { -# "name": "Loopback888" -# }, -# { -# "ipv4": [ -# { -# "address": "192.0.2.1 255.255.255.0" -# }, -# { -# "address": "192.0.2.2 255.255.255.0", -# "secondary": true -# } -# ], -# "ipv6": [ -# { -# "address": "2001:db8:0:3::/64" -# } -# ], -# "name": "GigabitEthernet0/0/0/0" -# }, -# { -# "name": "GigabitEthernet0/0/0/1" -# }, -# { -# "name": "GigabitEthernet0/0/0/3" -# }, -# { -# "name": "GigabitEthernet0/0/0/4" -# } -# ] -# After state: -# ------------ -# -# RP/0/0/CPU0:an-iosxr-02#show running-config interface -# interface Loopback888 -# description test for ansible -# shutdown -# ! -# interface MgmtEth0/0/CPU0/0 -# ipv4 address 10.8.38.70 255.255.255.0 -# ! -# interface GigabitEthernet0/0/0/0 -# description Configured and Merged by Ansible-Network -# mtu 66 -# ipv4 address 192.0.2.1 255.255.255.0 -# ipv4 address 192.0.2.2 255.255.255.0 secondary -# ipv6 address 2001:db8:0:3::/64 -# duplex half -# ! -# interface GigabitEthernet0/0/0/1 -# description Configured and Merged by Ansible-Network -# mtu 66 -# speed 100 -# duplex full -# dot1q native vlan 10 -# l2transport -# l2protocol cdp forward -# l2protocol pvst tunnel -# propagate remote-status -# ! -# ! -# interface GigabitEthernet0/0/0/3 -# shutdown -# ! -# interface GigabitEthernet0/0/0/4 -# shutdown -# dot1q native vlan 40 -# ! - +# Task Output +# ----------- +# +# gathered: +# - name: Loopback888 +# - ipv4: +# - address: 192.0.2.1 255.255.255.0 +# - address: 192.0.2.2 255.255.255.0 +# secondary: true +# ipv6: +# - address: 2001:db8:0:3::/64 +# name: GigabitEthernet0/0/0/0 +# - name: GigabitEthernet0/0/0/1 +# - name: GigabitEthernet0/0/0/3 +# - name: GigabitEthernet0/0/0/4 """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp.py index 7d54d992c..f4fd19ae5 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp.py @@ -87,6 +87,7 @@ options: - parsed - rendered - gathered + - overridden default: merged """ EXAMPLES = """ @@ -328,8 +329,6 @@ EXAMPLES = """ # RP/0/0/CPU0:an-iosxr-02#show running-config lacp # lacp system mac 00c1.4c00.bd15 # lacp system priority - - """ RETURN = """ before: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp_interfaces.py index 1ebeaae8f..07a93d0e5 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lacp_interfaces.py @@ -165,19 +165,18 @@ EXAMPLES = """ - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: actor - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: Bundle-Ether11 - system: - mac: 00c2.4c00.bd15 - - - name: GigabitEthernet0/0/0/1 - period: 200 + - name: Bundle-Ether10 + churn_logging: actor + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: Bundle-Ether11 + system: + mac: 00c2.4c00.bd15 + - name: GigabitEthernet0/0/0/1 + period: 200 state: merged + # # # ----------- @@ -265,13 +264,13 @@ EXAMPLES = """ - name: Replace LACP configuration of listed interfaces with provided configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: partner - - - name: GigabitEthernet0/0/0/2 - period: 300 + - name: Bundle-Ether10 + churn_logging: partner + - name: GigabitEthernet0/0/0/2 + period: 300 state: replaced + # # # ----------- @@ -361,15 +360,15 @@ EXAMPLES = """ - name: Override all interface LACP configuration with provided configuration cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether12 - churn_logging: both - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: GigabitEthernet0/0/0/1 - period: 300 + - name: Bundle-Ether12 + churn_logging: both + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: GigabitEthernet0/0/0/1 + period: 300 state: overridden + # # # ----------- @@ -454,16 +453,18 @@ EXAMPLES = """ # ! # -- name: Deleted LACP configurations of provided interfaces (Note - This won't delete +- name: >- + Deleted LACP configurations of provided interfaces (Note - This won't delete the interface itself) cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - - name: Bundle-Ether11 - - name: GigabitEthernet0/0/0/1 - - name: GigabitEthernet0/0/0/2 + - name: Bundle-Ether10 + - name: Bundle-Ether11 + - name: GigabitEthernet0/0/0/1 + - name: GigabitEthernet0/0/0/2 state: deleted + # # # ----------- @@ -559,19 +560,18 @@ EXAMPLES = """ - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lacp_interfaces: config: - - name: Bundle-Ether10 - churn_logging: actor - collector_max_delay: 100 - switchover_suppress_flaps: 500 - - - name: Bundle-Ether11 - system: - mac: 00c2.4c00.bd15 - - - name: GigabitEthernet0/0/0/1 - period: 200 + - name: Bundle-Ether10 + churn_logging: actor + collector_max_delay: 100 + switchover_suppress_flaps: 500 + - name: Bundle-Ether11 + system: + mac: 00c2.4c00.bd15 + - name: GigabitEthernet0/0/0/1 + period: 200 state: rendered + # ------------- # Output # ------------- @@ -587,8 +587,6 @@ EXAMPLES = """ # - "interface GigabitEthernet0/0/0/1" # - " lacp period 200" # - - """ RETURN = """ before: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lag_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lag_interfaces.py index 6d1dacec1..4732dbfde 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lag_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lag_interfaces.py @@ -157,26 +157,26 @@ EXAMPLES = """ - name: Merge provided configuration with device configuration cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/3 - mode: inherit - mode: active - links: - max_active: 5 - min_active: 2 - load_balancing_hash: src-ip - - - name: Bundle-Ether12 - members: - - member: GigabitEthernet0/0/0/2 - mode: passive - - member: GigabitEthernet0/0/0/4 - mode: passive - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/3 + mode: inherit + mode: active + links: + max_active: 5 + min_active: 2 + load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - member: GigabitEthernet0/0/0/2 + mode: passive + - member: GigabitEthernet0/0/0/4 + mode: passive + load_balancing_hash: dst-ip state: merged + # # # ----------- @@ -267,15 +267,14 @@ EXAMPLES = """ - name: Replace device configuration of listed Bundles with provided configurations cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether12 - members: - - name: GigabitEthernet0/0/0/2 - mode: passive - - - name: Bundle-Ether11 - members: - - name: GigabitEthernet0/0/0/4 - load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - name: GigabitEthernet0/0/0/2 + mode: passive + - name: Bundle-Ether11 + members: + - name: GigabitEthernet0/0/0/4 + load_balancing_hash: src-ip state: replaced # # @@ -376,15 +375,16 @@ EXAMPLES = """ - name: Overrides all device configuration with provided configuration cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/2 - mode: inherit - mode: active - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/2 + mode: inherit + mode: active + load_balancing_hash: dst-ip state: overridden + # # # ------------ @@ -474,15 +474,17 @@ EXAMPLES = """ # # -- name: Delete attributes of given bundles and removes member interfaces from them +- name: >- + Delete attributes of given bundles and removes member interfaces from them (Note - This won't delete the bundles themselves) cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - - name: Bundle-Ether11 - - name: Bundle-Ether12 + - name: Bundle-Ether10 + - name: Bundle-Ether11 + - name: Bundle-Ether12 state: deleted + # # # ------------ @@ -736,25 +738,24 @@ EXAMPLES = """ - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lag_interfaces: config: - - name: Bundle-Ether10 - members: - - member: GigabitEthernet0/0/0/1 - mode: inherit - - member: GigabitEthernet0/0/0/3 - mode: inherit - mode: active - links: - max_active: 5 - min_active: 2 - load_balancing_hash: src-ip - - - name: Bundle-Ether12 - members: - - member: GigabitEthernet0/0/0/2 - mode: passive - - member: GigabitEthernet0/0/0/4 - mode: passive - load_balancing_hash: dst-ip + - name: Bundle-Ether10 + members: + - member: GigabitEthernet0/0/0/1 + mode: inherit + - member: GigabitEthernet0/0/0/3 + mode: inherit + mode: active + links: + max_active: 5 + min_active: 2 + load_balancing_hash: src-ip + - name: Bundle-Ether12 + members: + - member: GigabitEthernet0/0/0/2 + mode: passive + - member: GigabitEthernet0/0/0/4 + mode: passive + load_balancing_hash: dst-ip state: rendered # Output: @@ -787,9 +788,6 @@ EXAMPLES = """ # - " bundle id 12 mode passive" # ] # -# - - """ RETURN = """ before: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_global.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_global.py index 9c99fc8a4..c3eb21ddb 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_global.py @@ -108,6 +108,7 @@ options: - parsed - gathered - rendered + - overridden default: merged """ @@ -425,9 +426,6 @@ EXAMPLES = """ # "lldp tlv-select management-address disable", # "lldp timer 3000" # ] - - - """ RETURN = """ before: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_interfaces.py index f88d132e5..0322a0e1f 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_lldp_interfaces.py @@ -120,17 +120,17 @@ EXAMPLES = """ - name: Merge provided configuration with running configuration cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge - transmit: false - - - name: GigabitEthernet0/0/0/2 - destination: - mac_address: ieee-nearest-bridge - receive: false + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge + transmit: false + - name: GigabitEthernet0/0/0/2 + destination: + mac_address: ieee-nearest-bridge + receive: false state: merged + # # # ------------------------ @@ -242,15 +242,17 @@ EXAMPLES = """ # # -- name: Replace existing LLDP configurations of specified interfaces with provided +- name: >- + Replace existing LLDP configurations of specified interfaces with provided configuration cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge state: replaced + # # # ------------------------ @@ -366,13 +368,16 @@ EXAMPLES = """ # # -- name: Override the LLDP configurations of all the interfaces with provided configurations +- name: >- + Override the LLDP configurations of all the interfaces with provided + configurations cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - transmit: false + - name: GigabitEthernet0/0/0/1 + transmit: false state: overridden + # # # ------------------------ @@ -638,17 +643,15 @@ EXAMPLES = """ - name: Render platform specific commands from task input using rendered state cisco.iosxr.iosxr_lldp_interfaces: config: - - name: GigabitEthernet0/0/0/1 - destination: - mac_address: ieee-nearest-non-tmpr-bridge - transmit: false - - - name: GigabitEthernet0/0/0/2 - destination: - mac_address: ieee-nearest-bridge - receive: false + - name: GigabitEthernet0/0/0/1 + destination: + mac_address: ieee-nearest-non-tmpr-bridge + transmit: false + - name: GigabitEthernet0/0/0/2 + destination: + mac_address: ieee-nearest-bridge + receive: false state: rendered - # ------------------------ # Module Execution Result # ------------------------ @@ -661,7 +664,6 @@ EXAMPLES = """ # "lldp receive disable", # "lldp destination mac-address ieee-nearest-bridge" # ] - """ RETURN = """ before: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging.py index 9889f568f..abca845df 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging.py @@ -201,18 +201,18 @@ EXAMPLES = """ - name: Configure logging using aggregate cisco.iosxr.iosxr_logging: aggregate: - - {dest: console, level: warning} - - {dest: buffered, size: 4800000} - - {dest: file, name: file3, size: 2048} - - {dest: host, name: host3, level: critical} + - {dest: console, level: warning} + - {dest: buffered, size: 4800000} + - {dest: file, name: file3, size: 2048} + - {dest: host, name: host3, level: critical} - name: Delete logging using aggregate cisco.iosxr.iosxr_logging: aggregate: - - {dest: console, level: warning} - - {dest: buffered, size: 4800000} - - {dest: file, name: file3, size: 2048} - - {dest: host, name: host3, level: critical} + - {dest: console, level: warning} + - {dest: buffered, size: 4800000} + - {dest: file, name: file3, size: 2048} + - {dest: host, name: host3, level: critical} state: absent """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging_global.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging_global.py index 4d25dcaab..55dd23f6b 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging_global.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_logging_global.py @@ -364,56 +364,56 @@ options: """ EXAMPLES = """ # Using merged -#----------------- +# ----------------- # Before state -#RP/0/0/CPU0:10#show running-config logging -#Thu Feb 4 09:38:36.245 UTC -#% No such configuration item(s) -#RP/0/0/CPU0:10# +# RP/0/0/CPU0:10#show running-config logging +# Thu Feb 4 09:38:36.245 UTC +# % No such configuration item(s) +# RP/0/0/CPU0:10# # # - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_logging_global: - config: - buffered: - size: 2097152 - severity: warnings - correlator: - buffer_size: 1024 - events: - display_location: True - files: - - maxfilesize: '1024' - name: test - path: test - severity: info - hostnameprefix: test - hosts: - - host: 1.1.1.1 - port: default - severity: critical - vrf: default - ipv4: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - source_interfaces: - - interface: GigabitEthernet0/0/0/0 - vrf: test - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test2 - vrf: test - trap: - severity: informational - state: merged + config: + buffered: + size: 2097152 + severity: warnings + correlator: + buffer_size: 1024 + events: + display_location: true + files: + - maxfilesize: '1024' + name: test + path: test + severity: info + hostnameprefix: test + hosts: + - host: 1.1.1.1 + port: default + severity: critical + vrf: default + ipv4: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + source_interfaces: + - interface: GigabitEthernet0/0/0/0 + vrf: test + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test2 + vrf: test + trap: + severity: informational + state: merged # # # After state: -#------------------------------------------- -#RP/0/0/CPU0:10#show running-config logging +# ------------------------------------------- +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -432,8 +432,8 @@ EXAMPLES = """ # logging localfilesize 1024 # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test -#------------------------------------------------ -#Module execution +# ------------------------------------------------ +# Module execution # # "after": { # "buffered": { @@ -582,8 +582,8 @@ EXAMPLES = """ # Using replaced: # ----------------------------------------------------------- # -#Before state -#RP/0/0/CPU0:10#show running-config logging +# Before state +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -602,42 +602,42 @@ EXAMPLES = """ # logging localfilesize 1024 # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test -#----------------------------------------------------------- +# ----------------------------------------------------------- # - name: Replace BGP configuration with provided configuration cisco.iosxr.iosxr_logging_global: - state: replaced - config: - buffered: - severity: errors - correlator: - buffer_size: 1024 - files: - - maxfilesize: '1024' - name: test - path: test1 - severity: info - hostnameprefix: test1 - hosts: - - host: 1.1.1.3 - port: default - severity: critical - vrf: default - ipv6: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test - vrf: test - trap: - severity: critical + state: replaced + config: + buffered: + severity: errors + correlator: + buffer_size: 1024 + files: + - maxfilesize: '1024' + name: test + path: test1 + severity: info + hostnameprefix: test1 + hosts: + - host: 1.1.1.3 + port: default + severity: critical + vrf: default + ipv6: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test + vrf: test + trap: + severity: critical # # After state: -#RP/0/0/CPU0:10#show running-config logging +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:31:51.709 UTC # logging tls-server test # vrf test @@ -653,7 +653,7 @@ EXAMPLES = """ # logging correlator buffer-size 1024 # logging localfilesize 1024 # logging hostnameprefix test1 -#----------------------------------------------------------------- +# ----------------------------------------------------------------- # # Module Execution: # "after": { @@ -773,7 +773,7 @@ EXAMPLES = """ # Using deleted: # ----------------------------------------------------------- # Before state: -#RP/0/0/CPU0:10#show running-config logging +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -793,15 +793,15 @@ EXAMPLES = """ # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test # -#----------------------------------------------------------- +# ----------------------------------------------------------- - name: Delete given logging_global configuration cisco.iosxr.iosxr_logging_global: - state: deleted + state: deleted # # After state: -#RP/0/0/CPU0:10#show running-config +# RP/0/0/CPU0:10#show running-config # -#------------------------------------------------------------- +# ------------------------------------------------------------- # Module Execution: # # "after": {}, @@ -887,7 +887,7 @@ EXAMPLES = """ # using gathered: # ------------------------------------------------------------ # Before state: -#RP/0/0/CPU0:10#show running-config logging +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -910,9 +910,9 @@ EXAMPLES = """ # - name: Gather iosxr_logging_global facts using gathered state cisco.iosxr.iosxr_logging_global: - state: gathered + state: gathered # -#------------------------------------------------------------- +# ------------------------------------------------------------- # Module Execution: # # "changed": false, @@ -979,7 +979,7 @@ EXAMPLES = """ # # # Using parsed: -#--------------------------------------------------------------- +# --------------------------------------------------------------- # # parsed.cfg # @@ -1004,9 +1004,9 @@ EXAMPLES = """ # - name: Parse externally provided Logging global config to agnostic model cisco.iosxr.iosxr_logging_global: - running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" - state: parsed -#---------------------------------------------------------------- + running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" + state: parsed +# ---------------------------------------------------------------- # Module execution: # "changed": false, # "parsed": { @@ -1066,44 +1066,46 @@ EXAMPLES = """ # # Using rendered: # ---------------------------------------------------------------------------- -- name: Render platform specific configuration lines with state rendered (without connecting to the device) +- name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_logging_global: - state: rendered - config: - buffered: - size: 2097152 - severity: warnings - correlator: - buffer_size: 1024 - events: - display_location: True - files: - - maxfilesize: '1024' - name: test - path: test - severity: info - hostnameprefix: test - hosts: - - host: 1.1.1.1 - port: default - severity: critical - vrf: default - ipv4: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - source_interfaces: - - interface: GigabitEthernet0/0/0/0 - vrf: test - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test2 - vrf: test - trap: - severity: informational -#---------------------------------------------------------------- + state: rendered + config: + buffered: + size: 2097152 + severity: warnings + correlator: + buffer_size: 1024 + events: + display_location: true + files: + - maxfilesize: '1024' + name: test + path: test + severity: info + hostnameprefix: test + hosts: + - host: 1.1.1.1 + port: default + severity: critical + vrf: default + ipv4: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + source_interfaces: + - interface: GigabitEthernet0/0/0/0 + vrf: test + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test2 + vrf: test + trap: + severity: informational +# ---------------------------------------------------------------- # Module Execution: # "rendered": [ # "logging buffered errors", @@ -1126,7 +1128,7 @@ EXAMPLES = """ # Using overridden: # --------------------------------------------------------------------------------- # Before state: -#RP/0/0/CPU0:10#show running-config logging +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:09:18.491 UTC # logging tls-server test # vrf test @@ -1146,42 +1148,42 @@ EXAMPLES = """ # logging source-interface GigabitEthernet0/0/0/0 vrf test # logging hostnameprefix test # -#----------------------------------------------------------- +# ----------------------------------------------------------- # - name: Overridde logging global configuration with provided configuration cisco.iosxr.iosxr_logging_global: - state: overridden - config: - buffered: - severity: errors - correlator: - buffer_size: 1024 - files: - - maxfilesize: '1024' - name: test - path: test1 - severity: info - hostnameprefix: test1 - hosts: - - host: 1.1.1.3 - port: default - severity: critical - vrf: default - ipv6: - dscp: af11 - localfilesize: 1024 - monitor: - severity: errors - tls_servers: - - name: test - tls_hostname: test2 - trustpoint: test - vrf: test - trap: - severity: critical + state: overridden + config: + buffered: + severity: errors + correlator: + buffer_size: 1024 + files: + - maxfilesize: '1024' + name: test + path: test1 + severity: info + hostnameprefix: test1 + hosts: + - host: 1.1.1.3 + port: default + severity: critical + vrf: default + ipv6: + dscp: af11 + localfilesize: 1024 + monitor: + severity: errors + tls_servers: + - name: test + tls_hostname: test2 + trustpoint: test + vrf: test + trap: + severity: critical # # After state: -#RP/0/0/CPU0:10#show running-config logging +# RP/0/0/CPU0:10#show running-config logging # Tue Jul 20 18:31:51.709 UTC # logging tls-server test # vrf test @@ -1197,7 +1199,7 @@ EXAMPLES = """ # logging correlator buffer-size 1024 # logging localfilesize 1024 # logging hostnameprefix test1 -#----------------------------------------------------------------- +# ----------------------------------------------------------------- # # Module Execution: # "after": { diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ntp_global.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ntp_global.py index 94ca24f4c..bdcf2e523 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ntp_global.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ntp_global.py @@ -273,51 +273,51 @@ EXAMPLES = """ # ------------ - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_ntp_global: - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl1 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/0 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af11 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.1 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/0 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl1 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/0 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af11 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.1 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/0 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # ------------ # "commands": [ @@ -485,52 +485,52 @@ EXAMPLES = """ # ---------------- - name: Override BGP configuration with provided configuration cisco.iosxr.iosxr_ntp_global: - state: overridden - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl4 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/1 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af12 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.3 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/1 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + state: overridden + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl4 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/1 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af12 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.3 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/1 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # --------------- # "commands": [ @@ -616,52 +616,52 @@ EXAMPLES = """ # ---------------- - name: Replaced BGP configuration with provided configuration cisco.iosxr.iosxr_ntp_global: - state: replaced - config: - access_group: - ipv4: - peer: PeerAcl1 - query_only: QueryOnlyAcl1 - serve: ServeAcl4 - serve_only: ServeOnlyAcl1 - vrfs: - - ipv4: - peer: PeerAcl3 - serve: ServeAcl2 - name: siteA - authenticate: true - broadcastdelay: 1 - drift: - aging_time: 0 - file: apphost - interfaces: - - name: GigabitEthernet0/0/0/1 - multicast_client: 224.0.0.8 - multicast_destination: 224.0.0.8 - broadcast_client: true - ipv4: - dscp: af12 - ipv6: - precedence: routine - log_internal_sync: true - master: 1 - max_associations: 10 - passive: true - peers: - - iburst: true - peer: 192.0.2.3 - vrf: siteC - servers: - - burst: true - server: 192.0.2.2 - vrf: siteD - source: GigabitEthernet0/0/0/1 - source_vrfs: - - name: GigabitEthernet0/0/0/0 - vrf: siteE - trusted_keys: - - key_id: 1 - update_calendar: true + state: replaced + config: + access_group: + ipv4: + peer: PeerAcl1 + query_only: QueryOnlyAcl1 + serve: ServeAcl4 + serve_only: ServeOnlyAcl1 + vrfs: + - ipv4: + peer: PeerAcl3 + serve: ServeAcl2 + name: siteA + authenticate: true + broadcastdelay: 1 + drift: + aging_time: 0 + file: apphost + interfaces: + - name: GigabitEthernet0/0/0/1 + multicast_client: 224.0.0.8 + multicast_destination: 224.0.0.8 + broadcast_client: true + ipv4: + dscp: af12 + ipv6: + precedence: routine + log_internal_sync: true + master: 1 + max_associations: 10 + passive: true + peers: + - iburst: true + peer: 192.0.2.3 + vrf: siteC + servers: + - burst: true + server: 192.0.2.2 + vrf: siteD + source: GigabitEthernet0/0/0/1 + source_vrfs: + - name: GigabitEthernet0/0/0/0 + vrf: siteE + trusted_keys: + - key_id: 1 + update_calendar: true # Commands Fired: # --------------- # "commands": [ @@ -822,7 +822,9 @@ EXAMPLES = """ # Using state: rendered # Rendered play: # -------------- -- name: Render platform specific configuration lines with state rendered (without connecting to the device) +- name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_ntp_global: state: rendered config: diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospf_interfaces.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospf_interfaces.py index 02ec5acb7..5ee6930f2 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospf_interfaces.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospf_interfaces.py @@ -492,7 +492,7 @@ EXAMPLES = """ address_family: - afi: ipv4 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.3 cost: 20 @@ -501,7 +501,7 @@ EXAMPLES = """ keychain: cisco - afi: ipv6 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.2 cost: 30 @@ -509,76 +509,42 @@ EXAMPLES = """ # # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": [] +# Task Output: +# ------------ # -# "commands": [ -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco", -# "router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30" -# ] +# before: [] # -# "after": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "cisco" -# } -# }, -# "cost": 20, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.2" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] +# commands: +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco +# - router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30 # +# after: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# ------------ -# After state +# After state: # ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:00:57.217 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! -# router ospf LAB1 -# area 0.0.0.1 -# ! -# area 0.0.0.3 -# ! -# ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -587,30 +553,22 @@ EXAMPLES = """ # ! # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! +# ! # ! # Using replaced # -# ------------ -# Before state -# ------------ +# Before state: +# ------------- # # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:00:57.217 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! -# router ospf LAB1 -# area 0.0.0.1 -# ! -# area 0.0.0.3 -# ! -# ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -619,7 +577,12 @@ EXAMPLES = """ # ! # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! +# ! # ! - name: Replace OSPF interfaces configuration @@ -630,7 +593,7 @@ EXAMPLES = """ address_family: - afi: ipv4 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.3 cost: 30 @@ -639,130 +602,84 @@ EXAMPLES = """ keychain: ciscoiosxr - afi: ipv6 processes: - - process_id: "LAB3" + - process_id: LAB3 area: area_id: 0.0.0.2 cost: 30 state: replaced - -# # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "cisco" -# } -# }, -# "cost": 20, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.2" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] +# Task Output: +# ------------ # -# "commands": [ -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 30", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain ciscoiosxr" -# ] +# before: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# "after": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "ciscoiosxr" -# } -# }, -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.2" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] +# commands: +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 30 +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain ciscoiosxr # +# after: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: ciscoiosxr +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# ----------- -# After state -# ----------- +# After state: +# ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:10:39.827 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! -# router ospf LAB1 -# area 0.0.0.1 -# ! -# area 0.0.0.3 -# ! -# ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 # cost 30 # authentication message-digest keychain ciscoiosxr # ! +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! # ! # ! -# router ospf ipv4 -# ! +# Using overridden +# +# Before state +# ------------ +# - name: Override existing OSPF interfaces configuration cisco.iosxr.iosxr_ospf_interfaces: config: @@ -771,7 +688,7 @@ EXAMPLES = """ address_family: - afi: ipv4 processes: - - process_id: "LAB1" + - process_id: LAB1 area: area_id: 0.0.0.3 cost: 10 @@ -782,98 +699,56 @@ EXAMPLES = """ # # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "ciscoiosxr" -# } -# }, -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.2" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] +# Task Output: +# ------------ # -# "commands": [ -# "no router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0", -# "no router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0", -# "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 cost 10", -# "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest", -# "router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest keychain iosxr" -# ] +# before: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: ciscoiosxr +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# "after": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "iosxr" -# } -# }, -# "cost": 10, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB1" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/1", -# "type": "gigabitethernet" -# } -# ] +# commands: +# - no router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 +# - no router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 +# - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 cost 10 +# - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest +# - router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1 authentication message-digest keychain iosxr # +# after: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: iosxr +# cost: 10 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB1 +# name: GigabitEthernet0/0/0/1 +# type: gigabitethernet # -# ----------- -# After state -# ----------- +# After state: +# ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:28:15.025 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! # router ospf LAB1 -# area 0.0.0.1 -# ! # area 0.0.0.3 # interface GigabitEthernet0/0/0/1 # cost 10 @@ -885,27 +760,20 @@ EXAMPLES = """ # area 0.0.0.3 # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# ! # ! # Using deleted # -# ------------ -# Before state -# ------------ +# Before state: +# ------------- # # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:28:15.025 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! # router ospf LAB1 -# area 0.0.0.1 -# ! # area 0.0.0.3 # interface GigabitEthernet0/0/0/1 # cost 10 @@ -915,9 +783,18 @@ EXAMPLES = """ # ! # router ospf LAB3 # area 0.0.0.3 +# interface GigabitEthernet0/0/0/0 +# cost 20 +# authentication message-digest keychain cisco +# ! # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! +# ! # ! - name: Deleted existing OSPF interfaces from the device @@ -928,70 +805,91 @@ EXAMPLES = """ state: deleted # +# Task Output: +# ------------ # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "iosxr" -# } -# }, -# "cost": 10, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB1" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/1", -# "type": "gigabitethernet" -# } -# ], -# -# "commands": [ -# "no router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1" -# ] +# before: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: iosxr +# cost: 10 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB1 +# name: GigabitEthernet0/0/0/1 +# type: gigabitethernet +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# "after": [] +# commands: +# - no router ospf LAB1 area 0.0.0.3 interface GigabitEthernet 0/0/0/1] # +# after: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet # -# ----------- -# After state -# ----------- +# After state: +# ------------ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:34:38.319 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! # router ospf LAB1 -# area 0.0.0.1 -# ! # area 0.0.0.3 # ! # ! # router ospf LAB3 # area 0.0.0.3 +# interface GigabitEthernet0/0/0/0 +# cost 20 +# authentication message-digest keychain cisco +# ! # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! +# ! # ! # Using parsed +# # parsed.cfg # ------------ # router ospf LAB @@ -1016,46 +914,30 @@ EXAMPLES = """ # ! # router ospf ipv4 # ! -- name: Parsed the device configuration to get output commands +- name: Parsed running config and display structured facts. cisco.iosxr.iosxr_ospf_interfaces: running_config: "{{ lookup('file', './parsed.cfg') }}" state: parsed # +# Task Output: +# ------------ # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "parsed": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "cisco" -# } -# }, -# "cost": 20, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] -# +# parsed: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet + # Using rendered # -# - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospf_interfaces: config: @@ -1064,35 +946,30 @@ EXAMPLES = """ address_family: - afi: ipv4 processes: - - process_id: "LAB3" - area: - area_id: 0.0.0.3 + - process_id: LAB3 + area: + area_id: 0.0.0.3 cost: 20 authentication: message_digest: keychain: cisco - afi: ipv6 processes: - - process_id: "LAB3" - area: - area_id: 0.0.0.2 + - process_id: LAB3 + area: + area_id: 0.0.0.2 cost: 30 state: rendered # +# Task Output: +# ------------ # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "rendered": [ -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest", -# "router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco", -# "router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30" -# ] - +# rendered: +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest +# - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest keychain cisco +# - router ospfv3 LAB3 area 0.0.0.2 interface GigabitEthernet 0/0/0/0 cost 30 # Using gathered # @@ -1101,18 +978,6 @@ EXAMPLES = """ # # RP/0/0/CPU0:an-iosxr-02#show running-config router ospf # Thu Oct 23 06:50:38.743 UTC -# router ospf LAB -# area 0.0.0.0 -# ! -# area 0.0.0.9 -# ! -# ! -# router ospf LAB1 -# area 0.0.0.1 -# ! -# area 0.0.0.3 -# ! -# ! # router ospf LAB3 # area 0.0.0.3 # interface GigabitEthernet0/0/0/0 @@ -1121,7 +986,12 @@ EXAMPLES = """ # ! # ! # ! -# router ospf ipv4 +# router ospfv3 LAB3 +# area 0.0.0.2 +# interface GigabitEthernet0/0/0/0 +# cost 30 +# ! +# ! # ! @@ -1129,49 +999,73 @@ EXAMPLES = """ cisco.iosxr.iosxr_ospf_interfaces: state: gathered # +# Task Output: +# ------------ # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# "gathered": [ -# { -# "address_family": [ -# { -# "afi": "ipv4", -# "authentication": { -# "message_digest": { -# "keychain": "cisco" -# } -# }, -# "cost": 20, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.3" -# }, -# "process_id": "LAB3" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "cost": 30, -# "processes": [ -# { -# "area": { -# "area_id": "0.0.0.2" -# }, -# "process_id": "LAB3" -# } -# ] -# } -# ], -# "name": "GigabitEthernet0/0/0/0", -# "type": "gigabitethernet" -# } -# ] -# +# gathered: +# - address_family: +# - afi: ipv4 +# authentication: +# message_digest: +# keychain: cisco +# cost: 20 +# processes: +# - area: +# area_id: 0.0.0.3 +# process_id: LAB3 +# - afi: ipv6 +# cost: 30 +# processes: +# - area: +# area_id: 0.0.0.2 +# process_id: LAB3 +# name: GigabitEthernet0/0/0/0 +# type: gigabitethernet +""" +RETURN = """ +before: + description: The configuration prior to the model invocation. + returned: always + type: list + sample: > + The configuration returned will always be in the same format + of the parameters above. +after: + description: The resulting configuration model invocation. + returned: when changed + type: list + sample: > + The configuration returned will always be in the same format + of the parameters above. +commands: + description: The set of commands pushed to the remote device. + returned: always + type: list + sample: + - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 + - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 authentication message-digest + +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - router ospf LAB3 area 0.0.0.3 interface GigabitEthernet 0/0/0/0 cost 20 + +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: list + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: list + sample: > + This output will always be in the same format as the + module argspec. """ from ansible.module_utils.basic import AnsibleModule diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv2.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv2.py index 4b41338d4..f86a75a62 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv2.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv2.py @@ -1077,173 +1077,132 @@ EXAMPLES = """ cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: '27' - areas: - - area_id: '10' - hello_interval: 2 + - process_id: '27' + areas: + - area_id: '10' + hello_interval: 2 + authentication: + keychain: ansi11393 + - process_id: '26' + adjacency_stagger: + max_adjacency: 20 + min_adjacency: 10 + - process_id: '10' authentication: - keychain: ansi11393 - - process_id: '26' - adjacency_stagger: - max_adjacency: 20 - min_adjacency: 10 - - process_id: '10' - authentication: - keychain: ansible_test1102 - areas: - - area_id: '11' - default_cost: 5 - cost: 11 - - area_id: 22 - default_cost: 6 - - process_id: '30' - areas: - - area_id: 11 - default_cost: 5 - - area_id: 22 - default_cost: 6 - - cost: 2 - default_metric: 10 - transmit_delay: 2 - hello_interval: 1 - dead_interval: 2 - retransmit_interval: 2 - weight: 2 - packet_size: 577 - priority: 1 - router_id: 2.2.2.2 - demand_circuit: enable - passive: disable - summary_in: enable - flood_reduction: disable - mtu_ignore: enable - external_out: disable + keychain: ansible_test1102 + areas: + - area_id: '11' + default_cost: 5 + cost: 11 + - area_id: 22 + default_cost: 6 + - process_id: '30' + areas: + - area_id: 11 + default_cost: 5 + - area_id: 22 + default_cost: 6 + cost: 2 + default_metric: 10 + transmit_delay: 2 + hello_interval: 1 + dead_interval: 2 + retransmit_interval: 2 + weight: 2 + packet_size: 577 + priority: 1 + router_id: 2.2.2.2 + demand_circuit: enable + passive: disable + summary_in: enable + flood_reduction: disable + mtu_ignore: enable + external_out: disable state: merged +# Task Output: +# ------------ # +# before: {} +# +# commands: +# - router ospf 30 +# - cost 2 +# - weight 2 +# - passive disable +# - priority 1 +# - flood-reduction disable +# - default-metric 10 +# - router-id 2.2.2.2 +# - demand-circuit enable +# - packet-size 577 +# - transmit-delay 2 +# - summary-in enable +# - external-out disable +# - dead-interval 2 +# - hello-interval 1 +# - retransmit-interval 2 +# - mtu-ignore enable +# - area 11 default-cost 5 +# - area 22 default-cost 6 +# - router ospf 26 +# - adjacency stagger 10 20 +# - router ospf 10 +# - authentication keychain ansible_test1102 +# - area 11 default-cost 5 +# - area 11 cost 11 +# - area 22 default-cost 6 +# - router ospf 27 +# - area 10 authentication keychain ansi11393 +# - area 10 hello-interval 2 +# +# after: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": {} -# -# "commands": [ -# "router ospf 30", -# "cost 2", -# "weight 2", -# "passive disable", -# "priority 1", -# "flood-reduction disable", -# "default-metric 10", -# "router-id 2.2.2.2", -# "demand-circuit enable", -# "packet-size 577", -# "transmit-delay 2", -# "summary-in enable", -# "external-out disable", -# "dead-interval 2", -# "hello-interval 1", -# "retransmit-interval 2", -# "mtu-ignore enable", -# "area 11 default-cost 5", -# "area 22 default-cost 6", -# "router ospf 26", -# "adjacency stagger 10 20", -# "authentication message-digest keychain ansible1101pass", -# "router ospf 27", -# "area 10 authentication keychain ansi11393", -# "area 10 hello-interval 2", -# "router ospf 10", -# "authentication keychain ansible_test1102", -# "area 11 default-cost 5", -# "area 11 cost 11", -# "area 22 default-cost 6" -# ] -# -# "after": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } -# -# -# ------------ -# After state +# After state: # ------------ # -# RP/0/RP0/CPU0:anton#show running-config router ospf -# Thu Jun 11 16:06:44.406 UTC # router ospf 10 # authentication keychain ansible_test1102 # area 11 @@ -1255,14 +1214,13 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 -# authentication keychain ansi11393 +# authentication keychain ansi11393 # hello-interval 2 -# ! +# ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -1288,14 +1246,11 @@ EXAMPLES = """ # default-cost 6 # ! # ! -# - # Using replaced # -# ------------ -# Before state -# ------------ +# Before state: +# ------------- # # # RP/0/RP0/CPU0:anton#show running-config router ospf @@ -1311,14 +1266,13 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 -# authentication keychain ansi11393 +# authentication keychain ansi11393 # hello-interval 2 -# ! +# ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -1345,199 +1299,128 @@ EXAMPLES = """ # ! # ! # - -- name: Replace OSPFv2 routes configurations from the device +- name: Replace running OSPFv2 routes configurations with provided config. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + - area_id: 20 + cost: 2 + default_cost: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 state: replaced +# Task Output: +# ------------ # +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 +# +# commands: +# - router ospf 27 +# - no area 10 authentication keychain ansi11393 +# - area 20 authentication keychain ansi11393 +# - area 20 default-cost 2 +# - area 20 cost 2 +# +# after: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# - area_id: '20' +# authentication: +# keychain: ansi11393 +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } -# -# "commands": [ -# "router ospf 27", -# "no area 10 authentication keychain ansi11393", -# "area 20 authentication keychain ansi11393", -# "area 20 default-cost 2", -# "area 20 cost 2" -# ] -# -# "after": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } -# -# -# ----------- -# After state -# ----------- +# After state: +# ------------ # # RP/0/RP0/CPU0:anton(config)#do show running-config router ospf # Thu Jun 11 16:40:31.038 UTC @@ -1552,7 +1435,6 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 @@ -1589,15 +1471,11 @@ EXAMPLES = """ # default-cost 6 # ! # ! -# - # Using overridden # -# ------------ -# Before state -# ------------ -# +# Before state: +# ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC @@ -1612,14 +1490,17 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 -# authentication keychain ansi11393 # hello-interval 2 -# ! +# ! +# area 20 +# cost 2 +# authentication keychain ansi11393 +# default-cost 2 +# ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -1645,195 +1526,141 @@ EXAMPLES = """ # default-cost 6 # ! # ! -# -- name: Override existing OSPFv2 configurations from the device +- name: Override existing OSPFv2 configurations with provided config. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - keychain: ansi11393 - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + authentication: + keychain: ansi11393 + - area_id: 20 + cost: 2 + default_cost: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 state: overridden + # +# Task Output: +# ------------ # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } -# -# "commands": [ -# "router ospf 10", -# "no authentication keychain ansible_test1102", -# "no area 11 default-cost 5", -# "no area 11 cost 11", -# "no area 22 default-cost 6", -# "router ospf 30", -# "no cost 2", -# "no weight 2", -# "no passive disable", -# "no priority 1", -# "no flood-reduction disable", -# "no default-metric 10", -# "no router-id 2.2.2.2", -# "no demand-circuit enable", -# "no packet-size 577", -# "no transmit-delay 2", -# "no summary-in enable", -# "no external-out disable", -# "no dead-interval 2", -# "no hello-interval 1", -# "no retransmit-interval 2", -# "no mtu-ignore enable", -# "no area 11 default-cost 5", -# "no area 22 default-cost 6", -# "router ospf 27", -# "area 20 authentication keychain ansi11393", -# "area 20 default-cost 2", -# "area 20 cost 2" -# ] -# -# "after": { -# "processes": [ -# { -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "process_id": "30" -# } -# ] -# } +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# - area_id: '20' +# authentication: +# keychain: ansi11393 +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 + # +# commands: +# - router ospf 10 +# - no authentication keychain ansible_test1102 +# - no area 11 default-cost 5 +# - no area 11 cost 11 +# - no area 22 default-cost 6 +# - router ospf 30 +# - no cost 2 +# - no weight 2 +# - no passive disable +# - no priority 1 +# - no flood-reduction disable +# - no default-metric 10 +# - no router-id 2.2.2.2 +# - no demand-circuit enable +# - no packet-size 577 +# - no transmit-delay 2 +# - no summary-in enable +# - no external-out disable +# - no dead-interval 2 +# - no hello-interval 1 +# - no retransmit-interval 2 +# - no mtu-ignore enable +# - no area 11 default-cost 5 +# - no area 22 default-cost 6 +# - router ospf 27 +# - area 10 authentication keychain ansi11393 +# +# after: +# processes: +# - process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# - area_id: '20' +# authentication: +# keychain: ansi11393 +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - process_id: '30' # -# ----------- -# After state -# ----------- +# After state: +# ------------ # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:50:36.332 UTC # router ospf 10 +# area 11 +# ! +# area 22 +# ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 @@ -1848,16 +1675,17 @@ EXAMPLES = """ # ! # ! # router ospf 30 +# area 11 +# ! +# area 22 +# ! # ! # - # Using deleted # -# ------------ -# Before state -# ------------ -# +# Before state: +# ------------- # # RP/0/RP0/CPU0:anton#show running-config router ospf # Thu Jun 11 16:06:44.406 UTC @@ -1872,14 +1700,18 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 -# authentication keychain ansi11393 +# authentication keychain ansi11393 # hello-interval 2 -# ! +# ! +# area 20 +# cost 2 +# authentication keychain ansi11393 +# default-cost 2 +# ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -1905,163 +1737,136 @@ EXAMPLES = """ # default-cost 6 # ! # ! -# -- name: Deleted existing OSPFv2 configurations from the device +- name: Deleted provided ospfv2 processes. cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: '10' - - process_id: '26' - - process_id: '27' - - process_id: '30' + - process_id: '10' + - process_id: '26' + - process_id: '27' + - process_id: '30' state: deleted + # +# Task Output: +# ------------ # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# }, -# -# "commands": [ -# "router ospf 10", -# "no authentication keychain ansible_test1102", -# "no area 11 default-cost 5", -# "no area 11 cost 11", -# "no area 22 default-cost 6", -# "router ospf 26", -# "no adjacency stagger 10 20", -# "no authentication message-digest keychain ansible1101pass", -# "router ospf 27", -# "no area 10 authentication keychain ansi11393", -# "no area 10 hello-interval 2", -# "router ospf 30", -# "no cost 2", -# "no weight 2", -# "no passive disable", -# "no priority 1", -# "no flood-reduction disable", -# "no default-metric 10", -# "no router-id 2.2.2.2", -# "no demand-circuit enable", -# "no packet-size 577", -# "no transmit-delay 2", -# "no summary-in enable", -# "no external-out disable", -# "no dead-interval 2", -# "no hello-interval 1", -# "no retransmit-interval 2", -# "no mtu-ignore enable", -# "no area 11 default-cost 5", -# "no area 22 default-cost 6" -# ] -# -# "after": { -# "processes": [ -# { -# "process_id": "10" -# }, -# { -# "process_id": "26" -# }, -# { -# "process_id": "27" -# }, -# { -# "process_id": "30" -# } -# ] -# } -# -# -# ----------- -# After state -# ----------- +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# - area_id: '20' +# authentication: +# keychain: ansi11393 +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 +# +# commands: +# - router ospf 10 +# - no authentication keychain ansible_test1102 +# - no area 11 default-cost 5 +# - no area 11 cost 11 +# - no area 22 default-cost 6 +# - router ospf 26 +# - no adjacency stagger 10 20 +# - router ospf 27 +# - no area 10 authentication keychain ansi11393 +# - no area 10 hello-interval 2 +# - no area 20 authentication keychain ansi11393 +# - no area 20 default-cost 2 +# - no area 20 cost 2 +# - router ospf 30 +# - no cost 2 +# - no weight 2 +# - no passive disable +# - no priority 1 +# - no flood-reduction disable +# - no default-metric 10 +# - no router-id 2.2.2.2 +# - no demand-circuit enable +# - no packet-size 577 +# - no transmit-delay 2 +# - no summary-in enable +# - no external-out disable +# - no dead-interval 2 +# - no hello-interval 1 +# - no retransmit-interval 2 +# - no mtu-ignore enable +# - no area 11 default-cost 5 +# - no area 22 default-cost 6 +# +# after: +# processes: +# - process_id: '10' +# - process_id: '26' +# - process_id: '27' +# - process_id: '30' + +# After state: +# ------------ # # RP/0/RP0/CPU0:anton(config)#show running-config router ospf # Thu Jun 11 17:07:34.218 UTC # router ospf 10 +# area 11 +# ! +# area 22 +# ! # ! # router ospf 26 # ! # router ospf 27 +# area 10 +# ! +# area 20 +# ! # ! # router ospf 30 +# area 11 +# ! +# area 22 +# ! # ! @@ -2113,184 +1918,146 @@ EXAMPLES = """ # default-cost 6 # ! # ! +# - name: Parsed the device configuration to get output commands cisco.iosxr.iosxr_ospfv2: running_config: "{{ lookup('file', './parsed.cfg') }}" state: parsed # +# Task Output: +# ------------ # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "parsed": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } - - +# parsed: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# authentication: +# message_digest: +# keychain: ansible1101pass +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 # Using rendered # -# - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospfv2: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + authentication: + keychain: ansi11393 + - process_id: 26 + adjacency_stagger: + min_adjacency: 10 + max_adjacency: 20 + - process_id: 10 authentication: - keychain: ansi11393 - - process_id: 26 - adjacency_stagger: - min_adjacency: 10 - max_adjacency: 20 - - process_id: 10 - authentication: - keychain: ansible_test1102 - areas: - - area_id: 11 - default_cost: 5 - cost: 11 - - area_id: 22 - default_cost: 6 - - process_id: 30 - areas: - - area_id: 11 - default_cost: 5 - - area_id: 22 - default_cost: 6 - - cost: 2 - default_metric: 10 - transmit_delay: 2 - hello_interval: 1 - dead_interval: 2 - retransmit_interval: 2 - weight: 2 - packet_size: 577 - priority: 1 - router_id: 2.2.2.2 - demand_circuit: enable - passive: disable - summary_in: enable - flood_reduction: disable - mtu_ignore: enable - external_out: disable + keychain: ansible_test1102 + areas: + - area_id: 11 + default_cost: 5 + cost: 11 + - area_id: 22 + default_cost: 6 + - process_id: 30 + areas: + - area_id: 11 + default_cost: 5 + - area_id: 22 + default_cost: 6 + cost: 2 + default_metric: 10 + transmit_delay: 2 + hello_interval: 1 + dead_interval: 2 + retransmit_interval: 2 + weight: 2 + packet_size: 577 + priority: 1 + router_id: 2.2.2.2 + demand_circuit: enable + passive: disable + summary_in: enable + flood_reduction: disable + mtu_ignore: enable + external_out: disable state: rendered + # +# Task Output: +# ------------ # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "rendered": [ -# "router ospf 27", -# "area 10 authentication keychain ansi11393", -# "area 10 hello-interval 2", -# "router ospf 26", -# "adjacency stagger 10 20", -# "authentication message-digest keychain ansible1101pass", -# "router ospf 10", -# "authentication keychain ansible_test1102", -# "area 11 default-cost 5", -# "area 11 cost 11", -# "area 22 default-cost 6", -# "router ospf 30", -# "cost 2", -# "weight 2", -# "passive disable", -# "priority 1", -# "flood-reduction disable", -# "default-metric 10", -# "router-id 2.2.2.2", -# "demand-circuit enable", -# "packet-size 577", -# "transmit-delay 2", -# "summary-in enable", -# "external-out disable", -# "dead-interval 2", -# "hello-interval 1", -# "retransmit-interval 2", -# "mtu-ignore enable", -# "area 11 default-cost 5", -# "area 22 default-cost 6" -# ] +# rendered: +# - router ospf 27 +# - area 10 authentication keychain ansi11393 +# - area 10 hello-interval 2 +# - router ospf 26 +# - adjacency stagger 10 20 +# - router ospf 10 +# - authentication keychain ansible_test1102 +# - area 11 default-cost 5 +# - area 11 cost 11 +# - area 22 default-cost 6 +# - router ospf 30 +# - cost 2 +# - weight 2 +# - passive disable +# - priority 1 +# - flood-reduction disable +# - default-metric 10 +# - router-id 2.2.2.2 +# - demand-circuit enable +# - packet-size 577 +# - transmit-delay 2 +# - summary-in enable +# - external-out disable +# - dead-interval 2 +# - hello-interval 1 +# - retransmit-interval 2 +# - mtu-ignore enable +# - area 11 default-cost 5 +# - area 22 default-cost 6 # Using gathered @@ -2311,14 +2078,15 @@ EXAMPLES = """ # ! # ! # router ospf 26 -# authentication message-digest keychain ansible1101pass # adjacency stagger 10 20 # ! # router ospf 27 # area 10 -# authentication keychain ansi11393 +# authentication keychain ansi11393 # hello-interval 2 -# ! +# ! +# area 20 +# ! # ! # router ospf 30 # router-id 2.2.2.2 @@ -2350,84 +2118,52 @@ EXAMPLES = """ state: gathered # # -# ------------------------- -# Module Execution Result -# ------------------------- +# Task Output: +# ------------ # -# "gathered": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "authentication": { -# "keychain": "ansible_test1102" -# }, -# "process_id": "10" -# }, -# { -# "adjacency_stagger": { -# "max_adjacency": 20, -# "min_adjacency": 10 -# }, -# "authentication": { -# "message_digest": { -# "keychain": "ansible1101pass" -# } -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "authentication": { -# "keychain": "ansi11393" -# }, -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": "enable", -# "external_out": "disable", -# "flood_reduction": "disable", -# "hello_interval": 1, -# "mtu_ignore": "enable", -# "packet_size": 577, -# "passive": "disable", -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "summary_in": "enable", -# "transmit_delay": 2, -# "weight": 2 -# } -# ] -# } +# gathered: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# authentication: +# keychain: ansible_test1102 +# process_id: '10' +# - adjacency_stagger: +# max_adjacency: 20 +# min_adjacency: 10 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# keychain: ansi11393 +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: enable +# external_out: disable +# flood_reduction: disable +# hello_interval: 1 +# mtu_ignore: enable +# packet_size: 577 +# passive: disable +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# summary_in: enable +# transmit_delay: 2 +# weight: 2 # # After state: # ------------- @@ -2479,8 +2215,6 @@ EXAMPLES = """ # ! # ! # -# - """ RETURN = """ before: @@ -2504,6 +2238,27 @@ commands: sample: - "router ospf 30" - "authentication message-digest keychain 'ansible1101pass'" +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - router ospf 27 + - area 10 authentication keychain ansi11393 +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: dict + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: dict + sample: > + This output will always be in the same format as the + module argspec. """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv3.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv3.py index c4a52e556..b86e4ff1b 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv3.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv3.py @@ -1653,105 +1653,75 @@ EXAMPLES = """ retransmit_interval: 2 packet_size: 577 priority: 1 - router_id: '2.2.2.2' + router_id: 2.2.2.2 demand_circuit: true mtu_ignore: true state: merged # +# Task Output: +# ------------ +# +# before: {} # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": {} -# -# "commands": [ -# "router ospfv3 10", -# "area 11 default-cost 5", -# "area 11 cost 11", -# "area 22 default-cost 6", -# "router ospfv3 26", -# "authentication disable", -# "router ospfv3 27", -# "area 10 hello-interval 2", -# "router ospfv3 30", -# "cost 2", -# "priority 1", -# "default-metric 10", -# "router-id 2.2.2.2", -# "demand-circuit", -# "packet-size 577", -# "transmit-delay 2", -# "dead-interval 2", -# "hello-interval 1", -# "retransmit-interval 2", -# "mtu-ignore", -# "area 11 default-cost 5", -# "area 22 default-cost 6" -# ] -# -# "after": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } +# - router ospfv3 10 +# - area 11 default-cost 5 +# - area 11 cost 11 +# - area 22 default-cost 6 +# - router ospfv3 26 +# - authentication disable +# - router ospfv3 27 +# - area 10 hello-interval 2 +# - router ospfv3 30 +# - cost 2 +# - priority 1 +# - default-metric 10 +# - router-id 2.2.2.2 +# - demand-circuit +# - packet-size 577 +# - transmit-delay 2 +# - dead-interval 2 +# - hello-interval 1 +# - retransmit-interval 2 +# - mtu-ignore +# - area 11 default-cost 5 +# - area 22 default-cost 6 # +# after: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # -# ------------ -# After state +# After state: # ------------ # # RP/0/RP0/CPU0:anton#show running-config router ospfv3 @@ -1771,10 +1741,6 @@ EXAMPLES = """ # area 10 # hello-interval 2 # ! -# area 20 -# ! -# area 30 -# ! # ! # router ospfv3 30 # cost 2 @@ -1794,6 +1760,15 @@ EXAMPLES = """ # area 22 # default-cost 6 # ! +# ! + +# Using replaced +# +# Before state: +# ------------- +# +# +# RP/0/RP0/CPU0:anton#show running-config router ospf # router ospfv3 10 # area 11 # cost 11 @@ -1810,10 +1785,6 @@ EXAMPLES = """ # area 10 # hello-interval 2 # ! -# area 20 -# ! -# area 30 -# ! # ! # router ospfv3 30 # cost 2 @@ -1835,16 +1806,107 @@ EXAMPLES = """ # ! # ! +- name: Replace OSPFv3 routes configurations from the device + cisco.iosxr.iosxr_ospfv3: + config: + processes: + - process_id: 27 + areas: + - area_id: 10 + hello_interval: 2 + - area_id: 20 + cost: 2 + default_cost: 2 + - process_id: 26 + authentication: + disable: true + state: replaced - -# Using replaced # -# ------------ -# Before state +# Task Output: # ------------ # +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # -# RP/0/RP0/CPU0:anton#show running-config router ospf +# commands: +# - router ospfv3 27 +# - area 20 default-cost 2 +# - area 20 cost 2 +# +# after: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# - area_id: '20' +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 +# +# +# After state: +# ------------ +# +# RP/0/RP0/CPU0:anton(config)#do show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -1862,8 +1924,8 @@ EXAMPLES = """ # hello-interval 2 # ! # area 20 -# ! -# area 30 +# cost 2 +# default-cost 2 # ! # ! # router ospfv3 30 @@ -1884,6 +1946,13 @@ EXAMPLES = """ # area 22 # default-cost 6 # ! +# ! + +# Using overridden +# +# Before state: +# ------------- +# # router ospfv3 10 # area 11 # cost 11 @@ -1901,8 +1970,8 @@ EXAMPLES = """ # hello-interval 2 # ! # area 20 -# ! -# area 30 +# cost 2 +# default-cost 2 # ! # ! # router ospfv3 30 @@ -1925,7 +1994,7 @@ EXAMPLES = """ # ! # ! -- name: Replace OSPFv3 routes configurations from the device +- name: Override existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: processes: @@ -1933,153 +2002,152 @@ EXAMPLES = """ areas: - area_id: 10 hello_interval: 2 + authentication: + disable: true - area_id: 20 cost: 2 default_cost: 2 + authentication: + disable: true - process_id: 26 - authentication: - disable: true - state: replaced + areas: + - area_id: 10 + hello_interval: 2 + authentication: + disable: true + state: overridden # +# Task Output: +# ------------ # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } -# -# "commands": [ -# "router ospfv3 27", -# "area 20 default-cost 2", -# "area 20 cost 2" -# ] -# -# "after": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } -# -# -# ----------- -# After state -# ----------- +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# - area_id: '20' +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # -# RP/0/RP0/CPU0:anton(config)#do show running-config router ospfv3 +# commands: +# - router ospfv3 10 +# - no area 11 default-cost 5 +# - no area 11 cost 11 +# - no area 22 default-cost 6 +# - router ospfv3 30 +# - no cost 2 +# - no priority 1 +# - no default-metric 10 +# - no router-id 2.2.2.2 +# - no demand-circuit +# - no packet-size 577 +# - no transmit-delay 2 +# - no dead-interval 2 +# - no hello-interval 1 +# - no retransmit-interval 2 +# - no mtu-ignore +# - no area 11 default-cost 5 +# - no area 22 default-cost 6 +# - router ospfv3 27 +# - area 10 authentication disable +# - area 20 authentication disable +# - router ospfv3 26 +# - no authentication disable +# - area 10 authentication disable +# - area 10 hello-interval 2 +# +# after: +# processes: +# - process_id: '10' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# - area_id: '20' +# authentication: +# disable: true +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - process_id: '30' +# +# After state: +# ------------ +# +# RP/0/RP0/CPU0:anton#show running-config router ospfv3 +# router ospfv3 10 +# area 11 +# ! +# area 22 +# ! +# ! +# router ospfv3 26 +# area 10 +# authentication disable +# hello-interval 2 +# ! +# ! +# router ospfv3 27 +# area 10 +# authentication disable +# hello-interval 2 +# ! +# area 20 +# cost 2 +# authentication disable +# default-cost 2 +# ! +# ! +# router ospfv3 30 +# area 11 +# ! +# area 22 +# ! +# ! + +# Using deleted +# +# Before state: +# ------------- +# +# +# RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -2091,17 +2159,21 @@ EXAMPLES = """ # ! # router ospfv3 26 # authentication disable +# area 10 +# authentication disable +# hello-interval 2 +# ! # ! # router ospfv3 27 # area 10 +# authentication disable # hello-interval 2 # ! # area 20 # cost 2 +# authentication disable # default-cost 2 # ! -# area 30 -# ! # ! # router ospfv3 30 # cost 2 @@ -2123,165 +2195,108 @@ EXAMPLES = """ # ! # ! - -- name: Override existing OSPFv3 configurations from the device +- name: Deleted existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: processes: - - process_id: 27 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - disable: true - - area_id: 20 - cost: 2 - default_cost: 2 - authentication: - disable: true - - process_id: 26 - areas: - - area_id: 10 - hello_interval: 2 - authentication: - disable: true - state: overridden + - process_id: '10' + - process_id: '26' + - process_id: '27' + - process_id: '30' + state: deleted + # +# Task Output: +# ------------ +# +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# - area_id: '20' +# authentication: +# disable: true +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } -# -# "commands": [ -# "router ospfv3 10", -# "no area 11 default-cost 5", -# "no area 11 cost 11", -# "no area 22 default-cost 6", -# "router ospfv3 30", -# "no cost 2", -# "no priority 1", -# "no default-metric 10", -# "no router-id 2.2.2.2", -# "no demand-circuit", -# "no packet-size 577", -# "no transmit-delay 2", -# "no dead-interval 2", -# "no hello-interval 1", -# "no retransmit-interval 2", -# "no mtu-ignore", -# "no area 11 default-cost 5", -# "no area 22 default-cost 6", -# "router ospfv3 26", -# "area 10 hello-interval 4" -# ] -# -# "after": { -# "processes": [ -# { -# "process_id": "10" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 4 -# } -# ], -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "process_id": "30" -# } -# ] -# } -# -# -# ----------- -# After state -# ----------- +# commands: +# - router ospfv3 10 +# - no area 11 default-cost 5 +# - no area 11 cost 11 +# - no area 22 default-cost 6 +# - router ospfv3 26 +# - no authentication disable +# - no area 10 authentication disable +# - no area 10 hello-interval 2 +# - router ospfv3 27 +# - no area 10 authentication disable +# - no area 10 hello-interval 2 +# - no area 20 authentication disable +# - no area 20 default-cost 2 +# - no area 20 cost 2 +# - router ospfv3 30 +# - no cost 2 +# - no priority 1 +# - no default-metric 10 +# - no router-id 2.2.2.2 +# - no demand-circuit +# - no packet-size 577 +# - no transmit-delay 2 +# - no dead-interval 2 +# - no hello-interval 1 +# - no retransmit-interval 2 +# - no mtu-ignore +# - no area 11 default-cost 5 +# - no area 22 default-cost 6 # -# RP/0/RP0/CPU0:anton#show running-config router ospfv3 +# after: +# processes: +# - process_id: '10' +# - process_id: '26' +# - process_id: '27' +# - process_id: '30' +# +# After state: +# ------------ +# +# RP/0/RP0/CPU0:anton(config)#show running-config router ospfv3 # router ospfv3 10 # area 11 # ! @@ -2289,20 +2304,13 @@ EXAMPLES = """ # ! # ! # router ospfv3 26 -# authentication disable # area 10 -# hello-interval 4 # ! # ! # router ospfv3 27 # area 10 -# hello-interval 2 # ! # area 20 -# cost 2 -# default-cost 2 -# ! -# area 30 # ! # ! # router ospfv3 30 @@ -2312,143 +2320,182 @@ EXAMPLES = """ # ! # ! - - # Using deleted # -# ------------ -# Before state -# ------------ +# Before state: +# ------------- # # # RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 +# cost 11 +# default-cost 5 # ! # area 22 +# default-cost 6 # ! # ! # router ospfv3 26 # authentication disable # area 10 -# hello-interval 4 +# authentication disable +# hello-interval 2 # ! # ! # router ospfv3 27 # area 10 +# authentication disable # hello-interval 2 # ! # area 20 # cost 2 +# authentication disable # default-cost 2 # ! -# area 30 -# ! # ! # router ospfv3 30 +# cost 2 +# priority 1 +# mtu-ignore +# packet-size 577 +# dead-interval 2 +# retransmit-interval 2 +# demand-circuit +# hello-interval 1 +# transmit-delay 2 +# router-id 2.2.2.2 +# default-metric 10 # area 11 +# default-cost 5 # ! # area 22 +# default-cost 6 # ! # ! - name: Deleted existing OSPFv3 configurations from the device cisco.iosxr.iosxr_ospfv3: config: - processes: - - process_id: '10' - - process_id: '26' - - process_id: '27' - - process_id: '30' state: deleted # +# Task Output: +# ------------ +# +# before: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# authentication: +# disable: true +# hello_interval: 2 +# - area_id: '20' +# authentication: +# disable: true +# cost: 2 +# default_cost: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 +# +# commands: +# - router ospfv3 10 +# - no area 11 default-cost 5 +# - no area 11 cost 11 +# - no area 22 default-cost 6 +# - router ospfv3 26 +# - no authentication disable +# - no area 10 authentication disable +# - no area 10 hello-interval 2 +# - router ospfv3 27 +# - no area 10 authentication disable +# - no area 10 hello-interval 2 +# - no area 20 authentication disable +# - no area 20 default-cost 2 +# - no area 20 cost 2 +# - router ospfv3 30 +# - no cost 2 +# - no priority 1 +# - no default-metric 10 +# - no router-id 2.2.2.2 +# - no demand-circuit +# - no packet-size 577 +# - no transmit-delay 2 +# - no dead-interval 2 +# - no hello-interval 1 +# - no retransmit-interval 2 +# - no mtu-ignore +# - no area 11 default-cost 5 +# - no area 22 default-cost 6 # -# ------------------------ -# Module Execution Result -# ------------------------ -# -# "before": { -# "processes": [ -# { -# "process_id": "10" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 4 -# } -# ], -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# }, -# { -# "area_id": "20", -# "cost": 2, -# "default_cost": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "process_id": "30" -# } -# ] -# }, -# -# "commands": [ -# "router ospfv3 26", -# "no authentication disable", -# "no area 10 hello-interval 4", -# "router ospfv3 27", -# "no area 10 hello-interval 2", -# "no area 20 default-cost 2", -# "no area 20 cost 2" -# ] -# -# "after": { -# "processes": [ -# { -# "process_id": "10" -# }, -# { -# "process_id": "26" -# }, -# { -# "process_id": "27" -# }, -# { -# "process_id": "30" -# } -# ] -# } -# -# -# ----------- -# After state -# ----------- +# after: +# processes: +# - process_id: '10' +# - process_id: '26' +# - process_id: '27' +# - process_id: '30' +# +# After state: +# ------------ # # RP/0/RP0/CPU0:anton(config)#show running-config router ospfv3 # router ospfv3 10 +# area 11 +# ! +# area 22 +# ! # ! # router ospfv3 26 +# area 10 +# ! # ! # router ospfv3 27 +# area 10 +# ! +# area 20 +# ! # ! # router ospfv3 30 +# area 11 +# ! +# area 22 +# ! # ! # Using parsed +# # parsed.cfg # ------------ # router ospfv3 10 @@ -2493,72 +2540,45 @@ EXAMPLES = """ state: parsed # # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "parsed": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } +# Task Output: +# ------------ +# +# parsed: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # # Using rendered # -# - name: Render the commands for provided configuration cisco.iosxr.iosxr_ospfv3: config: @@ -2598,35 +2618,32 @@ EXAMPLES = """ # # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# -# "rendered": [ -# "router ospfv3 27", -# "area 10 hello-interval 2", -# "router ospfv3 26", -# "authentication disable", -# "router ospfv3 10", -# "area 11 default-cost 5", -# "area 11 cost 11", -# "area 22 default-cost 6", -# "router ospfv3 30", -# "cost 2", -# "priority 1", -# "default-metric 10", -# "router-id 2.2.2.2", -# "demand-circuit", -# "packet-size 577", -# "transmit-delay 2", -# "dead-interval 2", -# "hello-interval 1", -# "retransmit-interval 2", -# "mtu-ignore", -# "area 11 default-cost 5", -# "area 22 default-cost 6" -# ] +# Task Output: +# ------------ +# +# rendered: +# - router ospfv3 27 +# - area 10 hello-interval 2 +# - router ospfv3 26 +# - authentication disable +# - router ospfv3 10 +# - area 11 default-cost 5 +# - area 11 cost 11 +# - area 22 default-cost 6 +# - router ospfv3 30 +# - cost 2 +# - priority 1 +# - default-metric 10 +# - router-id 2.2.2.2 +# - demand-circuit +# - packet-size 577 +# - transmit-delay 2 +# - dead-interval 2 +# - hello-interval 1 +# - retransmit-interval 2 +# - mtu-ignore +# - area 11 default-cost 5 +# - area 22 default-cost 6 # Using gathered @@ -2634,7 +2651,7 @@ EXAMPLES = """ # Before state: # ------------- # -# RP/0/RP0/CPU0:anton#show running-config router ospf +# RP/0/RP0/CPU0:anton#show running-config router ospfv3 # router ospfv3 10 # area 11 # cost 11 @@ -2655,8 +2672,6 @@ EXAMPLES = """ # ! # area 20 # ! -# area 30 -# ! # ! # router ospfv3 30 # cost 2 @@ -2683,69 +2698,91 @@ EXAMPLES = """ state: gathered # # -# ------------------------- -# Module Execution Result -# ------------------------- -# -# "gathered": { -# "processes": [ -# { -# "areas": [ -# { -# "area_id": "11", -# "cost": 11, -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "process_id": "10" -# }, -# { -# "authentication": { -# "disable": true -# }, -# "process_id": "26" -# }, -# { -# "areas": [ -# { -# "area_id": "10", -# "hello_interval": 2 -# } -# ], -# "process_id": "27" -# }, -# { -# "areas": [ -# { -# "area_id": "11", -# "default_cost": 5 -# }, -# { -# "area_id": "22", -# "default_cost": 6 -# } -# ], -# "cost": 2, -# "dead_interval": 2, -# "default_metric": 10, -# "demand_circuit": true, -# "hello_interval": 1, -# "mtu_ignore": true, -# "packet_size": 577, -# "priority": 1, -# "process_id": "30", -# "retransmit_interval": 2, -# "router_id": "2.2.2.2", -# "transmit_delay": 2 -# } -# ] -# } +# Task Output: +# ------------ +# +# gathered: +# processes: +# - areas: +# - area_id: '11' +# cost: 11 +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# process_id: '10' +# - authentication: +# disable: true +# process_id: '26' +# - areas: +# - area_id: '10' +# hello_interval: 2 +# process_id: '27' +# - areas: +# - area_id: '11' +# default_cost: 5 +# - area_id: '22' +# default_cost: 6 +# cost: 2 +# dead_interval: 2 +# default_metric: 10 +# demand_circuit: true +# hello_interval: 1 +# mtu_ignore: true +# packet_size: 577 +# priority: 1 +# process_id: '30' +# retransmit_interval: 2 +# router_id: 2.2.2.2 +# transmit_delay: 2 # """ +RETURN = """ +before: + description: The configuration prior to the model invocation. + returned: always + type: dict + sample: > + The configuration returned will always be in the same format + of the parameters above. +after: + description: The resulting configuration model invocation. + returned: when changed + type: dict + sample: > + The configuration returned will always be in the same format + of the parameters above. +commands: + description: The set of commands pushed to the remote device. + returned: always + type: list + sample: + - router ospfv3 10 + - area 11 default-cost 5 + - area 11 cost 11 + - area 22 default-cost 6 + +rendered: + description: The provided configuration in the task rendered in device-native format (offline). + returned: when I(state) is C(rendered) + type: list + sample: + - router ospfv3 27 + - area 10 hello-interval 2 +gathered: + description: Facts about the network resource gathered from the remote device as structured data. + returned: when I(state) is C(gathered) + type: dict + sample: > + This output will always be in the same format as the + module argspec. +parsed: + description: The device native config provided in I(running_config) option parsed into structured data as per module argspec. + returned: when I(state) is C(parsed) + type: dict + sample: > + This output will always be in the same format as the + module argspec. +""" from ansible.module_utils.basic import AnsibleModule diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_prefix_lists.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_prefix_lists.py index 1fccc8521..c47998020 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_prefix_lists.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_prefix_lists.py @@ -101,59 +101,108 @@ options: EXAMPLES = """ # Using merged + + # Before state -#RP/0/0/CPU0:10#show running-config -#Thu Feb 4 09:38:36.245 UTC -#% No such configuration item(s) -#RP/0/0/CPU0:10# +# RP/0/0/CPU0:10#show running-config +# Thu Feb 4 09:38:36.245 UTC +# % No such configuration item(s) +# RP/0/0/CPU0:10# # + + - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_prefix_lists: - state: merged - config: - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: deny - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL_2_REMARK - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_2_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - name: pl2 - entries: - - sequence: 5 - action: remark - description: TEST_PL2_REMARK - - name: pl3 - entries: - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 + state: merged + config: + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: deny + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL_2_REMARK + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_2_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - name: pl2 + entries: + - sequence: 5 + action: remark + description: TEST_PL2_REMARK + - name: pl3 + entries: + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + +# Task Output +# ------------- +# before: [] +# commands: +# - ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48 +# - ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK +# - ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK +# - ipv4 prefix-list pl1 4 permit 10.0.0.0/24 +# - ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK +# - ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0 +# after: +# - afi: ipv6 +# prefix_lists: +# - name: pl_1 +# entries: +# - prefix: 2001:db8:1234::/48 +# action: deny +# sequence: 1 +# - name: pl_2 +# entries: +# - sequence: 2 +# action: remark +# description: TEST_PL_2_REMARK +# - afi: ipv4 +# prefix_lists: +# - name: pl1 +# entries: +# - sequence: 3 +# action: remark +# description: TEST_PL1_2_REMARK +# - sequence: 4 +# action: permit +# prefix: 10.0.0.0/24 +# - name: pl2 +# entries: +# - sequence: 5 +# action: remark +# description: TEST_PL2_REMARK +# - name: pl3 +# entries: +# - sequence: 6 +# action: permit +# prefix: 35.0.0.0/8 +# eq: 0 + -# # After state: -# -#RP/0/0/CPU0:10#show running-config +# ------------ +# RP/0/0/CPU0:10#show running-config # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! # ipv6 prefix-list pl_2 -# 2 remark TEST_PL_2_REMARK +# 2 remark TEST_PL_2_REMAR # ! # ipv4 prefix-list pl1 # 3 remark TEST_PL1_2_REMARK @@ -166,91 +215,13 @@ EXAMPLES = """ # 6 permit 35.0.0.0/8 eq 0 # ! -#Module execution -# -# "after": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL_2_REMARK", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# }, -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": "35.0.0.0/8", -# "sequence": 6, -# "eq": 0 -# } -# ], -# "name": "pl3" -# }, -# ] -# } -# ], -# "before": [], -# "changed": true, -# "commands": [ -# "ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48", -# "ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK", -# "ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK", -# "ipv4 prefix-list pl1 4 permit 10.0.0.0/24", -# "ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK" -# "ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0" -# ] -#----------------------------------------------------------------------- + # Using replaced: -# -------------- -# Before state -#RP/0/0/CPU0:10#show running-config + + +# Before state: +# ------------- +# RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -266,33 +237,100 @@ EXAMPLES = """ # 5 remark TEST_PL2_REMARK # ! # -# -- name: Replace device configurations of listed prefix lists with provided configurations + + +- name: >- + Replace device configurations of listed prefix lists with provided + configurations register: result - cisco.iosxr.iosxr_prefix_lists: &id001 + cisco.iosxr.iosxr_prefix_lists: config: - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: permit - prefix: 10.0.0.0/24 - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: permit - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL1_2 + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: permit + prefix: 10.0.0.0/24 + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: permit + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL1_2 state: replaced + + +# Task Output +# ------------- +# before: +# - afi: ipv6 +# prefix_lists: +# - entries: +# - action: deny +# prefix: 2001:db8:1234::/48 +# sequence: 1 +# name: pl_1 +# - entries: +# - action: remark +# description: TEST_PL_2_REMARK +# sequence: 2 +# name: pl_2 +# - afi: ipv4 +# prefix_lists: +# - entries: +# - action: remark +# description: TEST_PL1_2_REMARK +# sequence: 3 +# - action: permit +# prefix: 10.0.0.0/24 +# sequence: 4 +# name: pl1 +# - entries: +# - action: remark +# description: TEST_PL2_REMARK +# sequence: 5 +# name: pl2 +# commands: +# - no ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK +# - no ipv4 prefix-list pl1 4 permit 10.0.0.0/24 +# - ipv4 prefix-list pl1 3 permit 10.0.0.0/24 +# - ipv6 prefix-list pl_2 2 remark TEST_PL1_2 +# after: +# - afi: ipv6 +# prefix_lists: +# - entries: +# - action: deny +# prefix: 2001:db8:1234::/48 +# sequence: 1 +# name: pl_1 +# - entries: +# - action: remark +# description: TEST_PL1_2 +# sequence: 2 +# name: pl_2 +# - afi: ipv4 +# prefix_lists: +# - entries: +# - action: permit +# prefix: 10.0.0.0/24 +# sequence: 3 +# name: pl1 +# - entries: +# - action: remark +# description: TEST_PL2_REMARK +# sequence: 5 +# name: pl2 + + # After state: -#RP/0/0/CPU0:10#show running-config +# RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -308,179 +346,14 @@ EXAMPLES = """ # # Module Execution: # -# "after": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 3 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# } -# ] -# } -# ], -# "before": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL_2_REMARK", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# } -# ] -# } -# ], -# "changed": true, -# "commands": [ -# "no ipv4 prefix-list pl1 3 remark TEST_PL1_2_REMARK", -# "no ipv4 prefix-list pl1 4 permit 10.0.0.0/24", -# "ipv4 prefix-list pl1 3 permit 10.0.0.0/24", -# "ipv6 prefix-list pl_2 2 remark TEST_PL1_2" -# ], -# "invocation": { -# "module_args": { -# "config": [ -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "permit", -# "description": null, -# "prefix": "10.0.0.0/24", -# "sequence": 3 -# } -# ], -# "name": "pl1" -# } -# ] -# }, -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "permit", -# "description": null, -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2", -# "prefix": null, -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# } -# ], -# "running_config": null, -# "state": "replaced" -# } -# } -# } -#------------------------------------------------------------------ + + # Using deleted: -# ------------- + + # Before state: -#RP/0/0/CPU0:10#show running-config +# ------------- +# RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -501,99 +374,61 @@ EXAMPLES = """ cisco.iosxr.iosxr_prefix_lists: state: deleted +# Task Output +# ------------- +# before: +# - afi: ipv6 +# prefix_lists: +# - name: pl_1 +# entries: +# - prefix: 2001:db8:1234::/48 +# action: deny +# sequence: 1 +# - name: pl_2 +# entries: +# - sequence: 2 +# action: remark +# description: TEST_PL_2_REMARK +# - afi: ipv4 +# prefix_lists: +# - name: pl1 +# entries: +# - sequence: 3 +# action: remark +# description: TEST_PL1_2_REMARK +# - sequence: 4 +# action: permit +# prefix: 10.0.0.0/24 +# - name: pl2 +# entries: +# - sequence: 5 +# action: remark +# description: TEST_PL2_REMARK +# - name: pl3 +# entries: +# - sequence: 6 +# action: permit +# prefix: 35.0.0.0/8 +# eq: 0 +# commands: +# - no ipv6 prefix-list pl_1 +# - no ipv6 prefix-list pl_2 +# - no ipv4 prefix-list pl1 +# - no ipv4 prefix-list pl2 +# - no ipv4 prefix-list pl3 +# after: [] + + # After state: -#RP/0/0/CPU0:10#show running-config -# -# -# Module Execution: -# -# "after": [], -# "before": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 3 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# }, -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": " 35.0.0.0/8", -# "sequence": 6, -# "eq": 0 -# } -# ], -# "name": "pl3" -# }, -# ] -# } -# ], -# "changed": true, -# "commands": [ -# "no ipv6 prefix-list pl_1", -# "no ipv6 prefix-list pl_2", -# "no ipv4 prefix-list pl1", -# "no ipv4 prefix-list pl2" -# "no ipv4 prefix-list pl3" -# ], -# "invocation": { -# "module_args": { -# "config": null, -# "running_config": null, -# "state": "deleted" -# } -# } -# } -#--------------------------------------------------------------------------------- +# RP/0/0/CPU0:10#show running-config # + # using gathered: -# -------------- -# Before state: -#RP/0/0/CPU0:10#show running-config -# + + +# After state: +# ------------ +# RP/0/0/CPU0:10#show running-config # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! @@ -606,91 +441,57 @@ EXAMPLES = """ # ! # ipv4 prefix-list pl2 # 5 remark TEST_PL2_REMARK -#! +# ! # ipv4 prefix-list pl3 # 6 permit 35.0.0.0/8 eq 0 -#! +# ! + + - name: Gather ACL interfaces facts using gathered state cisco.iosxr.iosxr_prefix_lists: - state: gathered -# -# Module Execution: -# -# "gathered": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL_2_REMARK", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# }, -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": "35.0.0.0/8", -# "sequence": 6, -# "eq": 0 -# } -# ], -# "name": "pl3" -# }, -# ] -# } -# ], -# "changed": false, -#-------------------------------------------------------------------------- + state: gathered + +# gathered: +# - afi: ipv6 +# prefix_lists: +# - name: pl_1 +# entries: +# - prefix: 2001:db8:1234::/48 +# action: deny +# sequence: 1 +# - name: pl_2 +# entries: +# - sequence: 2 +# action: remark +# description: TEST_PL_2_REMARK +# - afi: ipv4 +# prefix_lists: +# - name: pl1 +# entries: +# - sequence: 3 +# action: remark +# description: TEST_PL1_2_REMARK +# - sequence: 4 +# action: permit +# prefix: 10.0.0.0/24 +# - name: pl2 +# entries: +# - sequence: 5 +# action: remark +# description: TEST_PL2_REMARK +# - name: pl3 +# entries: +# - sequence: 6 +# action: permit +# prefix: 35.0.0.0/8 +# eq: 0 + + # Using parsed: -# -------------- -# + + # parsed.cfg -#------------------------------ +# ------------------------------ # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 # ! @@ -703,129 +504,93 @@ EXAMPLES = """ # ! # ipv4 prefix-list pl2 # 5 remark TEST_PL2_REMARK -#! -# ipv4 prefix-list pl3 -# 6 permit 35.0.0.0/8 eq 0 -# -# + + - name: Parse externally provided Prefix_lists config to agnostic model cisco.iosxr.iosxr_prefix_lists: - running_config: "{{ lookup('file', './fixtures/parsed.cfg') }}" - state: parsed -# -# Module execution: -#"parsed": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL_2_REMARK", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# }, -# { -# "entries": [ -# { -# "action": "permit", -# "prefix": "35.0.0.0/8", -# "sequence": 6, -# "eq": 0 -# } -# ], -# "name": "pl3" -# }, -# ] -# } -# ] -# -#---------------------------------------------------------------------------- + running_config: '{{ lookup(''file'', ''./fixtures/parsed.cfg'') }}' + state: parsed + + +# Task Output +# ------------- +# parsed: +# - afi: ipv6 +# prefix_lists: +# - name: pl_1 +# entries: +# - prefix: 2001:db8:1234::/48 +# action: deny +# sequence: 1 +# - name: pl_2 +# entries: +# - sequence: 2 +# action: remark +# description: TEST_PL_2_REMARK +# - afi: ipv4 +# prefix_lists: +# - name: pl1 +# entries: +# - sequence: 3 +# action: remark +# description: TEST_PL1_2_REMARK +# - sequence: 4 +# action: permit +# prefix: 10.0.0.0/24 +# - name: pl2 +# entries: +# - sequence: 5 +# action: remark +# description: TEST_PL2_REMARK +# - sequence: 6 +# action: permit +# prefix: 35.0.0.0/8 +# eq: 0 + + # Using rendered: -# -------------- -# + + - name: Render platform specific commands from task input using rendered state register: result cisco.iosxr.iosxr_prefix_lists: - config: - - afi: ipv6 - prefix_lists: - - name: pl_1 - entries: - - prefix: 2001:db8:1234::/48 - action: deny - sequence: 1 - - name: pl_2 - entries: - - sequence: 2 - action: remark - description: TEST_PL_2_REMARK - - afi: ipv4 - prefix_lists: - - name: pl1 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_2_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - name: pl2 - entries: - - sequence: 5 - action: remark - description: TEST_PL2_REMARK - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 - - state: rendered -# After state: -# Module Execution: + config: + - afi: ipv6 + prefix_lists: + - name: pl_1 + entries: + - prefix: '2001:db8:1234::/48' + action: deny + sequence: 1 + - name: pl_2 + entries: + - sequence: 2 + action: remark + description: TEST_PL_2_REMARK + - afi: ipv4 + prefix_lists: + - name: pl1 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_2_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - name: pl2 + entries: + - sequence: 5 + action: remark + description: TEST_PL2_REMARK + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + state: rendered + + +# Task Output +# ------------- # "rendered": [ # "ipv6 prefix-list pl_1 1 deny 2001:db8:1234::/48", # "ipv6 prefix-list pl_2 2 remark TEST_PL_2_REMARK", @@ -834,12 +599,13 @@ EXAMPLES = """ # "ipv4 prefix-list pl2 5 remark TEST_PL2_REMARK", # "ipv4 prefix-list pl2 6 permit 35.0.0.0/8 eq 0" # ] -# -#--------------------------------------------------------------------------------- + # Using overridden: -# -------------- + + # Before state: -#RP/0/0/CPU0:10#show running-config +# ------------- +# RP/0/0/CPU0:10#show running-config # # ipv6 prefix-list pl_1 # 1 deny 2001:db8:1234::/48 @@ -856,175 +622,88 @@ EXAMPLES = """ # - name: Overridde all Prefix_lists configuration with provided configuration cisco.iosxr.iosxr_prefix_lists: - config: - - afi: ipv4 - prefix_lists: - - name: pl3 - entries: - - sequence: 3 - action: remark - description: TEST_PL1_3_REMARK - - sequence: 4 - action: permit - prefix: 10.0.0.0/24 - - sequence: 6 - action: permit - prefix: 35.0.0.0/8 - eq: 0 - state: overridden + config: + - afi: ipv4 + prefix_lists: + - name: pl3 + entries: + - sequence: 3 + action: remark + description: TEST_PL1_3_REMARK + - sequence: 4 + action: permit + prefix: 10.0.0.0/24 + - sequence: 6 + action: permit + prefix: 35.0.0.0/8 + eq: 0 + state: overridden + + +# Task Output +# ------------- +# before: +# - afi: ipv6 +# prefix_lists: +# - entries: +# - action: deny +# prefix: 2001:db8:1234::/48 +# sequence: 1 +# name: pl_1 +# - entries: +# - action: remark +# description: TEST_PL_2_REMARK +# sequence: 2 +# name: pl_2 +# - afi: ipv4 +# prefix_lists: +# - entries: +# - action: remark +# description: TEST_PL1_2_REMARK +# sequence: 3 +# - action: permit +# prefix: 10.0.0.0/24 +# sequence: 4 +# name: pl1 +# - entries: +# - action: remark +# description: TEST_PL2_REMARK +# sequence: 5 +# name: pl2 +# commands: +# - no ipv6 prefix-list pl_1 +# - no ipv6 prefix-list pl_2 +# - no ipv4 prefix-list pl1 +# - no ipv4 prefix-list pl2 +# - ipv4 prefix-list pl3 3 remark TEST_PL1_3_REMARK +# - ipv4 prefix-list pl3 4 permit 10.0.0.0/24 +# - ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0 +# after: +# - afi: ipv4 +# prefix_lists: +# - entries: +# - action: remark +# description: TEST_PL1_3_REMARK +# sequence: 3 +# - action: permit +# prefix: 10.0.0.0/24 +# sequence: 4 +# - action: permit +# prefix: 35.0.0.0/8 +# sequence: 6 +# eq: 0 +# name: pl3 + # After state: -#RP/0/0/CPU0:10#show running-config +# RP/0/0/CPU0:10#show running-config # -#ipv4 prefix-list pl3 +# ipv4 prefix-list pl3 # 3 remark TEST_PL1_3_REMARK # 4 permit 10.0.0.0/24 # 6 permit 35.0.0.0/8 eq 0 # ! -#! -# # Module Execution: -# "after": [ -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_3_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# }, -# { -# "action": "permit", -# "prefix": "35.0.0.0/8", -# "sequence": 6, -# "eq": 0 -# } -# ], -# "name": "pl3" -# } -# ] -# } -# ], -# "before": [ -# { -# "afi": "ipv6", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "deny", -# "prefix": "2001:db8:1234::/48", -# "sequence": 1 -# } -# ], -# "name": "pl_1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL_2_REMARK", -# "sequence": 2 -# } -# ], -# "name": "pl_2" -# } -# ] -# }, -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_2_REMARK", -# "sequence": 3 -# }, -# { -# "action": "permit", -# "prefix": "10.0.0.0/24", -# "sequence": 4 -# } -# ], -# "name": "pl1" -# }, -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL2_REMARK", -# "sequence": 5 -# } -# ], -# "name": "pl2" -# } -# ] -# } -# ], -# "changed": true, -# "commands": [ -# "no ipv6 prefix-list pl_1", -# "no ipv6 prefix-list pl_2", -# "no ipv4 prefix-list pl1", -# "no ipv4 prefix-list pl2", -# "ipv4 prefix-list pl3 3 remark TEST_PL1_3_REMARK", -# "ipv4 prefix-list pl3 4 permit 10.0.0.0/24", -# "ipv4 prefix-list pl3 6 permit 35.0.0.0/8 eq 0" -# ], -# "invocation": { -# "module_args": { -# "config": [ -# { -# "afi": "ipv4", -# "prefix_lists": [ -# { -# "entries": [ -# { -# "action": "remark", -# "description": "TEST_PL1_3_REMARK", -# "prefix": null, -# "sequence": 3, -# "ge": null, -# "le": null, -# "eq": null -# }, -# { -# "action": "permit", -# "description": null, -# "prefix": "10.0.0.0/24", -# "sequence": 4, -# "ge": null, -# "le": null, -# "eq": null -# }, -# { -# "action": "permit", -# "description": null, -# "prefix": "35.0.0.0/8", -# "sequence": 6, -# "ge": null, -# "le": null, -# "eq": 0 -# } -# ], -# "name": "pl3" -# } -# ] -# } -# ], -# "running_config": null, -# "state": "overridden" -# } -# } -# } -# +# ! """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_snmp_server.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_snmp_server.py index 43d7016d0..9bc685756 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_snmp_server.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_snmp_server.py @@ -910,101 +910,102 @@ EXAMPLES = """ # --------------------- EMPTY ----------------- # Merged play: # ------------ + - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_snmp_server: - config: - vrfs: - - hosts: - - community: test1 - host: 1.1.1.1 - traps: true - vrf: vrf1 - users: - - Ipv4_acl: test1 - Ipv6_acl: test2 - group: test2 - user: u1 - version: v1 - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 12 - targets: - - host: 1.1.1.2 - name: test + config: + vrfs: + - hosts: + - community: test1 + host: 1.1.1.1 + traps: true + vrf: vrf1 + users: + - Ipv4_acl: test1 + Ipv6_acl: test2 + group: test2 + user: u1 + version: v1 + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 12 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 4 + inform: + retries: 7 + chassis_id: test2 + packetsize: 490 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1024 + communities: + - name: test2 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm1 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test1 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 1 + logging_threshold_pdu_processing: 1 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + addrpool: + high: true + low: true + bfd: true + bgp: + cbgp2: true + l2tun: + sessions: true + tunnel_down: true + tunnel_up: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true - ifmib: - internal_cache_max_duration: 4 - inform: - retries: 7 - chassis_id: test2 - packetsize: 490 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1024 - communities: - - name: test2 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm1 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test1 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 1 - logging_threshold_pdu_processing: 1 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - addrpool: - high: true - low: true - bfd: true - bgp: - cbgp2: true - l2tun: - sessions: true - tunnel_down: true - tunnel_up: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true # # Commands Fired: # ------------ @@ -1315,78 +1316,78 @@ EXAMPLES = """ # ---------------- - name: Override Snmp-server configuration with provided configuration cisco.iosxr.iosxr_snmp_server: - config: - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 13 - targets: - - host: 1.1.1.2 - name: test + config: + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 13 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 5 + inform: + retries: 7 + chassis_id: test + packetsize: 491 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1025 + communities: + - name: test1 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm2 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test2 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 2 + logging_threshold_pdu_processing: 2 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true + state: overridden - ifmib: - internal_cache_max_duration: 5 - inform: - retries: 7 - chassis_id: test - packetsize: 491 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1025 - communities: - - name: test1 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm2 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test2 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 2 - logging_threshold_pdu_processing: 2 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true - state: overridden # Commands Fired: # --------------- # "commands": [ @@ -1526,78 +1527,78 @@ EXAMPLES = """ # ---------------- - name: Replace Snmp-server configuration with provided configuration cisco.iosxr.iosxr_snmp_server: - state: replaced - config: - timeouts: - duplicate: 0 - inQdrop: 0 - trap: - throttle_time: 13 - targets: - - host: 1.1.1.2 - name: test + state: replaced + config: + timeouts: + duplicate: 0 + inQdrop: 0 + trap: + throttle_time: 13 + targets: + - host: 1.1.1.2 + name: test + ifmib: + internal_cache_max_duration: 5 + inform: + retries: 7 + chassis_id: test + packetsize: 491 + queue_length: 2 + throttle_time: 60 + trap_source: GigabitEthernet0/0/0/2 + trap_timeout: 3 + context: + - c1 + - c2 + contact: t1 + correlator: + buffer_size: 1025 + communities: + - name: test1 + ro: true + sdrowner: true + acl_v4: test + acl_v6: test1 + community_maps: + - name: cm2 + context: c1 + target_list: t1 + security_name: s1 + drop: + report_IPv4: test2 + unknown_user: true + ipv6: + precedence: routine + ipv4: + dscp: af11 + location: test1 + logging_threshold_oid_processing: 2 + logging_threshold_pdu_processing: 2 + mib_bulkstat_max_procmem_size: 101 + mroutemib_send_all_vrf: true + overload_control: + overload_drop_time: 4 + overload_throttle_rate: 6 + notification_log_mib: + GlobalSize: 5 + size: 5 + traps: + hsrp: true + ipsla: true + ipsec: + start: true + stop: true + bridgemib: true + bulkstat_collection: true + cisco_entity_ext: true + config: true + copy_complete: true + l2vpn: + all: true + vc_down: true + vc_up: true + msdp_peer_state_change: true - ifmib: - internal_cache_max_duration: 5 - inform: - retries: 7 - chassis_id: test - packetsize: 491 - queue_length: 2 - throttle_time: 60 - trap_source: GigabitEthernet0/0/0/2 - trap_timeout: 3 - context: - - c1 - - c2 - contact: t1 - correlator: - buffer_size: 1025 - communities: - - name: test1 - ro: true - sdrowner: true - acl_v4: test - acl_v6: test1 - community_maps: - - name: cm2 - context: c1 - target_list: t1 - security_name: s1 - drop: - report_IPv4: test2 - unknown_user: true - ipv6: - precedence: routine - ipv4: - dscp: af11 - location: test1 - logging_threshold_oid_processing: 2 - logging_threshold_pdu_processing: 2 - mib_bulkstat_max_procmem_size: 101 - mroutemib_send_all_vrf: true - overload_control: - overload_drop_time: 4 - overload_throttle_rate: 6 - notification_log_mib: - GlobalSize: 5 - size: 5 - traps: - hsrp: true - ipsla: true - ipsec: - start: true - stop: true - bridgemib: true - bulkstat_collection: true - cisco_entity_ext: true - config: true - copy_complete: true - l2vpn: - all: true - vc_down: true - vc_up: true - msdp_peer_state_change: true # # Commands Fired: # --------------- @@ -1890,7 +1891,9 @@ EXAMPLES = """ # Using state: rendered # Rendered play: # -------------- -- name: Render platform specific configuration lines with state rendered (without connecting to the device) +- name: >- + Render platform specific configuration lines with state rendered (without + connecting to the device) cisco.iosxr.iosxr_snmp_server: state: rendered config: @@ -1914,7 +1917,6 @@ EXAMPLES = """ targets: - host: 1.1.1.2 name: test - ifmib: internal_cache_max_duration: 4 inform: @@ -1987,6 +1989,7 @@ EXAMPLES = """ vc_up: true msdp_peer_state_change: true register: result + # Module Execution Result: # ------------------------ # "rendered": [ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_static_routes.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_static_routes.py index 665eb0139..3a9fa07b3 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_static_routes.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_static_routes.py @@ -172,57 +172,115 @@ EXAMPLES = """ - name: Merge the provided configuration with the existing running configuration cisco.iosxr.iosxr_static_routes: config: - - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.16/28 - next_hops: - - forward_router_address: 192.0.2.10 - interface: FastEthernet0/0/0/1 - description: LAB - metric: 120 - tag: 10 - - - interface: FastEthernet0/0/0/5 - track: ip_sla_1 - - - dest: 192.0.2.32/28 - next_hops: - - forward_router_address: 192.0.2.11 - admin_distance: 100 - - - afi: ipv6 - safi: unicast - routes: - - dest: 2001:db8:1000::/36 - next_hops: - - interface: FastEthernet0/0/0/7 - description: DC - - - interface: FastEthernet0/0/0/8 - forward_router_address: 2001:db8:2000:2::1 - - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - description: DEV - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - track: ip_sla_2 - vrflabel: 124 + - address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.16/28 + next_hops: + - forward_router_address: 192.0.2.10 + interface: FastEthernet0/0/0/1 + description: LAB + metric: 120 + tag: 10 + - interface: FastEthernet0/0/0/5 + track: ip_sla_1 + - dest: 192.0.2.32/28 + next_hops: + - forward_router_address: 192.0.2.11 + admin_distance: 100 + - afi: ipv6 + safi: unicast + routes: + - dest: '2001:db8:1000::/36' + next_hops: + - interface: FastEthernet0/0/0/7 + description: DC + - interface: FastEthernet0/0/0/8 + forward_router_address: '2001:db8:2000:2::1' + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + description: DEV + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + track: ip_sla_2 + vrflabel: 124 state: merged + +# Task Output +# ----------- +# before: [] +# commands: +# - router static +# - address-family ipv4 unicast +# - 192.0.2.16/28 192.0.2.10 FastEthernet0/0/0/1 description LAB metric 120 tag 10 +# - 192.0.2.16/28 FastEthernet0/0/0/5 track ip_sla_1 +# - 192.0.2.32/28 192.0.2.11 100 +# - address-family ipv6 unicast +# - 2001:db8:1000::/36 FastEthernet0/0/0/7 description DC +# - 2001:db8:1000::/36 2001:db8:2000:2::1 FastEthernet0/0/0/8 +# - vrf DEV_SITE +# - address-family ipv4 unicast +# - 192.0.2.48/28 vrf test_1 192.0.2.12 description DEV +# - 192.0.2.80/28 vrf test_1 192.0.2.14 FastEthernet0/0/0/2 track ip_sla_2 vrflabel 124 +# after: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE + + +# # After state # ------------- # RP/0/RP0/CPU0:ios#show running-config router static @@ -272,25 +330,123 @@ EXAMPLES = """ - name: Update existing static routes configuration using merged cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - vrflabel: 2301 - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - description: rt_test_1 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + vrflabel: 2301 + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + description: rt_test_1 state: merged +# Task Output +# ----------- +# before: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE +# commands: +# - router static +# - vrf DEV_SITE +# - address-family ipv4 unicast +# - 192.0.2.48/28 vrf test_1 192.0.2.12 description DEV vrflabel 2301 +# - 192.0.2.80/28 vrf test_1 192.0.2.14 FastEthernet0/0/0/2 description rt_test_1 track ip_sla_2 vrflabel 124 +# after: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# vrflabel: 2301 +# - dest: 192.0.2.80/28 +# next_hops: +# - description: rt_test_1 +# dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE + # After state # ------------- # RP/0/RP0/CPU0:ios#show running-config router static @@ -342,19 +498,125 @@ EXAMPLES = """ - name: Replace device configurations of static routes with provided configurations cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.15 - interface: FastEthernet0/0/0/3 - description: DEV_NEW - dest_vrf: dev_test_2 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.15 + interface: FastEthernet0/0/0/3 + description: DEV_NEW + dest_vrf: dev_test_2 state: replaced +# Task Output +# ----------- +# before: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 0.0.0.0/0 +# next_hops: +# - forward_router_address: 10.0.151.254 +# interface: MgmtEth0 +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - forward_router_address: 192.0.3.24 +# interface: GigabitEthernet0/0/0/1 +# vrflabel: 2302 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE +# commands: +# - router static +# - vrf DEV_SITE +# - address-family ipv4 unicast +# - no 192.0.2.48/28 vrf test_1 192.0.2.12 +# - no 192.0.2.48/28 192.0.3.24 GigabitEthernet0/0/0/1 +# - 192.0.2.48/28 vrf dev_test_2 192.0.2.15 FastEthernet0/0/0/3 description DEV_NEW +# after: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV_NEW +# dest_vrf: dev_test_2 +# forward_router_address: 192.0.2.15 +# interface: FastEthernet0/0/0/3 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE + # After state # ------------ # RP/0/RP0/CPU0:ios#sh running-config router static @@ -405,27 +667,108 @@ EXAMPLES = """ - name: Overridde all static routes configuration with provided configuration cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_NEW - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.15 - interface: FastEthernet0/0/0/3 - description: DEV1 - - afi: ipv6 - safi: unicast - routes: - - dest: 2001:db8:3000::/36 - next_hops: - - interface: FastEthernet0/0/0/4 - forward_router_address: 2001:db8:2000:2::2 - description: PROD1 - track: ip_sla_1 + - vrf: DEV_NEW + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.15 + interface: FastEthernet0/0/0/3 + description: DEV1 + - afi: ipv6 + safi: unicast + routes: + - dest: '2001:db8:3000::/36' + next_hops: + - interface: FastEthernet0/0/0/4 + forward_router_address: '2001:db8:2000:2::2' + description: PROD1 + track: ip_sla_1 state: overridden +# Task Output +# ----------- +# before: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - forward_router_address: 192.0.3.24 +# interface: GigabitEthernet0/0/0/1 +# vrflabel: 2302 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE +# commands: +# - router static +# - no vrf DEV_SITE +# - no address-family ipv4 unicast +# - no address-family ipv6 unicast +# - vrf DEV_NEW +# - address-family ipv4 unicast +# - 192.0.2.48/28 192.0.2.15 FastEthernet0/0/0/3 description DEV1 +# - address-family ipv6 unicast +# - 2001:db8:3000::/36 2001:db8:2000:2::2 FastEthernet0/0/0/4 description PROD1 +# track ip_sla_1 +# after: +# - vrf: DEV_NEW +# address_families: +# - afi: ipv4 +# safi: unicast +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - forward_router_address: 192.0.2.15 +# interface: FastEthernet0/0/0/3 +# description: DEV1 +# - afi: ipv6 +# safi: unicast +# routes: +# - dest: 2001:db8:3000::/36 +# next_hops: +# - interface: FastEthernet0/0/0/4 +# forward_router_address: 2001:db8:2000:2::2 +# description: PROD1 +# track: ip_sla_1 + # After state # ------------- # RP/0/RP0/CPU0:ios#sh running-config router static @@ -469,12 +812,113 @@ EXAMPLES = """ - name: Delete all destination network entries under a single AFI cisco.iosxr.iosxr_static_routes: config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast state: deleted +# Task output +# ----------------------- +# before: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - forward_router_address: 192.0.3.24 +# interface: GigabitEthernet0/0/0/1 +# vrflabel: 2302 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE +# commands: +# - router static +# - vrf DEV_SITE +# - no address-family ipv4 unicast +# after: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - forward_router_address: 192.0.3.24 +# interface: GigabitEthernet0/0/0/1 +# vrflabel: 2302 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# - vrf: DEV_SITE + # After state # ------------ @@ -523,6 +967,58 @@ EXAMPLES = """ cisco.iosxr.iosxr_static_routes: state: deleted +# Task output +# ----------------------- +# before: +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.16/28 +# next_hops: +# - description: LAB +# forward_router_address: 192.0.2.10 +# interface: FastEthernet0/0/0/1 +# metric: 120 +# tag: 10 +# - interface: FastEthernet0/0/0/5 +# track: ip_sla_1 +# - dest: 192.0.2.32/28 +# next_hops: +# - admin_distance: 100 +# forward_router_address: 192.0.2.11 +# safi: unicast +# - afi: ipv6 +# routes: +# - dest: 2001:db8:1000::/36 +# next_hops: +# - description: DC +# interface: FastEthernet0/0/0/7 +# - forward_router_address: 2001:db8:2000:2::1 +# interface: FastEthernet0/0/0/8 +# safi: unicast +# - address_families: +# - afi: ipv4 +# routes: +# - dest: 192.0.2.48/28 +# next_hops: +# - description: DEV +# dest_vrf: test_1 +# forward_router_address: 192.0.2.12 +# - forward_router_address: 192.0.3.24 +# interface: GigabitEthernet0/0/0/1 +# vrflabel: 2302 +# - dest: 192.0.2.80/28 +# next_hops: +# - dest_vrf: test_1 +# forward_router_address: 192.0.2.14 +# interface: FastEthernet0/0/0/2 +# track: ip_sla_2 +# vrflabel: 124 +# safi: unicast +# vrf: DEV_SITE +# commands: +# - no router static +# after: [] # After state # ------------ # RP/0/RP0/CPU0:ios#sh running-config router static @@ -635,26 +1131,25 @@ EXAMPLES = """ # Using rendered - name: Render platform specific commands (without connecting to the device) - cisco.iosxr.iosxr_static_routes: + cisco.iosxr.iosxr_static_routes: null config: - - vrf: DEV_SITE - address_families: - - afi: ipv4 - safi: unicast - routes: - - dest: 192.0.2.48/28 - next_hops: - - forward_router_address: 192.0.2.12 - description: DEV - dest_vrf: test_1 - - - dest: 192.0.2.80/28 - next_hops: - - interface: FastEthernet0/0/0/2 - forward_router_address: 192.0.2.14 - dest_vrf: test_1 - track: ip_sla_2 - vrflabel: 124 + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + description: DEV + dest_vrf: test_1 + - dest: 192.0.2.80/28 + next_hops: + - interface: FastEthernet0/0/0/2 + forward_router_address: 192.0.2.14 + dest_vrf: test_1 + track: ip_sla_2 + vrflabel: 124 # Task Output (redacted) # ----------------------- diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_system.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_system.py index 0d0d60adb..d05608b6d 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_system.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_system.py @@ -91,17 +91,17 @@ EXAMPLES = """ hostname: iosxr01 domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com - name: remove configuration cisco.iosxr.iosxr_system: hostname: iosxr01 domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com state: absent - name: configure hostname and domain-name with vrf cisco.iosxr.iosxr_system: @@ -109,9 +109,9 @@ EXAMPLES = """ vrf: nondefault domain_name: test.example.com domain_search: - - ansible.com - - redhat.com - - cisco.com + - ansible.com + - redhat.com + - cisco.com - name: configure DNS lookup sources cisco.iosxr.iosxr_system: lookup_source: MgmtEth0/0/CPU0/0 @@ -119,8 +119,8 @@ EXAMPLES = """ - name: configure name servers cisco.iosxr.iosxr_system: name_servers: - - 8.8.8.8 - - 8.8.4.4 + - 8.8.8.8 + - 8.8.4.4 """ RETURN = """ diff --git a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_user.py b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_user.py index 6aefaa72d..e89d6e9eb 100644 --- a/ansible_collections/cisco/iosxr/plugins/modules/iosxr_user.py +++ b/ansible_collections/cisco/iosxr/plugins/modules/iosxr_user.py @@ -224,18 +224,18 @@ EXAMPLES = """ - name: set multiple users to group sys-admin cisco.iosxr.iosxr_user: aggregate: - - name: netop - - name: netend + - name: netop + - name: netend group: sysadmin state: present - name: set multiple users to multiple groups cisco.iosxr.iosxr_user: aggregate: - - name: netop - - name: netend + - name: netop + - name: netend groups: - - sysadmin - - root-system + - sysadmin + - root-system state: present - name: Change Password for User netop cisco.iosxr.iosxr_user: @@ -366,7 +366,6 @@ class PublicKeyManager(object): return out def run(self): - if self._module.params["state"] == "present": if not self._module.check_mode: key = self.convert_key_to_base64() @@ -758,7 +757,6 @@ class NCConfiguration(ConfigBase): self._module.params["update_password"] == "always" and want_item["configured_password"] is not None ): - want_item["configured_password"] = self.generate_md5_hash( want_item["configured_password"], ) diff --git a/ansible_collections/cisco/iosxr/plugins/netconf/iosxr.py b/ansible_collections/cisco/iosxr/plugins/netconf/iosxr.py index e0b1bac8d..0ed5ece03 100644 --- a/ansible_collections/cisco/iosxr/plugins/netconf/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/netconf/iosxr.py @@ -207,11 +207,11 @@ class Netconf(NetconfBase): return guessed_os # TODO: change .xml to .data_xml, when ncclient supports data_xml on all platforms - def get(self, filter=None, remove_ns=False): + def get(self, filter=None, with_defaults=None, remove_ns=False): if isinstance(filter, list): filter = tuple(filter) try: - resp = self.m.get(filter=filter) + resp = self.m.get(filter=filter, with_defaults=with_defaults) if remove_ns: response = remove_namespaces(resp) else: diff --git a/ansible_collections/cisco/iosxr/plugins/plugin_utils/__init__.py b/ansible_collections/cisco/iosxr/plugins/plugin_utils/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/plugin_utils/__init__.py diff --git a/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/iosxr.py b/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/iosxr.py index 0bcfd0e72..40c693982 100644 --- a/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/iosxr.py @@ -9,13 +9,14 @@ __metaclass__ = type DOCUMENTATION = """ --- author: Ansible Networking Team -grpc : iosxr -short_description: gRPC Plugin for IOS XR devices +name: grpc +short_description: gRPC plugin for IOS-XR devices description: - This gRPC plugin provides methods to connect and talk to Cisco IOS XR devices over gRPC protocol. -version_added: "" +version_added: "3.3.0" """ + import json import os import sys diff --git a/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py b/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py index e16c305bf..8d4ab2cac 100644 --- a/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py +++ b/ansible_collections/cisco/iosxr/plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py @@ -10,7 +10,6 @@ import sys _b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode("latin1")) from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pb2 # noqa: F401 from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database diff --git a/ansible_collections/cisco/iosxr/plugins/terminal/iosxr.py b/ansible_collections/cisco/iosxr/plugins/terminal/iosxr.py index 5b60dcd90..0c7765b28 100644 --- a/ansible_collections/cisco/iosxr/plugins/terminal/iosxr.py +++ b/ansible_collections/cisco/iosxr/plugins/terminal/iosxr.py @@ -28,7 +28,6 @@ from ansible_collections.ansible.netcommon.plugins.plugin_utils.terminal_base im class TerminalModule(TerminalBase): - terminal_stdout_re = [ re.compile(rb"[\r\n]*[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"), re.compile(rb"]]>]]>[\r\n]?"), diff --git a/ansible_collections/cisco/iosxr/plugins/test/__init__.py b/ansible_collections/cisco/iosxr/plugins/test/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/plugins/test/__init__.py diff --git a/ansible_collections/cisco/iosxr/requirements.txt b/ansible_collections/cisco/iosxr/requirements.txt index 83f814754..2fb85f407 100644 --- a/ansible_collections/cisco/iosxr/requirements.txt +++ b/ansible_collections/cisco/iosxr/requirements.txt @@ -1,6 +1,6 @@ ncclient paramiko ipaddress -ansible-pylibssh grpcio protobuf +ansible-pylibssh diff --git a/ansible_collections/cisco/iosxr/tests/__init__.py b/ansible_collections/cisco/iosxr/tests/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/__init__.py diff --git a/ansible_collections/cisco/iosxr/tests/config.yml b/ansible_collections/cisco/iosxr/tests/config.yml new file mode 100644 index 000000000..41f529264 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/config.yml @@ -0,0 +1,3 @@ +--- +modules: + python_requires: ">=3.6" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml index 01bf509b4..588af81d2 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tasks/cli.yaml @@ -8,13 +8,15 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" vars: ansible_connection: ansible.netcommon.network_cli + ansible_command_timeout: 100 with_items: "{{ test_items }}" loop_control: loop_var: test_case_to_run diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml index b86f3d843..6b08c8d17 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acl_interfaces/tests/cli/_remove_config.yaml @@ -1,27 +1,45 @@ --- -- name: Remove/default resources +- name: Remove/Default Resources vars: lines: - "default interface GigabitEthernet0/0/0/0\ndefault interface GigabitEthernet0/0/0/1\nno ipv4 access-list acl_1\nno ipv4 access-list acl_2\nno ipv6 access-list\ + "default interface GigabitEthernet0/0/0/0\ndefault interface GigabitEthernet0/0/0/1\n\ + no ipv4 access-list acl_1\nno ipv4 access-list acl_2\nno ipv6 access-list\ \ acl6_1\nno ipv6 access-list acl6_2\nno ipv6 access-list acl6_3\n" ansible.netcommon.cli_config: config: "{{ lines }}" -- name: Initialize interfaces - loop: - - interface GigabitEthernet0/0/0/0 - - interface GigabitEthernet0/0/0/1 - cisco.iosxr.iosxr_config: - lines: shutdown - parents: "{{ item }}" +- name: Delete all acls from the device + cisco.iosxr.iosxr_acls: + state: deleted - name: Remove unwanted interfaces from configuration loop: + - 0/0/0/0 + - 0/0/0/1 - 0/0/0/2 - - 0/0/0/3 + - 0/0/0/4.1 - 0/0/0/4 - - 0/0/0/5 + - 0/0/0/8 + - 0/0/0/9 ignore_errors: true cisco.iosxr.iosxr_config: lines: - no interface GigabitEthernet{{ item }} + +- name: Remove unwanted interfaces from configuration + loop: + - 777 + - 888 + - 999 + ignore_errors: true + cisco.iosxr.iosxr_config: + lines: + - no interface loopback{{ item }} + +- name: Initialize interfaces + loop: + - interface GigabitEthernet0/0/0/0 + - interface GigabitEthernet0/0/0/1 + cisco.iosxr.iosxr_config: + lines: shutdown + parents: "{{ item }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acls/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acls/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acls/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_acls/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/cli.yaml index 59a889b45..507142664 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/netconf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/netconf.yaml index 8ff2ae685..a868698e9 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/netconf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tasks/netconf.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test cases (connection=ansible.netcommon.netconf) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-login.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-login.yaml index 6a15c6b6e..258640c0d 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-login.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-login.yaml @@ -1,8 +1,4 @@ --- -- name: Pause for 1 min - ansible.builtin.pause: - minutes: 1 - - name: Setup - remove login cisco.iosxr.iosxr_banner: banner: login diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml index 3117ad794..7b8f5b479 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-motd.yaml @@ -1,8 +1,4 @@ --- -- name: Pause for 1 min - ansible.builtin.pause: - minutes: 1 - - name: Setup - remove MOTD cisco.iosxr.iosxr_banner: banner: motd diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml index ce30de3f8..d785870f9 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/cli/basic-no-login.yaml @@ -1,8 +1,4 @@ --- -- name: Pause for 1 min - ansible.builtin.pause: - minutes: 1 - - name: Setup cisco.iosxr.iosxr_banner: banner: login diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-login.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-login.yaml index f1262c45a..3a3b647a3 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-login.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-login.yaml @@ -1,8 +1,4 @@ --- -- name: Sleep for 30 seconds and continue with play - ansible.builtin.wait_for: - timeout: 30 - - name: Setup - remove login cisco.iosxr.iosxr_banner: banner: login diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml index 6fe84deaf..02dc5b972 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-motd.yaml @@ -1,8 +1,4 @@ --- -- name: Sleep for 30 seconds and continue with play - ansible.builtin.wait_for: - timeout: 30 - - name: Setup - remove MOTD cisco.iosxr.iosxr_banner: banner: motd diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml index 9c2d06ed6..9379c1cf1 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_banner/tests/netconf/basic-no-login.yaml @@ -1,8 +1,4 @@ --- -- name: Sleep for 30 seconds and continue with play - ansible.builtin.wait_for: - timeout: 30 - - name: Setup cisco.iosxr.iosxr_banner: banner: login diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/defaults/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/defaults/main.yaml deleted file mode 100644 index 9ef5ba516..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -testcase: "*" -test_items: [] diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/meta/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/meta/main.yaml deleted file mode 100644 index be631e5d8..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/meta/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -dependencies: - - prepare_iosxr_tests diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tests/cli/basic.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tests/cli/basic.yaml deleted file mode 100644 index 608a4400e..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tests/cli/basic.yaml +++ /dev/null @@ -1,239 +0,0 @@ ---- -- ansible.builtin.debug: msg="START iosxr cli/iosxr_bgp.yaml on connection={{ ansible_connection }}" - -- name: Check ios-xr version - register: facts - cisco.iosxr.iosxr_facts: - gather_subset: default - -- block: - - name: Clear existing BGP configuration - ignore_errors: true - cisco.iosxr.iosxr_bgp: - operation: delete - - - name: Configure BGP with as 64496 and a router-id - register: result - cisco.iosxr.iosxr_bgp: &id001 - operation: merge - config: - bgp_as: 64496 - router_id: 192.0.2.2 - - - ansible.builtin.assert: - that: - - result.changed == true - - "'router bgp 64496' in result.commands" - - "'bgp router-id 192.0.2.2' in result.commands" - - - name: Configure BGP with as 64496 and a router-id (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id001 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Configure BGP neighbors - register: result - cisco.iosxr.iosxr_bgp: &id002 - operation: merge - config: - bgp_as: 64496 - neighbors: - - neighbor: 192.0.2.10 - remote_as: 64496 - description: IBGP_NBR_1 - advertisement_interval: 120 - timers: - keepalive: 300 - holdtime: 360 - - - neighbor: 192.0.2.15 - remote_as: 64496 - description: IBGP_NBR_2 - tcp_mss: 1500 - - - ansible.builtin.assert: - that: - - result.changed == true - - "'router bgp 64496' in result.commands" - - "'neighbor 192.0.2.10' in result.commands" - - "'remote-as 64496' in result.commands" - - "'description IBGP_NBR_1' in result.commands" - - "'timers 300 360' in result.commands" - - "'advertisement-interval 120' in result.commands" - - "'neighbor 192.0.2.15' in result.commands" - - "'remote-as 64496' in result.commands" - - "'description IBGP_NBR_2' in result.commands" - - "'tcp mss 1500' in result.commands" - - - name: Configure BGP neighbors (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id002 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Configure BGP neighbors with operation replace - register: result - cisco.iosxr.iosxr_bgp: &id003 - operation: replace - config: - bgp_as: 64496 - neighbors: - - neighbor: 192.0.2.15 - remote_as: 64496 - description: IBGP_NBR_2 - tcp_mss: 1500 - - - neighbor: 203.0.113.10 - remote_as: 64511 - description: EBGP_NBR_1 - - - ansible.builtin.assert: - that: - - result.changed == true - - "'neighbor 203.0.113.10' in result.commands" - - "'remote-as 64511' in result.commands" - - "'description EBGP_NBR_1' in result.commands" - - "'no neighbor 192.0.2.10' in result.commands" - - - name: Configure BGP neighbors with operation replace (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id003 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Create route-policy as prerequisite for BGP configuration - register: result - cisco.iosxr.iosxr_config: - lines: - - no route-policy RMAP_1 - - route-policy RMAP_1 - - exit - - - name: Configure networks under address family - register: result - cisco.iosxr.iosxr_bgp: &id004 - operation: merge - config: - bgp_as: 64496 - address_family: - - afi: ipv4 - networks: - - prefix: 198.51.100.48 - masklen: 28 - route_map: RMAP_1 - - - prefix: 192.0.2.64 - masklen: 27 - - - prefix: 203.0.113.160 - masklen: 27 - - - afi: ipv4 - safi: multicast - networks: - - prefix: 198.51.100.64 - masklen: 28 - - - ansible.builtin.assert: - that: - - result.changed == true - - "'router bgp 64496' in result.commands" - - "'address-family ipv4 unicast' in result.commands" - - "'network 198.51.100.48/28 route-policy RMAP_1' in result.commands" - - "'network 192.0.2.64/27' in result.commands" - - "'network 203.0.113.160/27' in result.commands" - - "'address-family ipv4 multicast' in result.commands" - - "'network 198.51.100.64/28' in result.commands" - - - name: Configure networks under address family (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id004 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Configure networks under address family with operation replace - register: result - cisco.iosxr.iosxr_bgp: &id005 - operation: replace - config: - bgp_as: 64496 - address_family: - - afi: ipv4 - safi: unicast - networks: - - prefix: 198.51.100.80 - masklen: 28 - - - prefix: 192.0.2.64 - masklen: 27 - - - prefix: 203.0.113.192 - masklen: 27 - - - afi: ipv4 - safi: multicast - networks: - - prefix: 198.51.100.64 - masklen: 28 - - - ansible.builtin.assert: - that: - - result.changed == true - - '"router bgp 64496" in result.commands' - - '"address-family ipv4 unicast" in result.commands' - - '"network 198.51.100.80/28" in result.commands' - - '"network 203.0.113.192/27" in result.commands' - - '"no network 198.51.100.48/28" in result.commands' - - '"no network 203.0.113.160/27" in result.commands' - - - name: Configure networks under address family with operation replace (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id005 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Override all the existing BGP configuration - register: result - cisco.iosxr.iosxr_bgp: - operation: override - config: - bgp_as: 64497 - router_id: 192.0.2.10 - log_neighbor_changes: true - - - ansible.builtin.assert: - that: - - result.changed == true - - "'router bgp 64497' in result.commands" - - "'bgp router-id 192.0.2.10' in result.commands" - - "'bgp log neighbor changes detail' in result.commands" - - - name: Teardown - register: result - cisco.iosxr.iosxr_bgp: &id006 - operation: delete - - - ansible.builtin.assert: - that: - - result.changed == true - - "'no router bgp 64497' in result.commands" - - - name: Teardown again (idempotent) - register: result - cisco.iosxr.iosxr_bgp: *id006 - - ansible.builtin.assert: - that: - - result.changed == false - - - name: Delete route-policy configures as prerequisite for BGP configuration (teardown) - cisco.iosxr.iosxr_config: - lines: no route-policy RMAP_1 - when: facts['ansible_facts']['ansible_net_version'].split('[')[0] == '6.1.3' - -- ansible.builtin.debug: msg="END iosxr cli/iosxr_bgp.yaml on connection={{ ansible_connection }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml index a1b57ab45..86ca0d9cb 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_address_family/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml index 1b019a5ab..39471d59f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) vars: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml index c164070b8..eb9c2a173 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/_populate_config.yaml @@ -10,6 +10,8 @@ - "default-metric 4" - "socket receive-buffer-size 514" - "socket send-buffer-size 4098" + - "neighbor-group test_ng" + - "session-group test_sg" - "neighbor 192.0.2.11" - "cluster-id 3" - "remote-as 65537" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml index b4f981808..0ab60252e 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/tests/common/replaced.yaml @@ -24,6 +24,16 @@ neighbors: - neighbor: 192.0.2.13 remote_as: 65538 + use: + neighbor_group: test_ng + session_group: test_sg + password: + inheritance_disable: true + local_as: + value: 65539 + no_prepend: + replace_as: + set: true bfd: fast_detect: set: true diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/vars/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/vars/main.yaml index ef656a41b..274e28948 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/vars/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_global/vars/main.yaml @@ -59,6 +59,10 @@ replaced: - bfd minimum-interval 20 - bfd multiplier 6 - remote-as 65538 + - use neighbor-group test_ng + - use session-group test_sg + - local-as 65539 no-prepend replace-as + - password inheritance-disable after: as_number: "65536" default_metric: 5 @@ -74,11 +78,22 @@ replaced: neighbors: - neighbor_address: "192.0.2.13" remote_as: 65538 + use: + neighbor_group: test_ng + session_group: test_sg + password: + inheritance_disable: true + local_as: + value: 65539 + no_prepend: + replace_as: + set: true bfd: fast_detect: set: true multiplier: 6 minimum_interval: 20 + rendered: commands: - router bgp 65536 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml index 1b019a5ab..39471d59f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_neighbor_address_family/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) vars: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/defaults/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/defaults/main.yaml new file mode 100644 index 000000000..871ea460c --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +testcase: "[^_].*" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/meta/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/meta/main.yaml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/meta/main.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tasks/cli.yaml index 29e7f60cd..39471d59f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tasks/cli.yaml @@ -1,19 +1,22 @@ --- - name: Collect all CLI test cases ansible.builtin.find: - paths: "{{ role_path }}/tests/cli" + paths: "{{ role_path }}/tests/common" patterns: "{{ testcase }}.yaml" use_regex: true register: test_cases delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) - ansible.builtin.include_tasks: "{{ test_case_to_run }}" vars: ansible_connection: ansible.netcommon.network_cli + ansible.builtin.include_tasks: "{{ test_case_to_run }}" with_items: "{{ test_items }}" loop_control: loop_var: test_case_to_run + tags: + - network_cli diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tasks/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tasks/main.yaml index 4b7d599c6..f75f2f031 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp/tasks/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tasks/main.yaml @@ -2,4 +2,4 @@ - name: Include the CLI tasks ansible.builtin.include_tasks: cli.yaml tags: - - network_cli + - cli diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_parsed.cfg b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_parsed.cfg new file mode 100644 index 000000000..2523fdf31 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_parsed.cfg @@ -0,0 +1,33 @@ +router bgp 65536 + neighbor-group neighbor-group1 + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group neighbor-group2 + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + tcp mss inheritance-disable + local-as 6 + cluster-id 1 + dmz-link-bandwidth + description neighbor-group2 + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + ! +! diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_populate_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_populate_config.yaml new file mode 100644 index 000000000..82013c204 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_populate_config.yaml @@ -0,0 +1,34 @@ +--- +- name: "Setup" + cisco.iosxr.iosxr_config: + lines: + - "neighbor-group neighbor-group1" + - " advertisement-interval 10" + - " bfd fast-detect strict-mode" + - " internal-vpn-client" + - " precedence critical" + - " address-family ipv4 unicast" + - " advertise local-labeled-route" + - "neighbor-group neighbor-group2" + - " dmz-link-bandwidth" + - " description neighbor-group2" + - " cluster-id 1" + - " ebgp-multihop 255" + - " egress-engineering" + - " internal-vpn-client" + - " ignore-connected-check" + - " local-as 6" + - " local address inheritance-disable" + - " precedence flash" + - " receive-buffer-size 512" + - " send-buffer-size 4096" + - " session-open-mode both" + - " tcp mss inheritance-disable" + - " update-source Loopback919" + - " ttl-security" + - " graceful-maintenance" + - " graceful-maintenance as-prepends 0" + parents: "router bgp 65536" + + vars: + ansible_connection: ansible.netcommon.network_cli diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_remove_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_remove_config.yaml new file mode 100644 index 000000000..812cd1bd4 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/_remove_config.yaml @@ -0,0 +1,8 @@ +--- +- name: Remove pre-existing BGP configurations + cisco.iosxr.iosxr_config: + lines: + - no router bgp 65536 + ignore_errors: true + vars: + ansible_connection: ansible.netcommon.network_cli diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/deleted.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/deleted.yaml new file mode 100644 index 000000000..0a600d8d9 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/deleted.yaml @@ -0,0 +1,33 @@ +--- +- ansible.builtin.debug: + msg: Start iosxr_bgp_templates deleted integration tests connection={{ ansible_connection}} + +- ansible.builtin.include_tasks: _remove_config.yaml + +- ansible.builtin.include_tasks: _populate_config.yaml + +- block: + - name: Delete given bgp_nbr_address_family configuration + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: &deleted + config: + state: deleted + + - ansible.builtin.assert: + that: + - result.commands|length == 3 + - result.changed == true + - "'no router bgp 65536' not in result.commands" + - result.after == deleted.after + + - name: Idempotency check + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: *deleted + - ansible.builtin.assert: + that: + - result.commands|length == 0 + - result.changed == false + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/empty_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/empty_config.yaml new file mode 100644 index 000000000..4af884189 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/empty_config.yaml @@ -0,0 +1,50 @@ +--- +- ansible.builtin.debug: + msg: START iosxr_bgp_templates empty_config integration tests on connection={{ ansible_connection }} + +- name: Merged with empty configuration should give appropriate error message + register: result + ignore_errors: true + cisco.iosxr.iosxr_bgp_templates: + config: + state: merged + +- ansible.builtin.assert: + that: + - result.msg == 'value of config parameter must not be empty for state merged' + +- name: Replaced with empty configuration should give appropriate error message + register: result + ignore_errors: true + cisco.iosxr.iosxr_bgp_templates: + config: + state: replaced + +- ansible.builtin.assert: + that: + - result.msg == 'value of config parameter must not be empty for state replaced' + +- name: Rendered with empty configuration should give appropriate error message + register: result + ignore_errors: true + cisco.iosxr.iosxr_bgp_templates: + config: + state: rendered + +- ansible.builtin.assert: + that: + - result.msg == 'value of config parameter must not be empty for state rendered' + +- name: Parsed with empty configuration should give appropriate error message + register: result + ignore_errors: true + cisco.iosxr.iosxr_bgp_templates: + running_config: + state: parsed + +- ansible.builtin.assert: + that: + - result.msg == 'value of running_config parameter must not be empty for state parsed' + +- ansible.builtin.debug: + msg: END iosxr_bgp_templates empty_config integration tests on connection={{ ansible_connection }} diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/gathered.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/gathered.yaml new file mode 100644 index 000000000..2199c1446 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/gathered.yaml @@ -0,0 +1,22 @@ +--- +- ansible.builtin.debug: + msg: START iosxr_bgp_templates gathered integration tests on connection={{ ansible_connection }} + +- ansible.builtin.include_tasks: _remove_config.yaml + +- ansible.builtin.include_tasks: _populate_config.yaml + +- block: + - name: Gathered the provided configuration with the existing running configuration + register: result + cisco.iosxr.iosxr_bgp_templates: + config: + state: gathered + + - name: Assert + ansible.builtin.assert: + that: + - "{{ merged['after']['neighbor'] | symmetric_difference(result['gathered']['neighbor']) |length == 0 }}" + - merged['after']['as_number'] == result['gathered']['as_number'] + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/merged.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/merged.yaml new file mode 100644 index 000000000..6a31c1095 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/merged.yaml @@ -0,0 +1,79 @@ +--- +- ansible.builtin.debug: + msg: Start iosxr_bgp_templates merged integration tests connection={{ ansible_connection}} + +- ansible.builtin.include_tasks: _remove_config.yaml + +- block: + - name: Merge the provided configuration with the existing running configuration + cisco.iosxr.iosxr_bgp_templates: &id001 + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: "1" + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + register: result + + - name: Assert that correct set of commands were generated + ansible.builtin.assert: + that: + - "{{ merged['commands'] | symmetric_difference(result['commands']) |length == 0 }}" + + - name: Assert that after dicts were correctly generated + ansible.builtin.assert: + that: + - merged['after'] == result['after'] + + - name: Merge the provided configuration with the existing running configuration (idempotent) + cisco.iosxr.iosxr_bgp_templates: *id001 + register: result + + - name: Assert that the previous task was idempotent + ansible.builtin.assert: + that: + - result['changed'] == false + - result.commands|length == 0 + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/overridden.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/overridden.yaml new file mode 100644 index 000000000..640bcc124 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/overridden.yaml @@ -0,0 +1,44 @@ +--- +- ansible.builtin.include_tasks: _remove_config.yaml + +- ansible.builtin.include_tasks: _populate_config.yaml + +- block: + - name: Override given bgp_address_family configuration + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: &overridden + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + disable: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + bfd: + fast_detect: + strict_mode: true + name: neighbor-group1 + precedence: flash + state: overridden + + - ansible.builtin.assert: + that: + - result.commands|length == 9 + - result.changed == true + - "'no router bgp 65536' not in result.commands" + - overridden['commands'] == result['commands'] + + - name: Idempotency check + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: *overridden + - ansible.builtin.assert: + that: + - result.commands|length == 0 + - result.changed == false + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/parsed.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/parsed.yaml new file mode 100644 index 000000000..58e34c939 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/parsed.yaml @@ -0,0 +1,14 @@ +--- +- ansible.builtin.debug: + msg: START iosxr_bgp_templates parsed integration tests on connection={{ ansible_connection }} + +- name: Parse externally provided BGP configuration + register: result + cisco.iosxr.iosxr_bgp_templates: + running_config: "{{ lookup('file', './_parsed.cfg') }}" + state: parsed + +- name: Assert that configuration was correctly parsed + ansible.builtin.assert: + that: + - "{{ parsed == result['parsed']}}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/rendered.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/rendered.yaml new file mode 100644 index 000000000..6843a14e2 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/rendered.yaml @@ -0,0 +1,62 @@ +--- +- ansible.builtin.debug: + msg: START iosxr_bgp_template rendered integration tests on connection={{ ansible_connection }} + +- ansible.builtin.include_tasks: _remove_config.yaml + +- name: Render platform specific configuration lines with state rendered (without connecting to the device) + cisco.iosxr.iosxr_bgp_templates: + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: "1" + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + state: rendered + register: result + +- name: Assert that correct set of commands were rendered + ansible.builtin.assert: + that: + - merged['commands'] == result['rendered'] diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/replaced.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/replaced.yaml new file mode 100644 index 000000000..dde597889 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/tests/common/replaced.yaml @@ -0,0 +1,50 @@ +--- +- ansible.builtin.include_tasks: _remove_config.yaml + +- ansible.builtin.include_tasks: _populate_config.yaml + +- block: + - name: Replaced given bgp_templates configuration + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: &replaced + config: + as_number: 65536 + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 12 + name: neighbor-group1 + precedence: flash + - cluster_id: "2" + description: replace neighbor-group2 + ebgp_multihop: + value: 254 + graceful_maintenance: + as_prepends: + value: 2 + set: true + update_source: Loopback917 + name: neighbor-group2 + state: replaced + + - ansible.builtin.assert: + that: + - result.changed == true + - "'no router bgp 65536' not in result.commands" + - replaced['commands'] == result['commands'] + + - name: Idempotency check + become: true + register: result + cisco.iosxr.iosxr_bgp_templates: *replaced + - ansible.builtin.assert: + that: + - result.commands|length == 0 + - result.changed == false + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/vars/main.yml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/vars/main.yml new file mode 100644 index 000000000..266f172fd --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_bgp_templates/vars/main.yml @@ -0,0 +1,170 @@ +--- +merged: + commands: + - router bgp 65536 + - neighbor-group neighbor-group1 + - advertisement-interval 10 + - bfd fast-detect strict-mode + - internal-vpn-client + - precedence critical + - address-family ipv4 unicast + - advertise local-labeled-route + - neighbor-group neighbor-group2 + - dmz-link-bandwidth + - description neighbor-group2 + - cluster-id 1 + - ebgp-multihop 255 + - egress-engineering + - internal-vpn-client + - ignore-connected-check + - local-as 6 + - local address inheritance-disable + - precedence flash + - receive-buffer-size 512 + - send-buffer-size 4096 + - session-open-mode both + - tcp mss inheritance-disable + - update-source Loopback919 + - ttl-security + - graceful-maintenance + - graceful-maintenance as-prepends 0 + + after: + as_number: "65536" + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: "1" + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 + +deleted: + after: + as_number: "65536" + +overridden: + commands: + - router bgp 65536 + - no neighbor-group neighbor-group2 + - neighbor-group neighbor-group1 + - no internal-vpn-client + - advertisement-interval 12 + - precedence flash + - address-family ipv4 unicast + - no advertise local-labeled-route + - advertise local-labeled-route disable + +replaced: + commands: + - router bgp 65536 + - neighbor-group neighbor-group1 + - no bfd fast-detect strict-mode + - no internal-vpn-client + - advertisement-interval 12 + - precedence flash + - neighbor-group neighbor-group2 + - no dmz-link-bandwidth + - no egress-engineering + - no internal-vpn-client + - no ignore-connected-check + - no local-as 6 + - no local address inheritance-disable + - no precedence flash + - no receive-buffer-size 512 + - no send-buffer-size 4096 + - no session-open-mode both + - no tcp mss inheritance-disable + - no ttl-security + - description replace neighbor-group2 + - cluster-id 2 + - ebgp-multihop 254 + - update-source Loopback917 + - graceful-maintenance as-prepends 2 + +parsed: + as_number: "65536" + neighbor: + - address_family: + - advertise: + local_labeled_route: + set: true + afi: ipv4 + safi: unicast + advertisement_interval: 10 + bfd: + fast_detect: + strict_mode: true + internal_vpn_client: true + name: neighbor-group1 + precedence: critical + - cluster_id: "1" + description: neighbor-group2 + dmz_link_bandwidth: + set: true + ebgp_multihop: + value: 255 + egress_engineering: + set: true + graceful_maintenance: + as_prepends: + value: 0 + set: true + idle_watch_time: 30 + ignore_connected_check: + set: true + internal_vpn_client: true + local: + address: + inheritance_disable: true + local_as: + value: 6 + name: neighbor-group2 + precedence: flash + receive_buffer_size: 512 + send_buffer_size: 4096 + session_open_mode: both + tcp: + mss: + inheritance_disable: true + ttl_security: + set: true + update_source: Loopback919 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tasks/cli.yaml index a1b57ab45..86ca0d9cb 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tests/common/commit_conf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tests/common/commit_conf.yaml index 05ddfd8e1..cedbb5075 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tests/common/commit_conf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_cliconf/tests/common/commit_conf.yaml @@ -2,32 +2,45 @@ - ansible.builtin.debug: msg: START iosxr_cliconf integration tests on connection={{ ansible_connection }} -- name: Apply interface description - register: result - cisco.iosxr.iosxr_interfaces: - state: merged - config: - - name: GigabitEthernet0/0/0/2 - description: TestCommitConfirmed +- block: + - name: Remove interfaces from configuration before actual testing + ignore_errors: true + cisco.iosxr.iosxr_config: + lines: + - no interface loopback 777 -- name: Do commit confirmed - cisco.iosxr.iosxr_command: - commands: - - commit confirmed - when: result["changed"] == true + - name: Apply interface description + register: result + cisco.iosxr.iosxr_interfaces: + state: merged + config: + - name: loopback 777 + description: TestCommitConfirmed -- name: Sleep for 35 sec. - ansible.builtin.wait_for: - timeout: 35 - when: result["changed"] == true + - name: Do commit confirmed + cisco.iosxr.iosxr_command: + commands: + - commit confirmed + when: result["changed"] == true -- name: Get interface description - register: get_desc - iosxr_command: - commands: - - "show interfaces GigabitEthernet 0/0/0/2 | include Description" - ignore_errors: true + - name: Sleep for 35 sec. + ansible.builtin.wait_for: + timeout: 35 + when: result["changed"] == true -- ansible.builtin.assert: - that: - - "'TestCommitConfirmed' in get_desc.stdout[0]" + - name: Get interface description + register: get_desc + iosxr_command: + commands: + - show running-config interface loopback 777 description + ignore_errors: true + + - ansible.builtin.assert: + that: + - "'TestCommitConfirmed' in get_desc.stdout[0]" + always: + - name: Remove interfaces from configuration before actual testing + ignore_errors: true + cisco.iosxr.iosxr_config: + lines: + - no interface loopback 777 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_command/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_command/tasks/cli.yaml index fd2202fa2..e88cb28a3 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_command/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_command/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli.yaml index 59a889b45..507142664 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli_config.yaml index 0b6332e96..2115b4b15 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/cli_config.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/redirection.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/redirection.yaml index bc4b47e20..cbfe809e5 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/redirection.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tasks/redirection.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items for redirection - ansible.builtin.set_fact: test_items="{{ shortname_test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/templates/basic/interface_config.j2 b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/templates/basic/interface_config.j2 new file mode 100644 index 000000000..a4659a5d0 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/templates/basic/interface_config.j2 @@ -0,0 +1,5 @@ +interface GigabitEthernet 0/0/0/5 +description this is interface0 +mtu 65 +speed 10 +no shutdown diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_block.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_block.yaml new file mode 100644 index 000000000..b5dce6496 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_block.yaml @@ -0,0 +1,33 @@ +--- +- name: Setup + cisco.iosxr.iosxr_config: + commands: + - no interface GigabitEthernet 0/0/0/5 + ignore_errors: true + +- name: "Populate interface configuration with replace block and lines options" + register: result1 + cisco.iosxr.iosxr_config: + lines: "{{ lookup('template', 'basic/interface_config.j2') }}" + replace: block + +- ansible.builtin.assert: + that: + - result1.changed == true + +- name: Setup + cisco.iosxr.iosxr_config: + commands: + - no interface GigabitEthernet 0/0/0/5 + ignore_errors: true + +- name: "Populate interface configuration with replace block and src options" + register: result2 + iosxr_config: + src: basic/interface_config.j2 + replace: block + +- ansible.builtin.assert: + that: + - result2.changed == true + - result1.commands == result2.commands diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_config.yml index 6cd72dbad..6cd72dbad 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_config/tests/cli/replace_config.yml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tasks/cli.yaml index 59a889b45..507142664 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tests/cli/default_facts.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tests/cli/default_facts.yaml index 065f07bf5..1a90c3332 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tests/cli/default_facts.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_facts/tests/cli/default_facts.yaml @@ -11,12 +11,11 @@ - "'default' in result.ansible_facts.ansible_net_gather_subset" - "'config' not in result.ansible_facts.ansible_net_gather_subset" - result.ansible_facts.ansible_net_hostname is defined - - result.ansible_facts.ansible_net_image is defined - result.ansible_facts.ansible_net_model is defined - result.ansible_facts.ansible_net_python_version is defined - - result.ansible_facts.ansible_net_serialnum is defined - result.ansible_facts.ansible_net_system is defined - result.ansible_facts.ansible_net_version is defined + - result.ansible_facts.ansible_net_serialnum is defined - result.ansible_facts.ansible_network_resources == {} - ansible.builtin.debug: msg="END cli/default.yaml on connection={{ ansible_connection }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_hostname/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_hostname/tasks/cli.yaml index a1b57ab45..86ca0d9cb 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_hostname/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_hostname/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml index 1512a4b31..83b07d6ea 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/tests/cli/_remove_config.yaml @@ -11,6 +11,7 @@ - GigabitEthernet 0/0/0/1 - GigabitEthernet 0/0/0/2 - GigabitEthernet 0/0/0/3 + - loopback 777 ignore_errors: true cisco.iosxr.iosxr_config: lines: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/vars/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/vars/main.yaml index c4bb4fdae..fb4cbffa1 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/vars/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_interfaces/vars/main.yaml @@ -5,6 +5,8 @@ merged: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: this is interface0 enabled: true mtu: 65 @@ -31,6 +33,8 @@ merged: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: Configured and Merged by Ansible-Network duplex: half enabled: true @@ -49,6 +53,8 @@ merged: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 commands: - interface GigabitEthernet0/0/0/2 - description Configured and Merged by Ansible-Network @@ -66,6 +72,8 @@ merged: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: Configured and Merged by Ansible-Network duplex: half enabled: true @@ -83,6 +91,8 @@ parsed: - description: test for ansible enabled: false name: Loopback888 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: Configured and Merged by Ansible-Network duplex: half enabled: true @@ -98,6 +108,8 @@ replaced: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: this is interface0 enabled: true mtu: 65 @@ -122,6 +134,8 @@ replaced: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: Configured and Replaced by Ansible-Network enabled: true mtu: 110 @@ -149,6 +163,8 @@ overridden: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: this is interface0 enabled: true mtu: 65 @@ -175,6 +191,8 @@ overridden: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: Configured and Overridden by Ansible-Network duplex: full enabled: false @@ -187,6 +205,8 @@ gathered: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: This interface is Configured and Merged by Ansible-Network duplex: half enabled: true @@ -205,6 +225,8 @@ deleted: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 - description: this is interface0 enabled: true mtu: 65 @@ -229,3 +251,5 @@ deleted: name: Loopback888 - enabled: true name: Loopback999 + - enabled: true + name: MgmtEth0/RP0/CPU0/0 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml index 5b96e4a77..d8205e5ac 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/_remove_config.yaml @@ -1,8 +1,14 @@ --- -- name: Remove configuration - vars: +- name: Remove interfaces from configuration before actual testing + loop: + - GigabitEthernet 0/0/0/0 + - GigabitEthernet 0/0/0/1 + - GigabitEthernet 0/0/0/2 + - GigabitEthernet 0/0/0/3 + - GigabitEthernet 0/0/0/3.900 + - GigabitEthernet 0/0/0/4 + - GigabitEthernet0/0/0/4.1 + ignore_errors: true + cisco.iosxr.iosxr_config: lines: - "interface GigabitEthernet 0/0/0/1\nno l2transport\nno interface GigabitEthernet 0/0/0/2\nno interface GigabitEthernet 0/0/0/3\nno interface GigabitEthernet\ - \ 0/0/0/3.900\nno interface GigabitEthernet 0/0/0/4\n" - ansible.netcommon.cli_config: - config: "{{ lines }}" + - no interface {{ item }} diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml index 3d8b1c7fb..d3a560600 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/deleted.yaml @@ -12,6 +12,10 @@ cisco.iosxr.iosxr_l2_interfaces: &id001 state: deleted + - name: Sleep for 5 seconds and continue with play + ansible.builtin.wait_for: + timeout: 5 + - name: Assert that correct set of commands were generated ansible.builtin.assert: that: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml index 8f3471618..baafd1896 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/overridden.yaml @@ -21,6 +21,10 @@ second_dot1q: 40 state: overridden + - name: Sleep for 5 seconds and continue with play + ansible.builtin.wait_for: + timeout: 5 + - name: Assert that correct set of commands were generated ansible.builtin.assert: that: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml index 82c06b185..3b8ed9aae 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/tests/cli/parsed.yaml @@ -11,4 +11,4 @@ - name: Assert that configuration was correctly parsed ansible.builtin.assert: that: - - "{{ merged['after'] | symmetric_difference(result['parsed']) |length == 0 }}" + - "{{ parsed | symmetric_difference(result['parsed']) |length == 0 }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml index 54c7ef626..e8d60bbe9 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l2_interfaces/vars/main.yaml @@ -1,6 +1,21 @@ --- +parsed: + - name: Loopback888 + - name: MgmtEth0/RP0/CPU0/0 + - l2protocol: + - cpsv: tunnel + l2transport: true + name: GigabitEthernet0/0/0/1 + propagate: true + - name: GigabitEthernet0/0/0/3.900 + encapsulation: + dot1q: 20 + second_dot1q: 40 merged: - before: [] + before: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 commands: - interface GigabitEthernet0/0/0/1 - l2transport l2protocol cpsv tunnel @@ -8,6 +23,9 @@ merged: - interface GigabitEthernet0/0/0/3.900 - encapsulation dot1q 20 second-dot1q 40 after: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - l2protocol: - cpsv: tunnel l2transport: true @@ -20,6 +38,9 @@ merged: replaced: before: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - l2protocol: - cpsv: tunnel l2transport: true @@ -38,6 +59,9 @@ replaced: - no l2transport - l2transport l2protocol cpsv drop after: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - l2protocol: - cpsv: drop l2transport: true @@ -53,6 +77,9 @@ replaced: overridden: before: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - l2protocol: - cpsv: tunnel l2transport: true @@ -72,6 +99,9 @@ overridden: - interface GigabitEthernet0/0/0/3.900 - encapsulation dot1q 20 second-dot1q 40 after: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - name: GigabitEthernet0/0/0/3.900 encapsulation: dot1q: 20 @@ -82,6 +112,9 @@ overridden: name: GigabitEthernet0/0/0/4 deleted: before: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - l2protocol: - cpsv: tunnel l2transport: true @@ -103,5 +136,7 @@ deleted: - interface GigabitEthernet0/0/0/4 - no l2transport after: + - name: Loopback888 + - name: Loopback999 + - name: MgmtEth0/RP0/CPU0/0 - name: GigabitEthernet0/0/0/3.900 - - name: GigabitEthernet0/0/0/4 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml index 3813ccce6..265242981 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/_remove_config.yaml @@ -1,6 +1,9 @@ --- -- name: Remove configuration - vars: - lines: "interface GigabitEthernet 0/0/0/0\nno ipv4 address\nno ipv6 address\ninterface GigabitEthernet 0/0/0/1\nno ipv4 address\nno ipv6 address\n" - ansible.netcommon.cli_config: - config: "{{ lines }}" +- name: Remove interfaces from configuration before actual testing + loop: + - GigabitEthernet 0/0/0/0 + - GigabitEthernet 0/0/0/1 + ignore_errors: true + cisco.iosxr.iosxr_config: + lines: + - no interface {{ item }} diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml index b8562c85e..ab89448e7 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/deleted.yaml @@ -4,6 +4,11 @@ - ansible.builtin.include_tasks: _remove_config.yaml +- name: Gather management_interface facts using gathered state + register: management_interface + cisco.iosxr.iosxr_l3_interfaces: + state: gathered + - ansible.builtin.include_tasks: _populate_config.yaml - block: @@ -16,6 +21,18 @@ - name: GigabitEthernet0/0/0/1 state: deleted + - name: Sleep for 5 seconds and continue with play + ansible.builtin.wait_for: + timeout: 5 + + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_before: "{{ deleted['before'] | ansible.builtin.union(management_interface['gathered']) }}" + + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_after: "{{ deleted['after'] | ansible.builtin.union(management_interface['gathered']) }}" + - name: Assert that correct set of commands were generated ansible.builtin.assert: that: @@ -24,12 +41,12 @@ - name: Assert that before dicts are correctly generated ansible.builtin.assert: that: - - "{{ deleted['before'] | symmetric_difference(result['before']) | length == 0 }}" + - "{{ combined_before | symmetric_difference(result['before']) | length == 0 }}" - name: Assert that after dict is correctly generated ansible.builtin.assert: that: - - "{{ deleted['after'] | symmetric_difference(result['after']) | length == 0 }}" + - "{{ combined_after | symmetric_difference(result['after']) | length == 0 }}" - name: Delete attributes of all configured interfaces (idempotent) register: result diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml index abd09c021..59620f209 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/gathered.yaml @@ -5,6 +5,11 @@ - ansible.builtin.include_tasks: _remove_config.yaml - block: + - name: Gather management_interface facts using gathered state + register: management_interface + cisco.iosxr.iosxr_l3_interfaces: + state: gathered + - name: Gather the provided configuration with the existing running configuration register: result cisco.iosxr.iosxr_l3_interfaces: @@ -23,6 +28,10 @@ secondary: true state: merged + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_after: "{{ merged['after'] | ansible.builtin.union(management_interface['gathered']) }}" + - name: Gather layer 3 interfaces facts using gathered state register: result cisco.iosxr.iosxr_l3_interfaces: @@ -30,6 +39,6 @@ - name: Assert that facts were correctly generated ansible.builtin.assert: - that: "{{ merged['after'] | symmetric_difference(result['gathered']) |length == 0 }}" + that: "{{ combined_after | symmetric_difference(result['gathered']) |length == 0 }}" always: - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml index 6660b9afc..7b32faf7c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/merged.yaml @@ -5,6 +5,11 @@ - ansible.builtin.include_tasks: _remove_config.yaml - block: + - name: Gather management_interface facts using gathered state + register: management_interface + cisco.iosxr.iosxr_l3_interfaces: + state: gathered + - name: Merge provided configuration with device configuration register: result cisco.iosxr.iosxr_l3_interfaces: &id001 @@ -23,6 +28,14 @@ secondary: true state: merged + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_before: "{{ merged['before'] | ansible.builtin.union(management_interface['gathered']) }}" + + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_after: "{{ merged['after'] | ansible.builtin.union(management_interface['gathered']) }}" + - name: Assert that correct set of commands were generated ansible.builtin.assert: that: @@ -31,12 +44,12 @@ - name: Assert that before dicts are correctly generated ansible.builtin.assert: that: - - "{{ merged['before'] | symmetric_difference(result['before']) | length == 0 }}" + - "{{ combined_before | symmetric_difference(result['before']) | length == 0 }}" - name: Assert that after dict is correctly generated ansible.builtin.assert: that: - - "{{ merged['after'] | symmetric_difference(result['after']) | length == 0 }}" + - "{{ combined_after | symmetric_difference(result['after']) | length == 0 }}" - name: Merge provided configuration with device configuration (idempotent) register: result diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml index ded36a390..6ff8c649f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/overridden.yaml @@ -4,20 +4,32 @@ - ansible.builtin.include_tasks: _remove_config.yaml +- name: Gather management_interface facts using gathered state + register: management_interface + cisco.iosxr.iosxr_l3_interfaces: + state: gathered + - ansible.builtin.include_tasks: _populate_config.yaml - block: + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_before: "{{ overridden['before'] | ansible.builtin.union(management_interface['gathered']) }}" + + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_after: "{{ overridden['after'] | ansible.builtin.union(management_interface['gathered']) }}" + - name: Override device configuration of all interfaces with provided configuration register: result cisco.iosxr.iosxr_l3_interfaces: &id001 - config: - - name: GigabitEthernet0/0/0/1 - ipv4: - - address: 198.51.102.1/24 - ipv6: - - address: 2001:db8:1::/64 + config: "{{ combined_after }}" state: overridden + - name: Sleep for 5 seconds and continue with play + ansible.builtin.wait_for: + timeout: 5 + - name: Assert that correct set of commands were generated ansible.builtin.assert: that: @@ -26,12 +38,12 @@ - name: Assert that before dicts are correctly generated ansible.builtin.assert: that: - - "{{ overridden['before'] | symmetric_difference(result['before']) | length == 0 }}" + - "{{ combined_before | symmetric_difference(result['before']) | length == 0 }}" - name: Assert that after dict is correctly generated ansible.builtin.assert: that: - - "{{ overridden['after'] | symmetric_difference(result['after']) | length == 0 }}" + - "{{ combined_after | symmetric_difference(result['after']) | length == 0 }}" - name: Override device configuration of all interfaces with provided configuration (idempotent) register: result diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml index 10a77a3c8..ea4ef13cd 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/tests/cli/replaced.yaml @@ -4,19 +4,26 @@ - ansible.builtin.include_tasks: _remove_config.yaml +- name: Gather management_interface facts using gathered state + register: management_interface + cisco.iosxr.iosxr_l3_interfaces: + state: gathered + - ansible.builtin.include_tasks: _populate_config.yaml - block: + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_before: "{{ replaced['before'] | ansible.builtin.union(management_interface['gathered']) }}" + + - name: Combine all the dictionaries based on match_keys + ansible.builtin.set_fact: + combined_after: "{{ replaced['after'] | ansible.builtin.union(management_interface['gathered']) }}" + - name: Replaces device configuration of listed interfaces with provided configuration register: result cisco.iosxr.iosxr_l3_interfaces: &id001 - config: - - name: GigabitEthernet0/0/0/0 - ipv4: - - address: 203.0.113.27/24 - - - address: 203.0.114.1/24 - secondary: true + config: "{{ combined_after }}" state: replaced - name: Assert that correct set of commands were generated @@ -27,12 +34,12 @@ - name: Assert that before dicts are correctly generated ansible.builtin.assert: that: - - "{{ replaced['before'] | symmetric_difference(result['before']) | length == 0 }}" + - "{{ combined_before | symmetric_difference(result['before']) | length == 0 }}" - name: Assert that after dict is correctly generated ansible.builtin.assert: that: - - "{{ replaced['after'] | symmetric_difference(result['after']) | length == 0 }}" + - "{{ combined_after | symmetric_difference(result['after']) | length == 0 }}" - name: Replaces device configuration of listed interfaces with provided configuration (idempotent) register: result diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/vars/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/vars/main.yaml index c144276d3..593dc89aa 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/vars/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_l3_interfaces/vars/main.yaml @@ -14,11 +14,11 @@ merged: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 198.51.100.1 255.255.255.0 + - address: 198.51.100.1/24 name: GigabitEthernet0/0/0/0 - ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true ipv6: - address: 2001:db8:0:3::/64 @@ -28,13 +28,13 @@ replaced: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 198.51.100.1 255.255.255.0 + - address: 198.51.100.1/24 ipv6: - address: 2001:db8::/32 name: GigabitEthernet0/0/0/0 - ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true name: GigabitEthernet0/0/0/1 commands: @@ -46,13 +46,13 @@ replaced: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 203.0.113.27 255.255.255.0 - - address: 203.0.114.1 255.255.255.0 + - address: 203.0.113.27/24 + - address: 203.0.114.1/24 secondary: true name: GigabitEthernet0/0/0/0 - ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true name: GigabitEthernet0/0/0/1 overridden: @@ -60,13 +60,13 @@ overridden: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 198.51.100.1 255.255.255.0 + - address: 198.51.100.1/24 ipv6: - address: 2001:db8::/32 name: GigabitEthernet0/0/0/0 - ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true name: GigabitEthernet0/0/0/1 commands: @@ -81,7 +81,7 @@ overridden: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 198.51.102.1 255.255.255.0 + - address: 198.51.102.1/24 ipv6: - address: 2001:db8:1::/64 name: GigabitEthernet0/0/0/1 @@ -96,30 +96,33 @@ rendered: parsed: after: - name: Loopback888 + - ipv4: + - address: 10.8.38.70/24 + name: MgmtEth0/RP0/CPU0/0 - ipv6: - address: 2001:db8:0:3::/64 ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true name: GigabitEthernet0/0/0/0 - name: GigabitEthernet0/0/0/1 - ipv4: - - address: 192.0.22.1 255.255.255.0 - - address: 192.0.23.1 255.255.255.0 + - address: 192.0.22.1/24 + - address: 192.0.23.1/24 name: GigabitEthernet0/0/0/3 deleted: before: - name: Loopback888 - name: Loopback999 - ipv4: - - address: 198.51.100.1 255.255.255.0 + - address: 198.51.100.1/24 ipv6: - address: 2001:db8::/32 name: GigabitEthernet0/0/0/0 - ipv4: - - address: 192.0.2.1 255.255.255.0 - - address: 192.0.2.2 255.255.255.0 + - address: 192.0.2.1/24 + - address: 192.0.2.2/24 secondary: true name: GigabitEthernet0/0/0/1 commands: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lacp_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lag_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_global/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_lldp_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/cli.yaml index 8ae46e432..88e4708f8 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/netconf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/netconf.yaml index e5f214d1f..26f9ab49a 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/netconf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging/tasks/netconf.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.netconf) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging_global/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging_global/tasks/cli.yaml index 1b019a5ab..39471d59f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging_global/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_logging_global/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) vars: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_netconf/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_netconf/tasks/cli.yaml index 05e3269d9..3f630e36e 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_netconf/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_netconf/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml index 1b019a5ab..39471d59f 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ntp_global/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) vars: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospf_interfaces/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv2/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml index f2652af6d..b94b49c61 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/tests/cli/deleted.yaml @@ -31,7 +31,7 @@ - name: Assert that the after dicts were correctly generated ansible.builtin.assert: that: - - "{{ deleted['after'] == result['after'] }}" + - "{{ {} == result['after'] }}" - name: Delete a single OSPF process (idempotent) register: result @@ -61,7 +61,7 @@ - name: Assert that the after dicts were correctly generated ansible.builtin.assert: that: - - "{{ deleted['after'] == result['after'] }}" + - "{{ {} == result['after'] }}" - name: Delete all OSPF processes (idempotent) register: result @@ -71,6 +71,6 @@ - name: Assert that the before dicts were correctly generated ansible.builtin.assert: that: - - "{{ deleted['after'] == result['before'] }}" + - "{{ {} == result['before'] }}" always: - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/vars/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/vars/main.yaml index a10380985..fba6695ee 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/vars/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ospfv3/vars/main.yaml @@ -177,30 +177,13 @@ replaced: overridden: commands: - - router ospfv3 10 - - no area 11 default-cost 5 - - no area 11 cost 11 - - no area 22 default-cost 6 - - router ospfv3 30 - - no cost 2 - - no priority 1 - - no default-metric 10 - - no router-id 2.2.2.2 - - no demand-circuit - - no packet-size 577 - - no transmit-delay 2 - - no dead-interval 2 - - no hello-interval 1 - - no retransmit-interval 2 - - no mtu-ignore - - no area 11 default-cost 5 - - no area 22 default-cost 6 + - no router ospfv3 10 + - no router ospfv3 30 - router ospfv3 27 - area 20 default-cost 2 - area 20 cost 2 after: processes: - - process_id: "10" - authentication: disable: true process_id: "26" @@ -211,42 +194,16 @@ overridden: cost: 2 default_cost: 2 process_id: "27" - - process_id: "30" deleted: commands: - - router ospfv3 10 - - no area 11 default-cost 5 - - no area 11 cost 11 - - no area 22 default-cost 6 - - router ospfv3 26 - - no authentication disable - - router ospfv3 27 - - no area 10 hello-interval 2 - - router ospfv3 30 - - no cost 2 - - no priority 1 - - no default-metric 10 - - no router-id 2.2.2.2 - - no demand-circuit - - no packet-size 577 - - no transmit-delay 2 - - no dead-interval 2 - - no hello-interval 1 - - no retransmit-interval 2 - - no mtu-ignore - - no area 11 default-cost 5 - - no area 22 default-cost 6 + - no router ospfv3 26 + - no router ospfv3 27 + - no router ospfv3 30 + - no router ospfv3 10 - after: - processes: - - process_id: "10" - - process_id: "26" - - process_id: "27" - - process_id: "30" round_trip: after: processes: - - process_id: "10" - authentication: disable: true process_id: "26" @@ -257,4 +214,3 @@ round_trip: cost: 2 default_cost: 2 process_id: "27" - - process_id: "30" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ping/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ping/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ping/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_ping/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml index 01bf509b4..6f505600c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_prefix_lists/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/cli.yaml index f0489b91e..e9f2156f5 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/netconf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/netconf.yaml index 7488554f2..e5e2bb27d 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/netconf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_smoke/tasks/netconf.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test cases (connection=netconf) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml index a1b57ab45..86ca0d9cb 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_snmp_server/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/cli.yaml index 01bf509b4..46e4015a6 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/cli.yaml @@ -8,7 +8,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" delegate_to: localhost - name: Run test case (connection=ansible.netcommon.network_cli) @@ -18,3 +19,5 @@ with_items: "{{ test_items }}" loop_control: loop_var: test_case_to_run + tags: + - iosxr_static_routes diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/main.yaml index 4b7d599c6..70cc8fee7 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/main.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tasks/main.yaml @@ -2,4 +2,4 @@ - name: Include the CLI tasks ansible.builtin.include_tasks: cli.yaml tags: - - network_cli + - iosxr_static_routes diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tests/cli/delete_specific.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tests/cli/delete_specific.yaml new file mode 100644 index 000000000..5ba3bc052 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_static_routes/tests/cli/delete_specific.yaml @@ -0,0 +1,34 @@ +--- +- ansible.builtin.debug: + msg: Start iosxr_static_routes deleted integration tests ansible_connection={{ ansible_connection }} + +- ansible.builtin.include_tasks: _remove_config.yaml + +- ansible.builtin.include_tasks: _populate_config.yaml + +- block: + - name: Delete specific static route entry. + register: result + cisco.iosxr.iosxr_static_routes: &id001 + config: + - vrf: DEV_SITE + address_families: + - afi: ipv4 + safi: unicast + routes: + - dest: 192.0.2.48/28 + next_hops: + - forward_router_address: 192.0.2.12 + description: DEV + dest_vrf: test_1 + state: deleted + + - ansible.builtin.assert: + that: + - '"router static" in result.commands' + - '"vrf DEV_SITE" in result.commands' + - '"address-family ipv4 unicast" in result.commands' + - '"no 192.0.2.48/28 vrf test_1 192.0.2.12" in result.commands' + - result.commands|length == 4 + always: + - ansible.builtin.include_tasks: _remove_config.yaml diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/cli.yaml index 8ae46e432..88e4708f8 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/cli.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/netconf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/netconf.yaml index d04b02101..49e51671c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/netconf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tasks/netconf.yaml @@ -7,7 +7,8 @@ delegate_to: localhost - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.netconf) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml index e83cda978..63b094e91 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_list.yaml @@ -3,7 +3,8 @@ msg: START netconf/set_domain_search.yaml on connection={{ ansible_connection }} - name: Setup - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain list ansible.com @@ -14,7 +15,8 @@ match: none - name: Configure domain_search - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -28,7 +30,8 @@ - "'redhat.com' in result.xml[0]" - name: Configure domain_search with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id001 vrf: ansiblevrf @@ -44,15 +47,18 @@ - "'redhat.com' in result.xml[0]" - name: Verify domain_search with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id001 + - ansible.builtin.assert: that: - result.changed == false - name: Delete domain_search with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id002 vrf: ansiblevrf @@ -66,7 +72,8 @@ - "'ansible.com' in result.xml[0]" - name: Verify delete domain_search with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id002 - ansible.builtin.assert: @@ -74,7 +81,8 @@ - result.changed == false - name: Remove one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -86,7 +94,8 @@ - "'redhat.com' in result.xml[0]" - name: Verify remove one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -97,7 +106,8 @@ - result.changed == false - name: Add one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -110,7 +120,8 @@ - "'redhat.com' in result.xml[0]" - name: Verify add one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -122,7 +133,8 @@ - result.changed == false - name: Add and remove one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: @@ -137,7 +149,8 @@ - result.xml|length == 2 - name: Verify add and remove one entry - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: domain_search: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml index b2b9d7b47..0b50df722 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_domain_name.yaml @@ -3,7 +3,8 @@ msg: START netconf/set_domain_name.yaml on connection={{ ansible_connection }} - name: Setup - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain name @@ -11,7 +12,8 @@ match: none - name: Configure domain_name - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id001 domain_name: eng.ansible.com @@ -21,7 +23,8 @@ - result.changed == true - name: Verify domain_name - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id001 - ansible.builtin.assert: @@ -29,7 +32,8 @@ - result.changed == false - name: Configure domain_name - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id002 domain_name: eng.ansible.com @@ -40,7 +44,8 @@ - result.changed == true - name: Verify domain_name - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id002 - ansible.builtin.assert: @@ -48,7 +53,8 @@ - result.changed == false - name: Configure domain_name with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id003 domain_name: eng.ansible.com @@ -59,9 +65,11 @@ - result.changed == true - name: Verify domain_name with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id003 + - ansible.builtin.assert: that: - result.changed == false diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml index 61277e0d6..3080c9db3 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_lookup_source.yaml @@ -3,7 +3,8 @@ msg: START netconf/set_lookup_source.yaml on connection={{ ansible_connection }} - name: Setup - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain lookup source-interface Loopback10 @@ -16,7 +17,8 @@ ansible.builtin.meta: reset_connection - name: Configure lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id001 lookup_source: Loopback10 @@ -27,15 +29,18 @@ - "'Loopback10' in result.xml[0]" - name: Verify lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id001 + - ansible.builtin.assert: that: - result.changed == false - name: Disable lookup - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id002 lookup_enabled: false @@ -46,7 +51,8 @@ - "'lookup' in result.xml[0]" - name: Verify disable lookup - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id002 - ansible.builtin.assert: @@ -54,7 +60,8 @@ - result.changed == false - name: Delete lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id003 lookup_source: Loopback10 @@ -66,7 +73,8 @@ - "'Loopback10' in result.xml[0]" - name: Verify lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id003 - ansible.builtin.assert: @@ -74,7 +82,8 @@ - result.changed == false - name: Configure lookup_source with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id004 lookup_source: Loopback10 @@ -87,15 +96,18 @@ - "'ansiblevrf' in result.xml[0]" - name: Verify lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id004 + - ansible.builtin.assert: that: - result.changed == false - name: Disable lookup - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id005 lookup_enabled: false @@ -108,7 +120,8 @@ - "'ansiblevrf' in result.xml[0]" - name: Verify disable lookup - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id005 - ansible.builtin.assert: @@ -116,7 +129,8 @@ - result.changed == false - name: Delete lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id006 lookup_source: Loopback10 @@ -130,7 +144,8 @@ - "'ansiblevrf' in result.xml[0]" - name: Verify lookup_source - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id006 - ansible.builtin.assert: @@ -138,7 +153,8 @@ - result.changed == false - name: Teardown - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain lookup disable diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml index dc8881587..1f40d0b1a 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_system/tests/netconf/set_name_servers.yaml @@ -3,7 +3,8 @@ msg: START netconf/set_name_servers.yaml on connection={{ ansible_connection }} - name: Setup - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain name-server 192.0.2.1 @@ -12,7 +13,8 @@ match: none - name: Setup - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf ignore_errors: true register: result cisco.iosxr.iosxr_system: @@ -24,7 +26,8 @@ state: absent - name: Configure name_servers - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: name_servers: @@ -41,7 +44,8 @@ - "'192.0.2.3' in result.xml[0]" - name: Verify name_servers - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: name_servers: @@ -54,7 +58,8 @@ - result.changed == false - name: Add name servers with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: &id001 vrf: ansible @@ -73,7 +78,8 @@ - "'192.0.2.3' in result.xml[0]" - name: Verify change to VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: *id001 - ansible.builtin.assert: @@ -81,7 +87,8 @@ - result.changed == false - name: Remove one - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_system: name_servers: @@ -95,7 +102,8 @@ - "'192.0.2.3' in result.xml[0]" - name: Remove one with VRF - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf ignore_errors: true register: result cisco.iosxr.iosxr_system: @@ -105,7 +113,8 @@ - 192.0.2.2 - name: Teardown - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_config: lines: - no domain name-server 192.0.2.1 @@ -113,7 +122,8 @@ match: none - name: Teardown - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf ignore_errors: true register: result cisco.iosxr.iosxr_system: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/private b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/private deleted file mode 100644 index bf2425bb8..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/private +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,A823A6B5ED873917 - -mLZ1xM1+xwutkRy+K/c9QsstDPQ9F6UWtDpoYyIgs7n9VgMjhIMbWQC9CkTvnFJM -ey+iwGdQZZOThwxalm+k3pMibwRjhnF+PNFhiVkzWH8/K8QvXRQiW/vYmE/QB9pY -T0IWbMcC7/ktEfQn+6GLXoe/L7yH+aNv/2Flsa2jN2cfSXpzbneUA06/LVVOw6E+ -C74NKRWUmMPA39Zd4WOeBoWUdS5Kgwl57SOtrKs1LIGh33+TPu+Go8gJ7h/t/kaN -kverVSz+0eeX+exKumejfo1UfosplRhcjRG8YgiQ8l7SN3NBF/gXiiSrH3fLwmRJ -hbokJ8TmCozrYBs1MNe3LoU2iuIqVnJ5Sd6DJELs6vCuFz+v6J/s80NaaYMlBCbB -1lahelYqoyLb4uiDd4zQSpaxzO+Cx/d50Wpee8mFxbAL/YxacOzD3b/VCBgB+AZN -TTHr1ayd+ITd8gewXAyERKWyrDcC2beJI0fOil23PYowWvEncS6I1f4hKQY28sRf -vHSbwQdltky/xiib2/feQTaMSQFvsY67uTHipMwl5wJNOKcbeqDVMWPYST3XUsBg -LRlbT+VTUEehbOJAJ6Hh7Yv4nqu7fEh95HUQK7Ed56rMLKpmdorYO49JtewkEUsj -LJn7tcxMUuOcWKHMPu6vB/63f6Ulthqp1SEG8aNBaZMuPyLWAPAJc2okOmkiSbvO -0Hxe6BtAGn2fUo2jK6E3tD/dsIR2qqMlL09FkACGT8D5Lfh5d3z+lo9DxpXl281R -ablehPyHgHcIC6cD2/7FwwjzUuyj/kYcETnMs51agcWFAXTom/ehqD+IQ8jZ73zT -5O4FFgslnNmB/vddh9PeYpjDYdR4y5xMrlMxJ+qcZuQOq7dfaiodq8oj+XPmwgxA -audX/sHMutOpmOagrsQfaQXaPqRXdQTnuwHacQfwq+tBBhrft5gwt1HE7Ir2ulwD -Q19kefchkJu/0c1cAGg1VHtQic0a6tX6PrwqZOMDfpSywcImMCF4KHgD2EC5/8h6 -tq0PqPLNcwiM2NhpypCuYmkYZ0gnJ/xAwtM85Ck9nmPFptLSd0b7YB7dtGsFYY5A -rhIcq5lZhy06/RRAPluIkniscA50iEO/EXKwzYzovBJh6jQz7oYsbEUW5kwg0gm/ -YPSa6lqv2kTpXS+UiGyeNWdUkr5DpdwKe4lrAsN94HE9/SoLgFvz0X5/WyTssSzo -IO3WfLfBc7SOkZK1ibcleIqilzd+LSoIqqGrft2yonXgJD3p9xO+Hlldczx2kHmu -z4lZBq53AkVAQ4os5L7ZRnmxoqKn2XAQRwVH3M9ZFYFEqEyDmZhlFdJSGEnKws81 -Ej48t6KWwqml02cx675bSYI22tL3+RL7AGmlC0/Xh8wIVesgulsYmnhW4BtpBYf2 -fwv5esJJMjkh2LvLNG3edYChugudeZXtcBJdNr0GYRbBAhvO25bRcr6z8nYDusKX -e/+30vATOcBO/zaOYIwDGT5ZwMQAV1aQl8HyeyYESNjb0fBXQ3OYObOrTTs8MLyC -I4b6wr1vlbN+lMOm+RIXCDgmC3COdlgCHyo3qiIu2YNYQVoNF4NN4A== ------END RSA PRIVATE KEY----- diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public.pub b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public.pub deleted file mode 100644 index db1847f45..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkvLTTJdwZ0lg1cUCn13Hi3+ho2+G6/96XuAP7jA7Ghz9NPbC/eqXnjvb27BA8CxtFXYuXR5eZWSq2UN5zFcfrFb57XFxdAg2q21hGEX+FGiTUuRZh8+ByVEh0LUetFTwsEZ1iGv6GZiLBt7IJvClXbyNTJEt3DZncHfGwudyGFviV4dGrzusDAGAcoHqvD/5uXYl4PjMH9oSfraO3sG4Q7soQwxNeiM8qOLf3c1SabHBAtSewwnA0E/jhzpOLD2QUncU5s+Oa9PvEXXhGv5eZo9lp71brsgyWj32m2UuXx/n+EZg78GVJT5mFO7LG239n3gTnwkMVdr6zVBFNX5Mvw== rsa-key-20171025 diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public2.pub b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public2.pub deleted file mode 100644 index 26af0db95..000000000 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/files/public2.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhTxbibM8hKZn7xDURs15L3gkcsnpDoZ+tNm5zpP9dcboASnIyJzfC7J/RdRCQsO/pDmUY4y/tsTx18uenyfazxtNkyCHdANlp8XVF1fGNv5GM+QbsDqxe54sdG9csASX0/Ljvl538IbcLFVH0zxyKspbDOgkAkUSuKIAH5x+/GhkAoGQO2tOhYjqofNtUxLSvfRsf4Gm1M0WgdWmz3MW4NOdZhsL4S+STgRPU1jy1dKGj7BKY9cpnCWBFHa2wSaOXJEBZEKNaFVxlBBrFs5brjRQA0mVPmE+pz+/+IJeSNEEma9cXur0ONeb6OoXvkManxKfkaswT2ybOChAzJR8dQ== T-MOBILE diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/cli.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/cli.yaml index ab72bff13..e5474513c 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/cli.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/cli.yaml @@ -21,7 +21,8 @@ files: "{{ common_test_cases.files + test_cases.files }}" - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.network_cli) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/netconf.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/netconf.yaml index 855bba5cf..342026211 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/netconf.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tasks/netconf.yaml @@ -19,7 +19,8 @@ files: "{{ common_test_cases.files + test_cases.files }}" - name: Set test_items - ansible.builtin.set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + ansible.builtin.set_fact: + test_items: "{{ test_cases.files | map(attribute='path') | list }}" - name: Run test case (connection=ansible.netcommon.netconf) ansible.builtin.include_tasks: "{{ test_case_to_run }}" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/common/auth.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/common/_auth.yaml index 3c2e6e468..3af284335 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/common/auth.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/common/_auth.yaml @@ -1,5 +1,15 @@ --- - block: + - name: Generate /etc/ssh/ RSA host key + ansible.builtin.command: ssh-keygen -q -t rsa -f "{{role_path}}"/mykey -C "" -N "" + args: + creates: "{{role_path}}/mykey" + + - name: Generate /etc/ssh/ RSA host key + ansible.builtin.command: ssh-keygen -q -t rsa -f "{{role_path}}"/mykey1 -C "" -N "" + args: + creates: "{{role_path}}/mykey1" + - name: Create user with password connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_user: @@ -33,13 +43,11 @@ cisco.iosxr.iosxr_user: name: auth_user state: present - public_key_contents: '{{ lookup(''file'', "{{ role_path }}/files/public.pub") }}' + public_key_contents: '{{ lookup(''file'', "{{role_path}}/mykey.pub") }}' - name: Test login with private key ansible.builtin.expect: - command: - ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{ role_path - }}/files/private show version + command: ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{role_path}}/mykey show version responses: (?i)password: pass123 connection: ansible.netcommon.network_cli @@ -52,9 +60,7 @@ - name: Test login with private key (should fail, no user) ansible.builtin.expect: - command: - ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{ role_path - }}/files/private show version + command: ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{role_path}}/mykey show version responses: (?i)password: pass123 ignore_errors: true @@ -64,15 +70,13 @@ - name: Create user with private key (path input) connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_user: - name: auth_user + name: auth_user1 state: present - public_key: "{{ role_path }}/files/public.pub" + public_key: "{{role_path}}/mykey.pub" - name: Test login with private key ansible.builtin.expect: - command: - ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{ role_path - }}/files/private show version + command: ssh auth_user1@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{role_path}}/mykey show version responses: (?i)password: pass123 ignore_errors: true @@ -81,15 +85,13 @@ - name: Change private key for user connection: ansible.netcommon.network_cli cisco.iosxr.iosxr_user: - name: auth_user + name: auth_user1 state: present - public_key_contents: '{{ lookup(''file'', "{{ role_path }}/files/public2.pub") }}' + public_key_contents: '{{ lookup(''file'', "{{role_path}}/mykey1.pub") }}' - name: Test login with invalid private key (should fail) ansible.builtin.expect: - command: - ssh auth_user@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{ role_path - }}/files/private show version + command: ssh auth_user1@{{ ansible_ssh_host }} -p {{ ansible_ssh_port|default(22) }} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{role_path}}/mykey show version responses: (?i)password: pass123 ignore_errors: true @@ -103,7 +105,12 @@ always: - name: Delete user connection: ansible.netcommon.network_cli - register: result cisco.iosxr.iosxr_user: - name: auth_user + name: "{{item}}" state: absent + with_items: + - auth_user + - auth_user1 + + - name: Remove keys + ansible.builtin.command: "rm -rf {{role_path}}/mykey*" diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/netconf/_basic.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/netconf/basic.yaml index 6107ff021..3d5bf6e29 100644 --- a/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/netconf/_basic.yaml +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/iosxr_user/tests/netconf/basic.yaml @@ -1,6 +1,7 @@ --- - name: Remove users prior to tests - connection: ansible.netcommon.network_cli + vars: + ansible_connection: ansible.netcommon.netconf cisco.iosxr.iosxr_config: lines: - no username ansible1 @@ -8,7 +9,8 @@ - no username ansible3 - name: Create user (setup) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: name: ansible1 @@ -22,7 +24,8 @@ - '"secret" in result.xml[0]' - name: Create user with update_password always (not idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: name: ansible1 @@ -37,7 +40,8 @@ - '"secret" in result.xml[0]' - name: Create user again with update_password on_create (idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: name: ansible1 @@ -51,7 +55,8 @@ - result.xml | length == 0 - name: Modify user group - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: name: ansible1 @@ -67,7 +72,8 @@ - '"sysadmin" in result.xml[0]' - name: Modify user group again (idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: name: ansible1 @@ -82,7 +88,8 @@ - result.xml | length == 0 - name: Collection of users (setup) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: aggregate: @@ -104,7 +111,8 @@ - '"sysadmin" in result.xml[1]' - name: Add collection of users again with update_password always (not idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: aggregate: @@ -123,7 +131,8 @@ - '"secret" in result.xml[0]' - name: Add collection of users again with update_password on_create (idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: aggregate: @@ -141,7 +150,8 @@ - result.xml | length == 0 - name: Delete collection of users - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: aggregate: @@ -160,7 +170,8 @@ - '"ansible3" in result.xml[0]' - name: Delete collection of users again (idempotent) - connection: ansible.netcommon.netconf + vars: + ansible_connection: ansible.netcommon.netconf register: result cisco.iosxr.iosxr_user: aggregate: diff --git a/ansible_collections/cisco/iosxr/tests/integration/targets/prepare_iosxr_tests/meta/main.yaml b/ansible_collections/cisco/iosxr/tests/integration/targets/prepare_iosxr_tests/meta/main.yaml new file mode 100644 index 000000000..61d3ffe4f --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/integration/targets/prepare_iosxr_tests/meta/main.yaml @@ -0,0 +1,2 @@ +--- +allow_duplicates: true diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.10.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.10.txt index b61dcef1d..c2f1a6018 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.10.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.10.txt @@ -1,6 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py compile-2.6!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.11.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.11.txt index b83ac9dcf..b492817fc 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.11.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.11.txt @@ -1,6 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py compile-2.6!skip @@ -29,8 +27,5 @@ plugins/modules/iosxr_bgp_global.py import-2.6!skip plugins/modules/iosxr_prefix_lists.py import-2.6!skip plugins/modules/iosxr_logging_global.py import-2.6!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.7!skip -plugins/sub_plugins/grpc/iosxr.py import-3.7!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.8!skip -plugins/sub_plugins/grpc/iosxr.py import-3.8!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.9!skip -plugins/sub_plugins/grpc/iosxr.py import-3.9!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.12.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.12.txt index 393d598b4..14952a817 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.12.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.12.txt @@ -1,6 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py compile-2.6!skip @@ -28,12 +26,6 @@ plugins/modules/iosxr_bgp_address_family.py import-2.6!skip plugins/modules/iosxr_bgp_global.py import-2.6!skip plugins/modules/iosxr_prefix_lists.py import-2.6!skip plugins/modules/iosxr_logging_global.py import-2.6!skip -plugins/cliconf/iosxr.py pylint:arguments-renamed -plugins/netconf/iosxr.py pylint:arguments-renamed -tests/unit/mock/loader.py pylint:arguments-renamed plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.8!skip -plugins/sub_plugins/grpc/iosxr.py import-3.8!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.9!skip -plugins/sub_plugins/grpc/iosxr.py import-3.9!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip -plugins/sub_plugins/grpc/iosxr.py import-3.10!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.13.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.13.txt index b00006c2b..5d99b9b08 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.13.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.13.txt @@ -1,12 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation -plugins/cliconf/iosxr.py pylint:arguments-renamed -plugins/netconf/iosxr.py pylint:arguments-renamed -tests/unit/mock/loader.py pylint:arguments-renamed plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.8!skip -plugins/sub_plugins/grpc/iosxr.py import-3.8!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.9!skip -plugins/sub_plugins/grpc/iosxr.py import-3.9!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip -plugins/sub_plugins/grpc/iosxr.py import-3.10!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.14.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.14.txt index ad1f84d84..63b93ff5a 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.14.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.14.txt @@ -1,12 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation -plugins/cliconf/iosxr.py pylint:arguments-renamed -plugins/netconf/iosxr.py pylint:arguments-renamed -tests/unit/mock/loader.py pylint:arguments-renamed plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.9!skip -plugins/sub_plugins/grpc/iosxr.py import-3.9!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip -plugins/sub_plugins/grpc/iosxr.py import-3.10!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.11!skip -plugins/sub_plugins/grpc/iosxr.py import-3.11!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.15.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.15.txt index ad1f84d84..63b93ff5a 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.15.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.15.txt @@ -1,12 +1,4 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation -plugins/cliconf/iosxr.py pylint:arguments-renamed -plugins/netconf/iosxr.py pylint:arguments-renamed -tests/unit/mock/loader.py pylint:arguments-renamed plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.9!skip -plugins/sub_plugins/grpc/iosxr.py import-3.9!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip -plugins/sub_plugins/grpc/iosxr.py import-3.10!skip plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.11!skip -plugins/sub_plugins/grpc/iosxr.py import-3.11!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.16.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.16.txt new file mode 100644 index 000000000..450f3eab7 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.16.txt @@ -0,0 +1,4 @@ +plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.11!skip +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.12!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.17.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.17.txt new file mode 100644 index 000000000..450f3eab7 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.17.txt @@ -0,0 +1,4 @@ +plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.10!skip +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.11!skip +plugins/sub_plugins/grpc/pb/ems_grpc_pb2.py import-3.12!skip diff --git a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.9.txt b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.9.txt index eedc28b70..aab3e8dfc 100644 --- a/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.9.txt +++ b/ansible_collections/cisco/iosxr/tests/sanity/ignore-2.9.txt @@ -1,8 +1,6 @@ plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local plugins/modules/iosxr_logging.py validate-modules:deprecation-mismatch # 2.9 expects METADATA plugins/modules/iosxr_logging.py validate-modules:invalid-documentation # removed_at_date not supported in `deprecated` dict -plugins/modules/iosxr_bgp.py validate-modules:deprecation-mismatch -plugins/modules/iosxr_bgp.py validate-modules:invalid-documentation plugins/module_utils/network/iosxr/config/acl_interfaces/acl_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospf_interfaces/ospf_interfaces.py compile-2.6!skip plugins/module_utils/network/iosxr/config/ospfv2/ospfv2.py compile-2.6!skip diff --git a/ansible_collections/cisco/iosxr/tests/unit/compat/builtins.py b/ansible_collections/cisco/iosxr/tests/unit/compat/builtins.py deleted file mode 100644 index e898a081e..000000000 --- a/ansible_collections/cisco/iosxr/tests/unit/compat/builtins.py +++ /dev/null @@ -1,35 +0,0 @@ -# (c) 2014, Toshio Kuratomi <tkuratomi@ansible.com> -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -# Make coding more python3-ish -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - -# -# Compat for python2.7 -# - -# One unittest needs to import builtins via __import__() so we need to have -# the string that represents it -try: - import __builtin__ -except ImportError: - BUILTINS = "builtins" -else: - BUILTINS = "__builtin__" diff --git a/ansible_collections/cisco/iosxr/tests/unit/mock/loader.py b/ansible_collections/cisco/iosxr/tests/unit/mock/loader.py index 2b5eb36a1..0fc53edcd 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/mock/loader.py +++ b/ansible_collections/cisco/iosxr/tests/unit/mock/loader.py @@ -31,7 +31,7 @@ from ansible.parsing.dataloader import DataLoader class DictDataLoader(DataLoader): def __init__(self, file_mapping=None): file_mapping = {} if file_mapping is None else file_mapping - assert type(file_mapping) == dict + assert isinstance(file_mapping, dict) super(DictDataLoader, self).__init__() @@ -47,12 +47,12 @@ class DictDataLoader(DataLoader): # TODO: the real _get_file_contents returns a bytestring, so we actually convert the # unicode/text it's created with to utf-8 - def _get_file_contents(self, path): - path = to_text(path) - if path in self._file_mapping: - return (to_bytes(self._file_mapping[path]), False) + def _get_file_contents(self, file_name): + file_name = to_text(file_name) + if file_name in self._file_mapping: + return (to_bytes(self._file_mapping[file_name]), False) else: - raise AnsibleParserError("file not found: %s" % path) + raise AnsibleParserError("file not found: %s" % file_name) def path_exists(self, path): path = to_text(path) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_acl_replace_config.cfg b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_acl_replace_config.cfg new file mode 100644 index 000000000..7b2917fa6 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_acl_replace_config.cfg @@ -0,0 +1,2 @@ +ipv4 access-list ACL-TEST +10 remark THIS IS A REMARK diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_interface_gathered.cfg b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_interface_gathered.cfg new file mode 100644 index 000000000..f05a6eb71 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/iosxr_interface_gathered.cfg @@ -0,0 +1,11 @@ + +interface GigabitEthernet0/0/0/5 + description RTI-DSKMPLS-LP201 #G0/0 + mtu 9216 + ipv4 address 10.255.2.9 255.255.255.252 +! +interface GigabitEthernet0/0/0/6 + description RTI-DSKMPLS-LP301 #G0/1 + mtu 9216 + ipv4 address 10.255.2.17 255.255.255.252 +! diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/show_processes_cpu___include_CPU_utilization b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/show_processes_cpu___include_CPU_utilization new file mode 100644 index 000000000..b2dc00f6e --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/fixtures/show_processes_cpu___include_CPU_utilization @@ -0,0 +1 @@ +CPU utilization for one minute: 21%; five minutes: 13%; fifteen minutes: 8% diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/iosxr_module.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/iosxr_module.py index 1915b07ea..f94f4d222 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/iosxr_module.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/iosxr_module.py @@ -62,7 +62,6 @@ class TestIosxrModule(ModuleTestCase): sort=True, defaults=False, ): - self.load_fixtures(commands) if failed: diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_acls.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_acls.py index ed826b930..181b239d8 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_acls.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_acls.py @@ -54,14 +54,14 @@ class TestIosxrAclsModule(TestIosxrModule): self.mock_load_config.stop() self.mock_execute_show_command.stop() - def _prepare(self): + def _prepare(self, config): def load_from_file(*args, **kwargs): - return load_fixture("iosxr_acls_config.cfg") + return load_fixture(config) self.execute_show_command.side_effect = load_from_file def test_iosxr_acls_merged(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -120,7 +120,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=True, commands=commands) def test_iosxr_acls_merged_idempotent(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -148,7 +148,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=False, commands=[]) def test_iosxr_acls_replaced(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -209,7 +209,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=True, commands=commands) def test_iosxr_acls_replaced_idempotent(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -244,7 +244,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=False, commands=[]) def test_iosxr_acls_overridden(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -307,7 +307,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=True, commands=commands) def test_iosxr_acls_overridden_idempotent(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -388,7 +388,7 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=False, commands=[]) def test_iosxr_acls_deletedacls(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[dict(afi="ipv6", acls=[dict(name="acl6_1")])], @@ -399,13 +399,13 @@ class TestIosxrAclsModule(TestIosxrModule): self.execute_module(changed=True, commands=commands) def test_iosxr_acls_deletedafis(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args(dict(config=[dict(afi="ipv4")], state="deleted")) commands = ["no ipv4 access-list acl_2", "no ipv4 access-list acl_1"] self.execute_module(changed=True, commands=commands) def test_iosxr_acls_rendered(self): - self._prepare() + self._prepare("iosxr_acls_config.cfg") set_module_args( dict( config=[ @@ -494,3 +494,39 @@ class TestIosxrAclsModule(TestIosxrModule): }, ] self.assertEqual(parsed_list, result["parsed"]) + + def test_iosxr_acls_replaced_remark(self): + self._prepare("iosxr_acl_replace_config.cfg") + set_module_args( + dict( + config=[ + dict( + afi="ipv4", + acls=[ + dict( + name="ACL-TEST", + aces=[ + dict( + sequence="10", + grant="permit", + protocol="ipv4", + source=dict( + any=True, + ), + destination=dict( + host="1.1.1.1", + ), + ), + ], + ), + ], + ), + ], + state="replaced", + ), + ) + commands = [ + "ipv4 access-list ACL-TEST", + "10 permit ipv4 any host 1.1.1.1", + ] + self.execute_module(changed=True, commands=commands) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_banner.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_banner.py index 8c426f832..5dcbada13 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_banner.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_banner.py @@ -47,7 +47,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrBannerModule(TestIosxrModule): - module = iosxr_banner def setUp(self): diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py index 05480d092..901b5b4d8 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_global.py @@ -224,6 +224,19 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): minimum_interval=20, fast_detect=dict(strict_mode=True), ), + use=dict( + neighbor_group="test_ng", + session_group="test_sg", + ), + password=dict( + inheritance_disable="true", + ), + local_as=dict( + value="65539", + no_prepend=dict( + set="true", + ), + ), ), ], vrfs=[dict(vrf="vrf1", default_metric=5)], @@ -240,6 +253,10 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): "bfd fast-detect strict-mode", "bfd minimum-interval 20", "bfd multiplier 6", + "use session-group test_sg", + "use neighbor-group test_ng", + "local-as 65539 no-prepend", + "password inheritance-disable", "remote-as 65538", ] result = self.execute_module(changed=True) @@ -264,6 +281,8 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): bfd fast-detect strict-mode bfd multiplier 6 bfd minimum-interval 20 + use session-group test_sg + use neighbor-group test_ng vrf vrf1 default-metric 5 """, @@ -298,6 +317,10 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): minimum_interval=20, fast_detect=dict(strict_mode=True), ), + use=dict( + neighbor_group="test_ng", + session_group="test_sg", + ), ), ], vrfs=[dict(vrf="vrf1", default_metric=5)], @@ -386,6 +409,10 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): dict( neighbor="192.0.2.14", remote_as="65538", + use=dict( + neighbor_group="test_nb", + session_group="test_sg", + ), bfd=dict( multiplier=6, minimum_interval=20, @@ -415,6 +442,8 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): "bfd fast-detect", "bfd minimum-interval 20", "bfd multiplier 6", + "use neighbor-group test_nb", + "use session-group test_sg", "remote-as 65538", "vrf vrf1", "default-metric 5", @@ -429,7 +458,9 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): running_config="router bgp 65536\n bgp confederation identifier 4\n " "bgp router-id 192.0.2.10\n bgp cluster-id 5\n default-metric 4\n " "socket send-buffer-size 4098\n bgp bestpath med confed\n " - "socket receive-buffer-size 514\n neighbor 192.0.2.11\n remote-as 65537\n " + "socket receive-buffer-size 514\n neighbor 192.0.2.11\n " + "local-as 4 no-prepend replace-as\n " + "password encrypted 15060E1F107B\n remote-as 65537\n " "cluster-id 3\n !\n neighbor 192.0.2.14\n remote-as 65538\n description test nbr description\n" " bfd fast-detect strict-mode\n " " bfd multiplier 6\n bfd minimum-interval 20\n !\n!", @@ -448,7 +479,16 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): "default_metric": 4, "socket": {"send_buffer_size": 4098, "receive_buffer_size": 514}, "neighbors": [ - {"neighbor_address": "192.0.2.11", "remote_as": 65537, "cluster_id": "3"}, + { + "neighbor_address": "192.0.2.11", + "remote_as": 65537, + "cluster_id": "3", + "password": {"encrypted": "15060E1F107B"}, + "local_as": { + "no_prepend": {"replace_as": {"set": True}}, + "value": 4, + }, + }, { "neighbor_address": "192.0.2.14", "remote_as": 65538, @@ -491,3 +531,158 @@ class TestIosxrBgpGlobalModule(TestIosxrModule): result = self.execute_module(changed=True) self.assertEqual(set(result["commands"]), set(commands)) + + def test_iosxr_bgp_global_ovrridden(self): + run_cfg = dedent( + """\ + router bgp 65536 + bgp confederation identifier 4 + bgp router-id 192.0.2.10 + bgp cluster-id 5 + default-metric 4 + socket send-buffer-size 4098 + bgp bestpath med confed + socket receive-buffer-size 514 + neighbor 192.0.2.11 + remote-as 65537 + cluster-id 3 + neighbor 192.0.2.14 + remote-as 65538 + bfd fast-detect strict-mode + bfd multiplier 6 + bfd minimum-interval 20 + vrf vrf1 + default-metric 5 + """, + ) + self.get_config.return_value = run_cfg + set_module_args( + dict( + config=dict( + as_number="65536", + default_metric=5, + socket=dict( + receive_buffer_size=514, + send_buffer_size=4098, + ), + bgp=dict( + confederation=dict(identifier=4), + bestpath=dict(med=dict(confed=True)), + cluster_id=5, + router_id="192.0.2.10", + ), + neighbors=[ + dict( + neighbor="192.0.2.13", + remote_as="65538", + bfd=dict( + multiplier=6, + minimum_interval=20, + fast_detect=dict(strict_mode=True), + ), + use=dict( + neighbor_group="test_ng", + session_group="test_sg", + ), + password=dict( + inheritance_disable="true", + ), + local_as=dict( + value="65539", + no_prepend=dict( + set="true", + ), + ), + ), + ], + vrfs=[dict(vrf="vrf1", default_metric=5)], + ), + state="overridden", + ), + ) + commands = [ + "router bgp 65536", + "no neighbor 192.0.2.11", + "no neighbor 192.0.2.14", + "default-metric 5", + "neighbor 192.0.2.13", + "bfd fast-detect strict-mode", + "bfd minimum-interval 20", + "bfd multiplier 6", + "use session-group test_sg", + "use neighbor-group test_ng", + "local-as 65539 no-prepend", + "password inheritance-disable", + "remote-as 65538", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_bgp_global_overridden_idempotent(self): + run_cfg = dedent( + """\ + router bgp 65536 + bgp confederation identifier 4 + bgp router-id 192.0.2.10 + bgp cluster-id 5 + default-metric 4 + socket send-buffer-size 4098 + bgp bestpath med confed + socket receive-buffer-size 514 + neighbor 192.0.2.11 + remote-as 65537 + cluster-id 3 + neighbor 192.0.2.14 + remote-as 65538 + bfd fast-detect strict-mode + bfd multiplier 6 + bfd minimum-interval 20 + use session-group test_sg + use neighbor-group test_ng + vrf vrf1 + default-metric 5 + """, + ) + self.get_config.return_value = run_cfg + set_module_args( + dict( + config=dict( + as_number="65536", + default_metric=4, + socket=dict( + receive_buffer_size=514, + send_buffer_size=4098, + ), + bgp=dict( + confederation=dict(identifier=4), + bestpath=dict(med=dict(confed=True)), + cluster_id=5, + router_id="192.0.2.10", + ), + neighbors=[ + dict( + neighbor="192.0.2.11", + cluster_id=3, + remote_as="65537", + ), + dict( + neighbor="192.0.2.14", + remote_as="65538", + bfd=dict( + multiplier=6, + minimum_interval=20, + fast_detect=dict(strict_mode=True), + ), + use=dict( + neighbor_group="test_ng", + session_group="test_sg", + ), + ), + ], + vrfs=[dict(vrf="vrf1", default_metric=5)], + ), + state="overridden", + ), + ) + + self.execute_module(changed=False, commands=[]) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_templates.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_templates.py new file mode 100644 index 000000000..4efc04503 --- /dev/null +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_bgp_templates.py @@ -0,0 +1,1266 @@ +# (c) 2021 Red Hat Inc. +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see <http://www.gnu.org/licenses/>. + +# Make coding more python3-ish + +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from textwrap import dedent + +from ansible_collections.cisco.iosxr.plugins.modules import iosxr_bgp_templates +from ansible_collections.cisco.iosxr.tests.unit.compat.mock import patch +from ansible_collections.cisco.iosxr.tests.unit.modules.utils import set_module_args + +from .iosxr_module import TestIosxrModule + + +class TestIosxrBgptemplatesModule(TestIosxrModule): + module = iosxr_bgp_templates + + def setUp(self): + super(TestIosxrBgptemplatesModule, self).setUp() + + self.mock_get_resource_connection = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base." + "get_resource_connection", + ) + self.get_resource_connection = self.mock_get_resource_connection.start() + + self.mock_get_config = patch( + "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.bgp_templates.bgp_templates." + "Bgp_templatesFacts.get_config", + ) + self.get_config = self.mock_get_config.start() + + def tearDown(self): + super(TestIosxrBgptemplatesModule, self).tearDown() + self.get_resource_connection.stop() + self.get_config.stop() + + def test_iosxr_bgp_tmpl_merged_idempotent(self): + run_cfg = dedent( + """\ + router bgp 1 + neighbor-group test + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group test1 + bfd fast-detect + bfd minimum-interval 3 + keychain test + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + advertisement-interval 2 + tcp mss inheritance-disable + local-as 6 + password inheritance-disable + cluster-id 1 + dmz-link-bandwidth + description test + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + address-family ipv4 unicast + origin-as validation disable + bestpath origin-as allow invalid + aigp + weight 0 + send-community-ebgp + multipath + route-reflector-client + allowas-in 1 + maximum-prefix 1 75 + as-override + capability orf prefix send + send-extended-community-ebgp + default-originate + long-lived-graceful-restart capable + next-hop-self + send-community-gshut-ebgp inheritance-disable + soft-reconfiguration inbound + send-multicast-attributes disable + Signalling bgp disable + remove-private-AS inbound + update out originator-loopcheck disable + advertise local-labeled-route + next-hop-unchanged inheritance-disable + ! + ! + + """, + ) + self.get_config.return_value = run_cfg + set_module_args( + dict( + config=dict( + as_number="1", + neighbor=[ + dict( + name="test", + bfd=dict(fast_detect=dict(strict_mode=True)), + advertisement_interval=10, + precedence="critical", + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + advertise=dict(local_labeled_route=dict(set=True)), + ), + ], + ), + dict( + name="test1", + bfd=dict( + fast_detect=dict(set=True), + minimum_interval=3, + ), + keychain=dict(name="test"), + ebgp_multihop=dict(value=255), + egress_engineering=dict(set=True), + precedence="flash", + graceful_maintenance=dict( + as_prepends=dict( + value="0", + ), + set=True, + ), + advertisement_interval=2, + tcp=dict(mss=dict(inheritance_disable=True)), + local_as=dict(value=6), + password=dict(inheritance_disable=True), + cluster_id=1, + dmz_link_bandwidth=dict(set=True), + description="test", + ttl_security=dict(set=True), + local_address_subnet="1.1.1.1/24", + update_source="Loopback919", + idle_watch_time=30, + ignore_connected_check=dict(set=True), + session_open_mode="both", + send_buffer_size=4096, + receive_buffer_size=512, + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + origin_as=dict(validation=dict(disable=True)), + bestpath_origin_as_allow_invalid=True, + aigp=dict(set=True), + weight=0, + multipath=True, + send_community_ebgp=dict(set=True), + route_reflector_client=dict(set=True), + allowas_in=dict(value=1), + maximum_prefix=dict( + max_limit=1, + threshold_value=75, + ), + as_override=dict(set=True), + capability_orf_prefix="send", + send_extended_community_ebgp=dict(set=True), + default_originate=dict(set=True), + long_lived_graceful_restart=dict( + capable=True, + ), + next_hop_self=dict(set=True), + send_community_gshut_ebgp=dict(inheritance_disable=True), + soft_reconfiguration=dict(inbound=dict(set=True)), + send_multicast_attributes=dict(disable=True), + signalling=dict(bgp_disable=True), + remove_private_AS=dict( + inbound=True, + ), + next_hop_unchanged=dict(inheritance_disable=True), + advertise=dict(local_labeled_route=dict(set=True)), + update=dict( + out_originator_loopcheck_disable=True, + ), + ), + ], + ), + ], + ), + state="merged", + ), + ) + self.execute_module(changed=False, commands=[]) + + def test_iosxr_bgp_tmpl_merged(self): + self.maxDiff = None + set_module_args( + dict( + config=dict( + as_number="1", + neighbor=[ + dict( + name="test", + bfd=dict(fast_detect=dict(strict_mode=True)), + advertisement_interval=10, + precedence="critical", + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + advertise=dict(local_labeled_route=dict(set=True)), + ), + ], + ), + dict( + name="test1", + bfd=dict( + fast_detect=dict(set=True), + minimum_interval=3, + ), + keychain=dict(name="test"), + ebgp_multihop=dict(value=255), + egress_engineering=dict(set=True), + precedence="flash", + graceful_maintenance=dict( + as_prepends=dict( + value="0", + ), + set=True, + ), + advertisement_interval=2, + tcp=dict(mss=dict(inheritance_disable=True)), + local_as=dict(value=6), + password=dict(inheritance_disable=True), + cluster_id=1, + dmz_link_bandwidth=dict(set=True), + description="test", + ttl_security=dict(set=True), + local_address_subnet="1.1.1.1/24", + update_source="Loopback919", + idle_watch_time=30, + ignore_connected_check=dict(set=True), + session_open_mode="both", + send_buffer_size=4096, + receive_buffer_size=512, + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + origin_as=dict(validation=dict(disable=True)), + bestpath_origin_as_allow_invalid=True, + aigp=dict(set=True), + weight=0, + multipath=True, + send_community_ebgp=dict(set=True), + route_reflector_client=dict(set=True), + allowas_in=dict(value=1), + maximum_prefix=dict( + max_limit=1, + threshold_value=75, + ), + as_override=dict(set=True), + capability_orf_prefix="send", + send_extended_community_ebgp=dict(set=True), + default_originate=dict(set=True), + long_lived_graceful_restart=dict( + capable=True, + ), + next_hop_self=dict(set=True), + send_community_gshut_ebgp=dict(inheritance_disable=True), + soft_reconfiguration=dict(inbound=dict(set=True)), + send_multicast_attributes=dict(disable=True), + signalling=dict(bgp_disable=True), + remove_private_AS=dict( + inbound=True, + ), + next_hop_unchanged=dict(inheritance_disable=True), + advertise=dict(local_labeled_route=dict(set=True)), + update=dict( + out_originator_loopcheck_disable=True, + ), + ), + ], + ), + ], + ), + state="merged", + ), + ) + commands = [ + "router bgp 1", + "neighbor-group test", + "advertisement-interval 10", + "bfd fast-detect strict-mode", + "internal-vpn-client", + "precedence critical", + "address-family ipv4 unicast", + "advertise local-labeled-route", + "neighbor-group test1", + "advertisement-interval 2", + "bfd fast-detect", + "bfd minimum-interval 3", + "dmz-link-bandwidth", + "description test", + "cluster-id 1", + "ebgp-multihop 255", + "egress-engineering", + "idle-watch-time 30 ", + "internal-vpn-client", + "ignore-connected-check", + "keychain test", + "local-as 6", + "password inheritance-disable", + "precedence flash", + "receive-buffer-size 512", + "send-buffer-size 4096", + "session-open-mode both", + "tcp mss inheritance-disable", + "update-source Loopback919", + "ttl-security", + "graceful-maintenance", + "graceful-maintenance as-prepends 0", + "address-family ipv4 unicast", + "advertise local-labeled-route", + "aigp", + "allowas-in 1", + "as-override", + "bestpath origin-as allow invalid", + "capability orf prefix send", + "default-originate", + "long-lived-graceful-restart capable", + "maximum-prefix 1 75", + "multipath", + "next-hop-self", + "next-hop-unchanged inheritance-disable", + "origin-as validation disable", + "remove-private-AS inbound", + "route-reflector-client", + "send-community-ebgp", + "send-community-gshut-ebgp inheritance-disable", + "send-extended-community-ebgp", + "send-multicast-attributes disable", + "soft-reconfiguration inbound", + "weight 0", + "signalling bgp disable ", + "update out originator-loopcheck disable", + ] + + result = self.execute_module(changed=True) + print(result["commands"]) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_bgp_tmpl_deleted(self): + self.maxDiff = None + run_cfg = dedent( + """\ + router bgp 1 + neighbor-group test + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group test1 + bfd fast-detect + bfd minimum-interval 3 + keychain test + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + advertisement-interval 2 + tcp mss inheritance-disable + local-as 6 + password inheritance-disable + cluster-id 1 + dmz-link-bandwidth + description test + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + address-family ipv4 unicast + origin-as validation disable + bestpath origin-as allow invalid + aigp + weight 0 + send-community-ebgp + multipath + route-reflector-client + allowas-in 1 + maximum-prefix 1 75 + as-override + capability orf prefix send + send-extended-community-ebgp + default-originate + long-lived-graceful-restart capable + next-hop-self + send-community-gshut-ebgp inheritance-disable + soft-reconfiguration inbound + send-multicast-attributes disable + Signalling bgp disable + remove-private-AS inbound + update out originator-loopcheck disable + advertise local-labeled-route + next-hop-unchanged inheritance-disable + ! + ! + + """, + ) + self.get_config.return_value = run_cfg + set_module_args(dict(config=dict(), state="deleted")) + commands = [ + "router bgp 1", + "no neighbor-group test", + "no neighbor-group test1", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_bgp_tmpl_deleted_idempotent(self): + run_cfg = dedent( + """\ + """, + ) + self.get_config.return_value = run_cfg + set_module_args(dict(config=dict(as_number="1"), state="deleted")) + + result = self.execute_module(changed=False) + self.assertEqual(result["commands"], []) + + def test_iosxr_bgp_tmpl_rendered(self): + set_module_args( + dict( + config=dict( + as_number="1", + neighbor=[ + dict( + name="test", + bfd=dict(fast_detect=dict(strict_mode=True)), + advertisement_interval=10, + precedence="critical", + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + advertise=dict(local_labeled_route=dict(set=True)), + ), + ], + ), + dict( + name="test1", + bfd=dict( + fast_detect=dict(set=True), + minimum_interval=3, + ), + keychain=dict(name="test"), + ebgp_multihop=dict(value=255), + egress_engineering=dict(set=True), + precedence="flash", + graceful_maintenance=dict( + as_prepends=dict( + value="0", + ), + set=True, + ), + advertisement_interval=2, + tcp=dict(mss=dict(inheritance_disable=True)), + local_as=dict(no_prepend=dict(replace_as=dict(dual_as=True))), + password=dict(inheritance_disable=True), + cluster_id=1, + dmz_link_bandwidth=dict(set=True), + description="test", + ttl_security=dict(set=True), + local_address_subnet="1.1.1.1/24", + update_source="Loopback919", + idle_watch_time=30, + ignore_connected_check=dict(set=True), + session_open_mode="both", + send_buffer_size=4096, + receive_buffer_size=512, + internal_vpn_client=True, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + origin_as=dict(validation=dict(disable=True)), + bestpath_origin_as_allow_invalid=True, + aigp=dict(set=True), + weight=0, + multipath=True, + send_community_ebgp=dict(set=True), + route_reflector_client=dict(set=True), + allowas_in=dict(value=1), + maximum_prefix=dict( + warning_only=True, + ), + as_override=dict(set=True), + capability_orf_prefix="send", + send_extended_community_ebgp=dict(set=True), + default_originate=dict(set=True), + long_lived_graceful_restart=dict( + capable=True, + ), + next_hop_self=dict(set=True), + send_community_gshut_ebgp=dict(inheritance_disable=True), + soft_reconfiguration=dict(inbound=dict(always=True)), + send_multicast_attributes=dict(disable=True), + signalling=dict(bgp_disable=True), + remove_private_AS=dict( + inbound=True, + entire_aspath=True, + inheritance_disable=True, + ), + next_hop_unchanged=dict(multipath=True), + advertise=dict(local_labeled_route=dict(set=True)), + update=dict( + out_originator_loopcheck_disable=True, + ), + ), + ], + ), + ], + ), + state="rendered", + ), + ) + commands = [ + "router bgp 1", + "neighbor-group test", + "advertisement-interval 10", + "bfd fast-detect strict-mode", + "internal-vpn-client", + "precedence critical", + "address-family ipv4 unicast", + "advertise local-labeled-route", + "neighbor-group test1", + "advertisement-interval 2", + "bfd fast-detect", + "bfd minimum-interval 3", + "dmz-link-bandwidth", + "description test", + "cluster-id 1", + "ebgp-multihop 255", + "egress-engineering", + "idle-watch-time 30 ", + "internal-vpn-client", + "ignore-connected-check", + "keychain test", + "local-as no-prepend replace-as dual-as", + "password inheritance-disable", + "precedence flash", + "receive-buffer-size 512", + "send-buffer-size 4096", + "session-open-mode both", + "tcp mss inheritance-disable", + "update-source Loopback919", + "ttl-security", + "graceful-maintenance", + "graceful-maintenance as-prepends 0", + "address-family ipv4 unicast", + "advertise local-labeled-route", + "aigp", + "allowas-in 1", + "as-override", + "bestpath origin-as allow invalid", + "capability orf prefix send", + "default-originate", + "long-lived-graceful-restart capable", + "maximum-prefix warning-only", + "multipath", + "next-hop-self", + "next-hop-unchanged multipath", + "origin-as validation disable", + "remove-private-AS inbound entire-aspath inheritance-disable", + "route-reflector-client", + "send-community-ebgp", + "send-community-gshut-ebgp inheritance-disable", + "send-extended-community-ebgp", + "send-multicast-attributes disable", + "soft-reconfiguration inbound always", + "weight 0", + "signalling bgp disable ", + "update out originator-loopcheck disable", + ] + + result = self.execute_module(changed=False) + self.assertEqual(sorted(result["rendered"]), sorted(commands)) + + def test_iosxr_bgp_tmpl_replaced(self): + run_cfg = dedent( + """\ + router bgp 1 + neighbor-group test + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group test1 + bfd fast-detect + bfd minimum-interval 3 + keychain test + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + advertisement-interval 2 + tcp mss inheritance-disable + local-as 6 + password inheritance-disable + cluster-id 1 + dmz-link-bandwidth + description test + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + address-family ipv4 unicast + origin-as validation disable + bestpath origin-as allow invalid + aigp + weight 0 + send-community-ebgp + multipath + route-reflector-client + allowas-in 1 + maximum-prefix 1 75 + as-override + capability orf prefix send + send-extended-community-ebgp + default-originate + long-lived-graceful-restart capable + next-hop-self + send-community-gshut-ebgp inheritance-disable + soft-reconfiguration inbound + send-multicast-attributes disable + Signalling bgp disable + remove-private-AS inbound + update out originator-loopcheck disable + advertise local-labeled-route + next-hop-unchanged inheritance-disable + ! + ! + + """, + ) + set_module_args( + dict( + config=dict( + as_number="1", + neighbor=[ + dict( + name="test", + advertisement_interval=11, + internal_vpn_client=True, + ), + dict( + name="test1", + bfd=dict( + minimum_interval=4, + ), + ebgp_multihop=dict(value=254), + egress_engineering=dict(set=True), + precedence="critical", + graceful_maintenance=dict( + as_prepends=dict( + value="4", + ), + set=True, + ), + advertisement_interval=3, + password=dict(encrypted="test"), + cluster_id=3, + description="test1", + ttl_security=dict(set=True), + local_address_subnet="1.1.1.2/24", + update_source="Loopback912", + idle_watch_time=34, + session_open_mode="active-only", + send_buffer_size=4097, + receive_buffer_size=513, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + weight=2, + multipath=True, + allowas_in=dict(value=2), + maximum_prefix=dict( + max_limit=1, + threshold_value=75, + ), + soft_reconfiguration=dict(inbound=dict(always=True)), + remove_private_AS=dict( + inbound=True, + entire_aspath=True, + inheritance_disable=True, + ), + next_hop_unchanged=dict(multipath=True), + ), + ], + ), + ], + ), + state="replaced", + ), + ) + self.get_config.return_value = run_cfg + + commands = [ + "router bgp 1", + "neighbor-group test", + "no bfd fast-detect strict-mode", + "no precedence critical", + "advertisement-interval 11", + "no address-family ipv4 unicast", + "neighbor-group test1", + "no bfd fast-detect", + "no dmz-link-bandwidth", + "no internal-vpn-client", + "no ignore-connected-check", + "no keychain test", + "no local-as 6", + "no local address inheritance-disable", + "no password inheritance-disable", + "no tcp mss inheritance-disable", + "advertisement-interval 3", + "bfd minimum-interval 4", + "description test1", + "cluster-id 3", + "ebgp-multihop 254", + "idle-watch-time 34 ", + "password encrypted test", + "precedence critical", + "receive-buffer-size 513", + "send-buffer-size 4097", + "session-open-mode active-only", + "update-source Loopback912", + "graceful-maintenance as-prepends 4", + "address-family ipv4 unicast", + "no advertise local-labeled-route", + "no aigp", + "no as-override", + "no bestpath origin-as allow invalid", + "no capability orf prefix send", + "no default-originate", + "no long-lived-graceful-restart capable", + "no next-hop-self", + "no next-hop-unchanged inheritance-disable", + "no origin-as validation disable", + "no route-reflector-client", + "no send-community-ebgp", + "no send-community-gshut-ebgp inheritance-disable", + "no send-extended-community-ebgp", + "no send-multicast-attributes disable", + "no signalling bgp disable ", + "no update out originator-loopcheck disable", + "allowas-in 2", + "next-hop-unchanged multipath", + "remove-private-AS inbound entire-aspath inheritance-disable", + "soft-reconfiguration inbound always", + "weight 2", + ] + + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_bgp_tmpl_overridden(self): + run_cfg = dedent( + """\ + router bgp 1 + neighbor-group test + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group test1 + bfd fast-detect + bfd minimum-interval 3 + keychain test + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + advertisement-interval 2 + tcp mss inheritance-disable + local-as 6 + password inheritance-disable + cluster-id 1 + dmz-link-bandwidth + description test + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + address-family ipv4 unicast + origin-as validation disable + bestpath origin-as allow invalid + aigp + weight 0 + send-community-ebgp + multipath + route-reflector-client + allowas-in 1 + maximum-prefix 1 75 + as-override + capability orf prefix send + send-extended-community-ebgp + default-originate + long-lived-graceful-restart capable + next-hop-self + send-community-gshut-ebgp inheritance-disable + soft-reconfiguration inbound + send-multicast-attributes disable + Signalling bgp disable + remove-private-AS inbound + update out originator-loopcheck disable + advertise local-labeled-route + next-hop-unchanged inheritance-disable + ! + ! + + """, + ) + set_module_args( + dict( + config=dict( + as_number="1", + neighbor=[ + dict( + name="test1", + bfd=dict( + minimum_interval=4, + ), + ebgp_multihop=dict(value=254), + egress_engineering=dict(set=True), + precedence="critical", + graceful_maintenance=dict( + as_prepends=dict( + value="4", + ), + set=True, + ), + advertisement_interval=3, + password=dict(encrypted="test"), + cluster_id=3, + description="test1", + ttl_security=dict(set=True), + local_address_subnet="1.1.1.2/24", + update_source="Loopback912", + idle_watch_time=34, + session_open_mode="active-only", + send_buffer_size=4097, + receive_buffer_size=513, + address_family=[ + dict( + afi="ipv4", + safi="unicast", + weight=2, + multipath=True, + allowas_in=dict(value=2), + maximum_prefix=dict( + max_limit=1, + threshold_value=75, + ), + soft_reconfiguration=dict(inbound=dict(always=True)), + remove_private_AS=dict( + inbound=True, + entire_aspath=True, + inheritance_disable=True, + ), + next_hop_unchanged=dict(multipath=True), + ), + ], + ), + ], + ), + state="overridden", + ), + ) + self.get_config.return_value = run_cfg + commands = [ + "router bgp 1", + "no neighbor-group test", + "neighbor-group test1", + "no bfd fast-detect", + "no dmz-link-bandwidth", + "no internal-vpn-client", + "no ignore-connected-check", + "no keychain test", + "no local-as 6", + "no local address inheritance-disable", + "no password inheritance-disable", + "no tcp mss inheritance-disable", + "advertisement-interval 3", + "bfd minimum-interval 4", + "description test1", + "cluster-id 3", + "ebgp-multihop 254", + "idle-watch-time 34 ", + "password encrypted test", + "precedence critical", + "receive-buffer-size 513", + "send-buffer-size 4097", + "session-open-mode active-only", + "update-source Loopback912", + "graceful-maintenance as-prepends 4", + "address-family ipv4 unicast", + "no advertise local-labeled-route", + "no aigp", + "no as-override", + "no bestpath origin-as allow invalid", + "no capability orf prefix send", + "no default-originate", + "no long-lived-graceful-restart capable", + "no next-hop-self", + "no next-hop-unchanged inheritance-disable", + "no origin-as validation disable", + "no route-reflector-client", + "no send-community-ebgp", + "no send-community-gshut-ebgp inheritance-disable", + "no send-extended-community-ebgp", + "no send-multicast-attributes disable", + "no signalling bgp disable ", + "no update out originator-loopcheck disable", + "allowas-in 2", + "next-hop-unchanged multipath", + "remove-private-AS inbound entire-aspath inheritance-disable", + "soft-reconfiguration inbound always", + "weight 2", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_bgp_tmpl_parsed(self): + self.maxDiff = None + set_module_args( + dict( + running_config="router bgp 1\n neighbor-group ********\n " + "bfd fast-detect strict-mode\n update in filtering\n" + " message buffers 0 non-circular\n logging disable\n" + " !\n precedence critical\n timers 0 3 3\n " + "advertisement-interval 10\n maximum-peers 10\n " + "local-address-subnet 1.1.1.5/24\n internal-vpn-client\n" + " address-family ipv4 unicast\n advertise local-labeled-route\n" + " !\n !\n neighbor-group ********1\n bfd fast-detect\n " + "update in filtering\n !\n bfd minimum-interval 3\n " + "capability additional-paths send disable\n keychain ********\n" + " ebgp-multihop 255\n egress-engineering\n precedence flash\n " + "graceful-maintenance\n as-prepends 0\n !\n advertisement-interval 2\n" + " tcp mss inheritance-disable\n local-as 6\n password inheritance-disable\n" + " shutdown inheritance-disable\n maximum-peers 1\n cluster-id 1\n" + " dmz-link-bandwidth\n description ********\n ttl-security\n " + "ebgp-recv-extcommunity-dmz\n ebgp-send-extcommunity-dmz cumulative\n" + " local address inheritance-disable\n update-source Loopback919\n " + "idle-watch-time 30\n enforce-first-as\n ignore-connected-check\n " + "session-open-mode both\n send-buffer-size 4096\n " + "local-address-subnet 1.1.1.1/24\n receive-buffer-size 512\n" + " internal-vpn-client\n address-family ipv4 unicast\n " + "origin-as validation disable\n bestpath origin-as allow invalid\n" + " weight 0\n aigp send med\n send-community-ebgp\n multipath\n" + " route-reflector-client\n allowas-in 1\n " + "encapsulation-type srv6\n maximum-prefix 1 75\n as-override\n capability orf prefix send\n" + " send-extended-community-ebgp\n default-originate\n long-lived-graceful-restart capable\n" + " next-hop-self\n send-community-gshut-ebgp inheritance-disable\n soft-reconfiguration inbound\n" + " site-of-origin 1.1:1\n send-multicast-attributes disable\n Signalling bgp disable\n " + " remove-private-AS inbound\n update out originator-loopcheck disable\n " + " advertise local-labeled-route\n next-hop-unchanged inheritance-disable\n " + " cluster-id allow-equal disable\n ! \n ! " + "\n neighbor 1.1.1.1\n ! " + "\n!", + state="parsed", + ), + ) + result = self.execute_module(changed=False) + parsed_list = { + "as_number": "1", + "neighbor": [ + { + "name": "********", + "bfd": {"fast_detect": {"strict_mode": True}}, + "update": {"in": {"filtering": {"logging": {"disable": True}}}}, + "precedence": "critical", + "advertisement_interval": 10, + "maximum_peers": 10, + "internal_vpn_client": True, + "address_family": [ + { + "afi": "ipv4", + "safi": "unicast", + "advertise": {"local_labeled_route": {"set": True}}, + }, + ], + }, + { + "name": "********1", + "bfd": {"fast_detect": {"set": True}, "minimum_interval": 3}, + "capability": {"additional_paths": {"send": {"disable": True}}}, + "keychain": {"name": "********"}, + "ebgp_multihop": {"value": 255}, + "egress_engineering": {"set": True}, + "precedence": "flash", + "graceful_maintenance": {"set": True, "as_prepends": {"value": 0}}, + "advertisement_interval": 2, + "tcp": {"mss": {"inheritance_disable": True}}, + "local_as": {"value": 6}, + "password": {"inheritance_disable": True}, + "maximum_peers": 1, + "cluster_id": "1", + "dmz_link_bandwidth": {"set": True}, + "description": "********", + "ttl_security": {"set": True}, + "ebgp_recv_extcommunity_dmz": {"set": True}, + "local": {"address": {"inheritance_disable": True}}, + "update_source": "Loopback919", + "idle_watch_time": 30, + "ignore_connected_check": {"set": True}, + "session_open_mode": "both", + "send_buffer_size": 4096, + "receive_buffer_size": 512, + "internal_vpn_client": True, + "address_family": [ + { + "afi": "ipv4", + "safi": "unicast", + "origin_as": {"validation": {"disable": True}}, + "bestpath_origin_as_allow_invalid": True, + "weight": 0, + "aigp": {"send_med": {"set": True}}, + "send_community_ebgp": {"set": True}, + "multipath": True, + "route_reflector_client": {"set": True}, + "allowas_in": {"value": 1}, + "encapsulation_type_srv6": True, + "maximum_prefix": {"max_limit": 1, "threshold_value": 75}, + "as_override": {"set": True}, + "capability_orf_prefix": "send", + "send_extended_community_ebgp": {"set": True}, + "default_originate": {"set": True}, + "long_lived_graceful_restart": {"capable": True}, + "next_hop_self": {"set": True}, + "send_community_gshut_ebgp": {"inheritance_disable": True}, + "soft_reconfiguration": {"inbound": {"set": True}}, + "send_multicast_attributes": {"disable": True}, + "signalling": {"bgp_disable": True}, + "remove_private_AS": {"inbound": True}, + "update": {"out_originator_loopcheck_disable": True}, + "advertise": {"local_labeled_route": {"set": True}}, + "next_hop_unchanged": {"inheritance_disable": True}, + }, + ], + }, + ], + } + self.assertEqual(parsed_list, result["parsed"]) + + def test_iosxr_bgp_tmpl_gathered(self): + self.maxDiff = None + run_cfg = dedent( + """\ + router bgp 1 + neighbor-group test + bfd fast-detect strict-mode + precedence critical + advertisement-interval 10 + internal-vpn-client + address-family ipv4 unicast + advertise local-labeled-route + ! + ! + neighbor-group test1 + bfd fast-detect + bfd minimum-interval 3 + keychain test + ebgp-multihop 255 + egress-engineering + precedence flash + graceful-maintenance + as-prepends 0 + ! + advertisement-interval 2 + tcp mss inheritance-disable + local-as 6 + password inheritance-disable + cluster-id 1 + dmz-link-bandwidth + description test + ttl-security + local address inheritance-disable + update-source Loopback919 + idle-watch-time 30 + ignore-connected-check + session-open-mode both + send-buffer-size 4096 + receive-buffer-size 512 + internal-vpn-client + address-family ipv4 unicast + origin-as validation disable + bestpath origin-as allow invalid + aigp + weight 0 + send-community-ebgp + multipath + route-reflector-client + allowas-in 1 + maximum-prefix 1 75 + as-override + capability orf prefix send + send-extended-community-ebgp + default-originate + long-lived-graceful-restart capable + next-hop-self + send-community-gshut-ebgp inheritance-disable + soft-reconfiguration inbound + send-multicast-attributes disable + Signalling bgp disable + remove-private-AS inbound + update out originator-loopcheck disable + advertise local-labeled-route + next-hop-unchanged inheritance-disable + ! + ! + + """, + ) + self.get_config.return_value = run_cfg + set_module_args(dict(state="gathered")) + gathered = { + "as_number": "1", + "neighbor": [ + { + "name": "test", + "bfd": {"fast_detect": {"strict_mode": True}}, + "precedence": "critical", + "advertisement_interval": 10, + "internal_vpn_client": True, + "address_family": [ + { + "afi": "ipv4", + "safi": "unicast", + "advertise": {"local_labeled_route": {"set": True}}, + }, + ], + }, + { + "name": "test1", + "bfd": {"fast_detect": {"set": True}, "minimum_interval": 3}, + "keychain": {"name": "test"}, + "ebgp_multihop": {"value": 255}, + "egress_engineering": {"set": True}, + "precedence": "flash", + "graceful_maintenance": {"set": True, "as_prepends": {"value": 0}}, + "advertisement_interval": 2, + "tcp": {"mss": {"inheritance_disable": True}}, + "local_as": {"value": 6}, + "password": {"inheritance_disable": True}, + "cluster_id": "1", + "dmz_link_bandwidth": {"set": True}, + "description": "test", + "ttl_security": {"set": True}, + "local": {"address": {"inheritance_disable": True}}, + "update_source": "Loopback919", + "idle_watch_time": 30, + "ignore_connected_check": {"set": True}, + "session_open_mode": "both", + "send_buffer_size": 4096, + "receive_buffer_size": 512, + "internal_vpn_client": True, + "address_family": [ + { + "afi": "ipv4", + "safi": "unicast", + "origin_as": {"validation": {"disable": True}}, + "bestpath_origin_as_allow_invalid": True, + "aigp": {"set": True}, + "weight": 0, + "send_community_ebgp": {"set": True}, + "multipath": True, + "route_reflector_client": {"set": True}, + "allowas_in": {"value": 1}, + "maximum_prefix": {"max_limit": 1, "threshold_value": 75}, + "as_override": {"set": True}, + "capability_orf_prefix": "send", + "send_extended_community_ebgp": {"set": True}, + "default_originate": {"set": True}, + "long_lived_graceful_restart": {"capable": True}, + "next_hop_self": {"set": True}, + "send_community_gshut_ebgp": {"inheritance_disable": True}, + "soft_reconfiguration": {"inbound": {"set": True}}, + "send_multicast_attributes": {"disable": True}, + "signalling": {"bgp_disable": True}, + "remove_private_AS": {"inbound": True}, + "update": {"out_originator_loopcheck_disable": True}, + "advertise": {"local_labeled_route": {"set": True}}, + "next_hop_unchanged": {"inheritance_disable": True}, + }, + ], + }, + ], + } + result = self.execute_module(changed=False) + self.assertEqual(gathered, result["gathered"]) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_command.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_command.py index feb708769..cd691d6c4 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_command.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_command.py @@ -29,7 +29,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrCommandModule(TestIosxrModule): - module = iosxr_command def setUp(self): diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_config.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_config.py index bbfdcb3e6..9ac6866af 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_config.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_config.py @@ -31,7 +31,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrConfigModule(TestIosxrModule): - module = iosxr_config def setUp(self): @@ -282,6 +281,41 @@ class TestIosxrConfigModule(TestIosxrModule): self.execute_module(changed=True, commands=commands, sort=False) + def test_iosxr_replace_block_src(self): + src = load_fixture("iosxr_config_src.cfg") + set_module_args(dict(replace="block", src=src)) + self.conn.get_diff = MagicMock( + return_value=self.cliconf_obj.get_diff(src, self.running_config), + ) + commands = [ + "hostname foo", + "interface GigabitEthernet0/0", + "no ip address", + ] + self.execute_module(changed=True, commands=commands) + + def test_iosxr_replace_block_lines(self): + lines = [ + "ip address 1.2.3.4 255.255.255.0", + "description test string", + "shutdown", + ] + parents = ["interface GigabitEthernet0/0"] + set_module_args(dict(lines=lines, parents=parents, replace="block")) + commands = parents + lines + module = MagicMock() + module.params = {"lines": lines, "parents": parents, "src": None} + candidate_config = iosxr_config.get_candidate(module) + self.conn.get_diff = MagicMock( + return_value=self.cliconf_obj.get_diff( + candidate_config, + self.running_config, + diff_match="none", + path=parents, + ), + ) + self.execute_module(changed=True, commands=commands, sort=False) + def test_iosxr_config_src_and_lines_fails(self): args = dict(src="foo", lines="foo") set_module_args(args) @@ -302,7 +336,7 @@ class TestIosxrConfigModule(TestIosxrModule): set_module_args(args) self.execute_module(failed=True) - def test_iosxr_config_replace_block_requires_lines(self): + def test_iosxr_config_replace_block_requires_lines_or_src(self): args = dict(replace="block") set_module_args(args) self.execute_module(failed=True) @@ -311,3 +345,17 @@ class TestIosxrConfigModule(TestIosxrModule): args = dict(replace="config") set_module_args(args) self.execute_module(failed=True) + + def test_iosxr_config_updates(self): + src = load_fixture("iosxr_config_src.cfg") + set_module_args(dict(src=src)) + self.conn.get_diff = MagicMock( + return_value=self.cliconf_obj.get_diff(src, self.running_config), + ) + commands = [ + "hostname foo", + "interface GigabitEthernet0/0", + "no ip address", + ] + result = self.execute_module(changed=True, commands=commands) + self.assertEqual(sorted(result["updates"]), sorted(commands)) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_facts.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_facts.py index 7848f798f..da7d597ae 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_facts.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_facts.py @@ -31,7 +31,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrFacts(TestIosxrModule): - module = iosxr_facts def setUp(self): @@ -118,3 +117,17 @@ class TestIosxrFacts(TestIosxrModule): self.assertIn("config", ansible_facts["ansible_net_gather_subset"]) self.assertEqual("iosxr01", ansible_facts["ansible_net_hostname"]) self.assertIn("ansible_net_config", ansible_facts) + + def test_iosxr_facts_cpu_utilization(self): + set_module_args({"gather_subset": "hardware"}) + result = self.execute_module() + ansible_facts = result["ansible_facts"] + cpu_utilization_data = { + "one_minute": 21, + "five_minutes": 13, + "fifteen_minutes": 8, + } + self.assertEqual( + ansible_facts["ansible_net_cpu_utilization"], + cpu_utilization_data, + ) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_interfaces.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_interfaces.py index 4b7a0bcdd..bff925c60 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_interfaces.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_interfaces.py @@ -68,14 +68,14 @@ class TestIosxrInterfacesModule(TestIosxrModule): self.mock_load_config.stop() self.mock_execute_show_command.stop() - def _prepare(self): + def _prepare(self, interface_conf): def load_from_file(*args, **kwargs): - return load_fixture("iosxr_interface_config.cfg") + return load_fixture(interface_conf) self.execute_show_command.side_effect = load_from_file def test_iosxr_interfaces_merged_idempotent(self): - self._prepare() + self._prepare("iosxr_interface_config.cfg") set_module_args( dict( config=[ @@ -138,7 +138,7 @@ class TestIosxrInterfacesModule(TestIosxrModule): self.assertEqual(sorted(result["commands"]), sorted(commands)) def test_iosxr_interfaces_replaced(self): - self._prepare() + self._prepare("iosxr_interface_config.cfg") set_module_args( dict( config=[ @@ -168,7 +168,7 @@ class TestIosxrInterfacesModule(TestIosxrModule): self.assertEqual(sorted(result["commands"]), sorted(commands)) def test_iosxr_interfaces_deleted(self): - self._prepare() + self._prepare("iosxr_interface_config.cfg") set_module_args(dict(state="deleted")) commands = [ @@ -203,6 +203,13 @@ class TestIosxrInterfacesModule(TestIosxrModule): duplex="full", speed=100, ), + dict( + name="FourHundredGigE0/0/0/2", + description="Configured and Merged by Ansible-Network", + mtu=9216, + enabled=True, + duplex="full", + ), ], state="rendered", ), @@ -220,6 +227,11 @@ class TestIosxrInterfacesModule(TestIosxrModule): "speed 100", "duplex full", "shutdown", + "interface FourHundredGigE0/0/0/2", + "description Configured and Merged by Ansible-Network", + "mtu 9216", + "duplex full", + "no shutdown", ] result = self.execute_module(changed=False) self.assertEqual(sorted(result["rendered"]), sorted(commands)) @@ -256,7 +268,7 @@ class TestIosxrInterfacesModule(TestIosxrModule): def test_iosxr_interfaces_overridden(self): self.maxDiff = None - self._prepare() + self._prepare("iosxr_interface_config.cfg") set_module_args( dict( config=[ @@ -286,3 +298,23 @@ class TestIosxrInterfacesModule(TestIosxrModule): result = self.execute_module(changed=True) self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_interfaces_gathered(self): + self._prepare("iosxr_interface_gathered.cfg") + set_module_args(dict(state="gathered")) + result = self.execute_module(changed=False) + gathered = [ + { + "name": "GigabitEthernet0/0/0/5", + "description": "RTI-DSKMPLS-LP201 #G0/0", + "enabled": True, + "mtu": 9216, + }, + { + "name": "GigabitEthernet0/0/0/6", + "description": "RTI-DSKMPLS-LP301 #G0/1", + "enabled": True, + "mtu": 9216, + }, + ] + self.assertEqual(gathered, result["gathered"]) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py index 100538780..f28561777 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l2_interfaces.py @@ -244,3 +244,82 @@ class TestIosxrL2InterfacesModule(TestIosxrModule): result = self.execute_module(changed=True) self.assertEqual(sorted(result["commands"]), sorted(commands)) + + +class TestIosxrL2InterfacesModule1(TestIosxrModule): + module = iosxr_l2_interfaces + + def setUp(self): + super(TestIosxrL2InterfacesModule1, self).setUp() + + self.mock_get_config = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config", + ) + self.get_config = self.mock_get_config.start() + + self.mock_load_config = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config", + ) + self.load_config = self.mock_load_config.start() + + self.mock_get_resource_connection_config = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base.get_resource_connection", + ) + self.get_resource_connection_config = self.mock_get_resource_connection_config.start() + + self.mock_get_resource_connection_facts = patch( + "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts.get_resource_connection", + ) + self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() + self.mock_get_os_version = patch( + "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.config.l2_interfaces.l2_interfaces.get_os_version", + ) + self.get_os_version = self.mock_get_os_version.start() + self.get_os_version.return_value = "6.1.3" + self.mock_get_os_version1 = patch( + "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.l2_interfaces.l2_interfaces.get_os_version", + ) + self.get_os_version1 = self.mock_get_os_version1.start() + self.get_os_version1.return_value = "6.1.3" + self.mock_execute_show_command = patch( + "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.l2_interfaces.l2_interfaces.L2_InterfacesFacts.get_config", + ) + self.execute_show_command = self.mock_execute_show_command.start() + + def tearDown(self): + super(TestIosxrL2InterfacesModule1, self).tearDown() + self.mock_get_resource_connection_config.stop() + self.mock_get_resource_connection_facts.stop() + self.mock_get_config.stop() + self.mock_get_os_version.stop() + self.get_os_version1.stop() + self.mock_load_config.stop() + self.mock_execute_show_command.stop() + + def _prepare(self): + def load_from_file(*args, **kwargs): + return load_fixture("iosxr_l2_interface_config.cfg") + + self.execute_show_command.side_effect = load_from_file + + def test_iosxr_l2_interfaces_qvlan_parsed(self): + self.get_os_version.return_value = "6.1.3" + self.maxDiff = None + set_module_args( + dict( + running_config="interface Bundle-Ether399.2900\n l2transport\n encapsulation dot1q 2900-2902\n ", + state="parsed", + ), + ) + result = self.execute_module(changed=False) + print(result["parsed"]) + parsed_list = [ + { + "name": "Bundle-Ether399.2900", + "l2transport": True, + "qvlan": [ + "2900-2902", + ], + }, + ] + self.assertEqual(parsed_list, result["parsed"]) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py index 5fab9f7ea..071b16b8f 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_l3_interfaces.py @@ -67,14 +67,14 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): self.mock_load_config.stop() self.mock_execute_show_command.stop() - def _prepare(self): + def _prepare(self, l3_interface_config): def load_from_file(*args, **kwargs): - return load_fixture("iosxr_l3_interface_config.cfg") + return load_fixture(l3_interface_config) self.execute_show_command.side_effect = load_from_file def test_iosxr_l3_interfaces_merged_idempotent(self): - self._prepare() + self._prepare("iosxr_l3_interface_config.cfg") set_module_args( dict( config=[ @@ -128,7 +128,7 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): self.assertEqual(sorted(result["commands"]), sorted(commands)) def test_iosxr_l3_interfaces_replaced(self): - self._prepare() + self._prepare("iosxr_l3_interface_config.cfg") set_module_args( dict( config=[ @@ -153,7 +153,7 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): self.assertEqual(sorted(result["commands"]), sorted(commands)) def test_iosxr_l3_interfaces_deleted(self): - self._prepare() + self._prepare("iosxr_l3_interface_config.cfg") set_module_args(dict(state="deleted")) commands = [ @@ -213,14 +213,14 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): parsed_list = [ { "name": "GigabitEthernet0/0/0/0", - "ipv4": [{"address": "198.51.100.1 255.255.255.0"}], + "ipv4": [{"address": "198.51.100.1/24"}], "ipv6": [{"address": "2001:db8::/32"}], }, { "name": "GigabitEthernet0/0/0/1", "ipv4": [ - {"address": "192.0.2.1 255.255.255.0"}, - {"address": "192.0.2.2 255.255.255.0", "secondary": True}, + {"address": "192.0.2.1/24"}, + {"address": "192.0.2.2/24", "secondary": True}, ], }, ] @@ -228,7 +228,7 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): def test_iosxr_l3_interfaces_overridden(self): self.maxDiff = None - self._prepare() + self._prepare("iosxr_l3_interface_config.cfg") set_module_args( dict( config=[ @@ -253,3 +253,13 @@ class TestIosxrL3InterfacesModule(TestIosxrModule): result = self.execute_module(changed=True) self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_3_interfaces_gathered(self): + self._prepare("iosxr_interface_gathered.cfg") + set_module_args(dict(state="gathered")) + result = self.execute_module(changed=False) + gathered = [ + {"name": "GigabitEthernet0/0/0/5", "ipv4": [{"address": "10.255.2.9/30"}]}, + {"name": "GigabitEthernet0/0/0/6", "ipv4": [{"address": "10.255.2.17/30"}]}, + ] + self.assertEqual(gathered, result["gathered"]) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lacp.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lacp.py index e4c9c467e..23c4b8cd9 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lacp.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lacp.py @@ -91,3 +91,87 @@ class TestIosxrLacpModule(TestIosxrModule): ] result = self.execute_module(changed=True) self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_lacp_merged_idempotent(self): + self._prepare() + set_module_args( + dict( + config=dict( + system=dict( + priority=12, + mac=dict(address="00c1.4c00.bd15"), + ), + ), + state="merged", + ), + ) + self.execute_module(changed=False, commands=[]) + + def test_iosxr_lacp_replaced(self): + self._prepare() + set_module_args( + dict( + config=dict( + system=dict( + priority=11, + mac=dict(address="00c1.4c00.bd12"), + ), + ), + state="replaced", + ), + ) + commands = [ + "lacp system mac 00c1.4c00.bd12", + "lacp system priority 11", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_lacp_overridden(self): + self._prepare() + set_module_args( + dict( + config=dict( + system=dict( + priority=11, + mac=dict(address="00c1.4c00.bd12"), + ), + ), + state="overridden", + ), + ) + commands = [ + "lacp system mac 00c1.4c00.bd12", + "lacp system priority 11", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_lacp_deleted(self): + self._prepare() + set_module_args(dict(state="deleted")) + commands = [ + "no lacp system mac", + "no lacp system priority", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) + + def test_iosxr_lacp_rendered(self): + set_module_args( + dict( + config=dict( + system=dict( + priority=11, + mac=dict(address="00c1.4c00.bd12"), + ), + ), + state="rendered", + ), + ) + commands = [ + "lacp system mac 00c1.4c00.bd12", + "lacp system priority 11", + ] + result = self.execute_module(changed=False) + self.assertEqual(sorted(result["rendered"]), sorted(commands)) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py index 65f749ec8..4830058df 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_lldp_global.py @@ -204,3 +204,27 @@ class TestIosxrLldpModule(TestIosxrModule): "tlv_select": {"system_description": False}, } self.assertEqual(parsed_list, result["parsed"]) + + def test_iosxr_lldp_global_overridden(self): + self._prepare() + set_module_args( + dict( + config=dict( + holdtime=100, + tlv_select=dict( + management_address=False, + system_description=False, + port_description=False, + ), + ), + state="overridden", + ), + ) + commands = [ + "no lldp reinit 2", + "no lldp subinterfaces enable", + "no lldp timer 3000", + "lldp tlv-select port-description disable", + ] + result = self.execute_module(changed=True) + self.assertEqual(sorted(result["commands"]), sorted(commands)) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_netconf.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_netconf.py index bbd61050a..727752948 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_netconf.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_netconf.py @@ -29,7 +29,6 @@ from .iosxr_module import TestIosxrModule class TestIosxrNetconfModule(TestIosxrModule): - module = iosxr_netconf def setUp(self): diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py index 8c9769445..5b967be00 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospf_interfaces.py @@ -43,11 +43,6 @@ class TestIosxrOspf_InterfacesModule(TestIosxrModule): ) self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - self.mock_edit_config = patch( - "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers.CliProvider.edit_config", - ) - self.edit_config = self.mock_edit_config.start() - self.mock_execute_show_command = patch( "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.ospf_interfaces.ospf_interfaces." "Ospf_interfacesFacts.get_ospf_interfaces", @@ -58,7 +53,6 @@ class TestIosxrOspf_InterfacesModule(TestIosxrModule): super(TestIosxrOspf_InterfacesModule, self).tearDown() self.mock_get_resource_connection_config.stop() self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() self.mock_get_config.stop() self.mock_load_config.stop() self.mock_execute_show_command.stop() diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py index 6d00a8250..b51727dbd 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv2.py @@ -43,11 +43,6 @@ class TestIosxrOspfV2Module(TestIosxrModule): ) self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - self.mock_edit_config = patch( - "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers.CliProvider.edit_config", - ) - self.edit_config = self.mock_edit_config.start() - self.mock_execute_show_command = patch( "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.ospfv2.ospfv2." "Ospfv2Facts.get_ospfv2_data", @@ -58,7 +53,6 @@ class TestIosxrOspfV2Module(TestIosxrModule): super(TestIosxrOspfV2Module, self).tearDown() self.mock_get_resource_connection_config.stop() self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() self.mock_get_config.stop() self.mock_load_config.stop() self.mock_execute_show_command.stop() diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py index 1b8e491fd..23c9d071b 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_ospfv3.py @@ -43,11 +43,6 @@ class TestIosxrOspfV3Module(TestIosxrModule): ) self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start() - self.mock_edit_config = patch( - "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.providers.providers.CliProvider.edit_config", - ) - self.edit_config = self.mock_edit_config.start() - self.mock_execute_show_command = patch( "ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.facts.ospfv3.ospfv3." "Ospfv3Facts.get_ospfv3_data", @@ -58,7 +53,6 @@ class TestIosxrOspfV3Module(TestIosxrModule): super(TestIosxrOspfV3Module, self).tearDown() self.mock_get_resource_connection_config.stop() self.mock_get_resource_connection_facts.stop() - self.mock_edit_config.stop() self.mock_get_config.stop() self.mock_load_config.stop() self.mock_execute_show_command.stop() @@ -180,10 +174,7 @@ class TestIosxrOspfV3Module(TestIosxrModule): ) commands = [ - "router ospfv3 30", - "no cost 2", - "no default-metric 10", - "no area 11 default-cost 5", + "no router ospfv3 30", "router ospfv3 40", "cost 2", "default-metric 10", @@ -218,10 +209,7 @@ class TestIosxrOspfV3Module(TestIosxrModule): ), ) commands = [ - "router ospfv3 30", - "no cost 2", - "no default-metric 10", - "no area 11 default-cost 5", + "no router ospfv3 30", ] result = self.execute_module(changed=True) self.assertEqual(sorted(result["commands"]), sorted(commands)) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_static_routes.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_static_routes.py index ba91d7f3d..a185b0c4f 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_static_routes.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_static_routes.py @@ -378,3 +378,37 @@ class TestIosxrStaticRoutesModule(TestIosxrModule): }, ] self.assertEqual(parsed_list, result["parsed"]) + + def test_iosxr_static_routes_delete_specific_static_route(self): + set_module_args( + dict( + config=[ + dict( + address_families=[ + dict( + afi="ipv6", + safi="unicast", + routes=[ + dict( + dest="2001:db8:1000::/36", + next_hops=[ + dict( + interface="FastEthernet0/0/0/7", + description="DC", + ), + ], + ), + ], + ), + ], + ), + ], + state="deleted", + ), + ) + commands = [ + "router static", + "address-family ipv6 unicast", + "no 2001:db8:1000::/36 FastEthernet0/0/0/7", + ] + self.execute_module(changed=True, commands=commands) diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_system.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_system.py index 4e09671e4..253725979 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_system.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_system.py @@ -29,7 +29,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrSystemModule(TestIosxrModule): - module = iosxr_system def setUp(self): diff --git a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_user.py b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_user.py index 3bb6f5042..0d783d4cd 100644 --- a/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_user.py +++ b/ansible_collections/cisco/iosxr/tests/unit/modules/network/iosxr/test_iosxr_user.py @@ -29,7 +29,6 @@ from .iosxr_module import TestIosxrModule, load_fixture class TestIosxrUserModule(TestIosxrModule): - module = iosxr_user def setUp(self): |