From a453ac31f3428614cceb99027f8efbdb9258a40b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 14 May 2024 22:03:01 +0200 Subject: Adding upstream version 2.10.7+merged+base+2.10.8+dfsg. Signed-off-by: Daniel Baumann --- .../ansible_collections/cisco/ios/.gitignore | 3 + .../ansible_collections/cisco/ios/.yamllint | 15 + .../ansible_collections/cisco/ios/FILES.json | 7614 +++++++++++++++++ .../ansible_collections/cisco/ios/LICENSE | 674 ++ .../ansible_collections/cisco/ios/MANIFEST.json | 35 + .../ansible_collections/cisco/ios/README.md | 150 + .../ansible_collections/cisco/ios/bindep.txt | 6 + .../cisco/ios/changelogs/CHANGELOG.rst | 162 + .../cisco/ios/changelogs/changelog.yaml | 189 + .../cisco/ios/changelogs/config.yaml | 30 + .../103_fix_l2_interfaces_traceback_error.yaml | 3 + .../fragments/124_resolved_ios_acls_issue.yaml | 3 + .../fragments/132_update_ios_l3_doc_issue.yaml | 3 + ...135_accept_list_of_dict_for_ospfv2_network.yaml | 3 + .../137_ios_static_routes_idempotency_issue.yaml | 3 + .../fragments/141_add_int_virt_template_issue.yml | 3 + .../fragments/144_add_interface_tunnel_issue.yml | 3 + .../146_add_cdp_platform_info_to_ios_facts.yaml | 3 + .../148_add_bgp_global_resource_module.yaml | 3 + .../fragments/148_add_ospv3_resource_module.yaml | 3 + .../161_static_route_facts_cmd_update.yaml | 3 + .../165_enable_ospfv3_integration_tests.yaml | 3 + .../175_fix_ios_vlans_when_name_had_remote.yaml | 3 + .../192_add_ospf_interfaces_resource_module.yaml | 3 + ...x_ios_ospf_interfaces_authentication_param.yaml | 3 + ...cls_module_to_use_resource_module_approach.yaml | 3 + .../fragments/216_fix_command_rejected_issue.yml | 3 + .../223_fix_static_routes_facts_parsing.yaml | 3 + .../ios/changelogs/fragments/228_ios_ping.yaml | 3 + .../51-virtual-switch-system-detection.yaml | 3 + .../63_support_for_very_long_vlan_name.yaml | 3 + ...terface_in_description_resulted_in_failure.yaml | 3 + .../ios/changelogs/fragments/command-dicts.yaml | 3 + .../ios/changelogs/fragments/galaxy-version.yaml | 3 + .../fragments/ios_config_diff_doc_update.yaml | 4 + .../ios/changelogs/fragments/upcap_ansible.yaml | 4 + .../update_resource_module_doc_discrepancy.yaml | 3 + .../docs/cisco.ios.ios_acl_interfaces_module.rst | 740 ++ .../cisco/ios/docs/cisco.ios.ios_acls_module.rst | 4557 ++++++++++ .../cisco/ios/docs/cisco.ios.ios_banner_module.rst | 326 + .../ios/docs/cisco.ios.ios_bgp_global_module.rst | 8801 ++++++++++++++++++++ .../cisco/ios/docs/cisco.ios.ios_bgp_module.rst | 1131 +++ .../cisco/ios/docs/cisco.ios.ios_cliconf.rst | 43 + .../ios/docs/cisco.ios.ios_command_module.rst | 404 + .../cisco/ios/docs/cisco.ios.ios_config_module.rst | 755 ++ .../cisco/ios/docs/cisco.ios.ios_facts_module.rst | 626 ++ .../ios/docs/cisco.ios.ios_interface_module.rst | 789 ++ .../ios/docs/cisco.ios.ios_interfaces_module.rst | 700 ++ .../ios/docs/cisco.ios.ios_l2_interface_module.rst | 542 ++ .../docs/cisco.ios.ios_l2_interfaces_module.rst | 750 ++ .../ios/docs/cisco.ios.ios_l3_interface_module.rst | 449 + .../docs/cisco.ios.ios_l3_interfaces_module.rst | 760 ++ .../docs/cisco.ios.ios_lacp_interfaces_module.rst | 615 ++ .../cisco/ios/docs/cisco.ios.ios_lacp_module.rst | 352 + .../docs/cisco.ios.ios_lag_interfaces_module.rst | 658 ++ .../ios/docs/cisco.ios.ios_linkagg_module.rst | 467 ++ .../ios/docs/cisco.ios.ios_lldp_global_module.rst | 620 ++ .../docs/cisco.ios.ios_lldp_interfaces_module.rst | 814 ++ .../cisco/ios/docs/cisco.ios.ios_lldp_module.rst | 278 + .../ios/docs/cisco.ios.ios_logging_module.rst | 541 ++ .../cisco/ios/docs/cisco.ios.ios_ntp_module.rst | 411 + .../docs/cisco.ios.ios_ospf_interfaces_module.rst | 2223 +++++ .../cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst | 5254 ++++++++++++ .../cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst | 7255 ++++++++++++++++ .../cisco/ios/docs/cisco.ios.ios_ping_module.rst | 463 + .../ios/docs/cisco.ios.ios_static_route_module.rst | 640 ++ .../docs/cisco.ios.ios_static_routes_module.rst | 1048 +++ .../cisco/ios/docs/cisco.ios.ios_system_module.rst | 389 + .../cisco/ios/docs/cisco.ios.ios_user_module.rst | 785 ++ .../cisco/ios/docs/cisco.ios.ios_vlan_module.rst | 539 ++ .../cisco/ios/docs/cisco.ios.ios_vlans_module.rst | 883 ++ .../cisco/ios/docs/cisco.ios.ios_vrf_module.rst | 690 ++ .../ansible_collections/cisco/ios/meta/runtime.yml | 232 + .../cisco/ios/plugins/action/__init__.py | 0 .../cisco/ios/plugins/action/ios.py | 135 + .../cisco/ios/plugins/cliconf/__init__.py | 0 .../cisco/ios/plugins/cliconf/ios.py | 464 ++ .../cisco/ios/plugins/doc_fragments/__init__.py | 0 .../cisco/ios/plugins/doc_fragments/ios.py | 81 + .../cisco/ios/plugins/module_utils/__init__.py | 0 .../plugins/module_utils/network/ios/__init__.py | 0 .../module_utils/network/ios/argspec/__init__.py | 0 .../network/ios/argspec/acl_interfaces/__init__.py | 0 .../ios/argspec/acl_interfaces/acl_interfaces.py | 83 + .../network/ios/argspec/acls/__init__.py | 0 .../module_utils/network/ios/argspec/acls/acls.py | 404 + .../network/ios/argspec/bgp_global/__init__.py | 0 .../network/ios/argspec/bgp_global/bgp_global.py | 910 ++ .../network/ios/argspec/facts/__init__.py | 0 .../network/ios/argspec/facts/facts.py | 27 + .../network/ios/argspec/interfaces/__init__.py | 0 .../network/ios/argspec/interfaces/interfaces.py | 64 + .../network/ios/argspec/l2_interfaces/__init__.py | 0 .../ios/argspec/l2_interfaces/l2_interfaces.py | 80 + .../network/ios/argspec/l3_interfaces/__init__.py | 0 .../ios/argspec/l3_interfaces/l3_interfaces.py | 75 + .../network/ios/argspec/lacp/__init__.py | 0 .../module_utils/network/ios/argspec/lacp/lacp.py | 64 + .../ios/argspec/lacp_interfaces/__init__.py | 0 .../ios/argspec/lacp_interfaces/lacp_interfaces.py | 66 + .../network/ios/argspec/lag_interfaces/__init__.py | 0 .../ios/argspec/lag_interfaces/lag_interfaces.py | 79 + .../network/ios/argspec/lldp_global/__init__.py | 0 .../network/ios/argspec/lldp_global/lldp_global.py | 74 + .../ios/argspec/lldp_interfaces/__init__.py | 0 .../ios/argspec/lldp_interfaces/lldp_interfaces.py | 73 + .../ios/argspec/ospf_interfaces/__init__.py | 0 .../ios/argspec/ospf_interfaces/ospf_interfaces.py | 200 + .../network/ios/argspec/ospfv2/__init__.py | 0 .../network/ios/argspec/ospfv2/ospfv2.py | 547 ++ .../network/ios/argspec/ospfv3/__init__.py | 0 .../network/ios/argspec/ospfv3/ospfv3.py | 807 ++ .../network/ios/argspec/static_routes/__init__.py | 0 .../ios/argspec/static_routes/static_routes.py | 100 + .../network/ios/argspec/vlans/__init__.py | 0 .../network/ios/argspec/vlans/vlans.py | 71 + .../module_utils/network/ios/config/__init__.py | 0 .../network/ios/config/acl_interfaces/__init__.py | 0 .../ios/config/acl_interfaces/acl_interfaces.py | 415 + .../network/ios/config/acls/__init__.py | 0 .../module_utils/network/ios/config/acls/acls.py | 301 + .../network/ios/config/bgp_global/__init__.py | 0 .../network/ios/config/bgp_global/bgp_global.py | 452 + .../network/ios/config/interfaces/__init__.py | 0 .../network/ios/config/interfaces/interfaces.py | 353 + .../network/ios/config/l2_interfaces/__init__.py | 0 .../ios/config/l2_interfaces/l2_interfaces.py | 478 ++ .../network/ios/config/l3_interfaces/__init__.py | 0 .../ios/config/l3_interfaces/l3_interfaces.py | 435 + .../network/ios/config/lacp/__init__.py | 0 .../module_utils/network/ios/config/lacp/lacp.py | 224 + .../network/ios/config/lacp_interfaces/__init__.py | 0 .../ios/config/lacp_interfaces/lacp_interfaces.py | 314 + .../network/ios/config/lag_interfaces/__init__.py | 0 .../ios/config/lag_interfaces/lag_interfaces.py | 404 + .../network/ios/config/lldp_global/__init__.py | 0 .../network/ios/config/lldp_global/lldp_global.py | 275 + .../network/ios/config/lldp_interfaces/__init__.py | 0 .../ios/config/lldp_interfaces/lldp_interfaces.py | 328 + .../network/ios/config/ospf_interfaces/__init__.py | 0 .../ios/config/ospf_interfaces/ospf_interfaces.py | 165 + .../network/ios/config/ospfv2/__init__.py | 0 .../network/ios/config/ospfv2/ospfv2.py | 225 + .../network/ios/config/ospfv3/__init__.py | 0 .../network/ios/config/ospfv3/ospfv3.py | 324 + .../network/ios/config/static_routes/__init__.py | 0 .../ios/config/static_routes/static_routes.py | 713 ++ .../network/ios/config/vlans/__init__.py | 0 .../module_utils/network/ios/config/vlans/vlans.py | 337 + .../module_utils/network/ios/facts/__init__.py | 0 .../network/ios/facts/acl_interfaces/__init__.py | 0 .../ios/facts/acl_interfaces/acl_interfaces.py | 133 + .../network/ios/facts/acls/__init__.py | 0 .../module_utils/network/ios/facts/acls/acls.py | 127 + .../network/ios/facts/bgp_global/__init__.py | 0 .../network/ios/facts/bgp_global/bgp_global.py | 97 + .../module_utils/network/ios/facts/facts.py | 130 + .../network/ios/facts/interfaces/__init__.py | 0 .../network/ios/facts/interfaces/interfaces.py | 110 + .../network/ios/facts/l2_interfaces/__init__.py | 0 .../ios/facts/l2_interfaces/l2_interfaces.py | 138 + .../network/ios/facts/l3_interfaces/__init__.py | 0 .../ios/facts/l3_interfaces/l3_interfaces.py | 148 + .../network/ios/facts/lacp/__init__.py | 0 .../module_utils/network/ios/facts/lacp/lacp.py | 88 + .../network/ios/facts/lacp_interfaces/__init__.py | 0 .../ios/facts/lacp_interfaces/lacp_interfaces.py | 112 + .../network/ios/facts/lag_interfaces/__init__.py | 0 .../ios/facts/lag_interfaces/lag_interfaces.py | 128 + .../network/ios/facts/legacy/__init__.py | 0 .../module_utils/network/ios/facts/legacy/base.py | 423 + .../network/ios/facts/lldp_global/__init__.py | 0 .../network/ios/facts/lldp_global/lldp_global.py | 100 + .../network/ios/facts/lldp_interfaces/__init__.py | 0 .../ios/facts/lldp_interfaces/lldp_interfaces.py | 115 + .../network/ios/facts/ospf_interfaces/__init__.py | 0 .../ios/facts/ospf_interfaces/ospf_interfaces.py | 95 + .../network/ios/facts/ospfv2/__init__.py | 0 .../network/ios/facts/ospfv2/ospfv2.py | 99 + .../network/ios/facts/ospfv3/__init__.py | 0 .../network/ios/facts/ospfv3/ospfv3.py | 180 + .../network/ios/facts/static_routes/__init__.py | 0 .../ios/facts/static_routes/static_routes.py | 272 + .../network/ios/facts/vlans/__init__.py | 0 .../module_utils/network/ios/facts/vlans/vlans.py | 168 + .../ios/plugins/module_utils/network/ios/ios.py | 205 + .../module_utils/network/ios/providers/__init__.py | 0 .../network/ios/providers/cli/__init__.py | 0 .../network/ios/providers/cli/config/__init__.py | 0 .../network/ios/providers/cli/config/base.py | 84 + .../ios/providers/cli/config/bgp/__init__.py | 0 .../ios/providers/cli/config/bgp/address_family.py | 158 + .../ios/providers/cli/config/bgp/neighbors.py | 225 + .../ios/providers/cli/config/bgp/process.py | 168 + .../module_utils/network/ios/providers/module.py | 72 + .../network/ios/providers/providers.py | 128 + .../module_utils/network/ios/rm_templates/acls.py | 284 + .../network/ios/rm_templates/bgp_global.py | 1835 ++++ .../network/ios/rm_templates/ospf_interfaces.py | 895 ++ .../network/ios/rm_templates/ospfv2.py | 1947 +++++ .../network/ios/rm_templates/ospfv3.py | 3132 +++++++ .../module_utils/network/ios/utils/__init__.py | 0 .../module_utils/network/ios/utils/utils.py | 385 + .../cisco/ios/plugins/modules/__init__.py | 0 .../ios/plugins/modules/ios_acl_interfaces.py | 598 ++ .../cisco/ios/plugins/modules/ios_acls.py | 1415 ++++ .../cisco/ios/plugins/modules/ios_banner.py | 188 + .../cisco/ios/plugins/modules/ios_bgp.py | 509 ++ .../cisco/ios/plugins/modules/ios_bgp_global.py | 2139 +++++ .../cisco/ios/plugins/modules/ios_command.py | 215 + .../cisco/ios/plugins/modules/ios_config.py | 593 ++ .../cisco/ios/plugins/modules/ios_facts.py | 236 + .../cisco/ios/plugins/modules/ios_interface.py | 597 ++ .../cisco/ios/plugins/modules/ios_interfaces.py | 568 ++ .../cisco/ios/plugins/modules/ios_l2_interface.py | 581 ++ .../cisco/ios/plugins/modules/ios_l2_interfaces.py | 560 ++ .../cisco/ios/plugins/modules/ios_l3_interface.py | 382 + .../cisco/ios/plugins/modules/ios_l3_interfaces.py | 605 ++ .../cisco/ios/plugins/modules/ios_lacp.py | 273 + .../ios/plugins/modules/ios_lacp_interfaces.py | 508 ++ .../ios/plugins/modules/ios_lag_interfaces.py | 534 ++ .../cisco/ios/plugins/modules/ios_linkagg.py | 363 + .../cisco/ios/plugins/modules/ios_lldp.py | 113 + .../cisco/ios/plugins/modules/ios_lldp_global.py | 356 + .../ios/plugins/modules/ios_lldp_interfaces.py | 666 ++ .../cisco/ios/plugins/modules/ios_logging.py | 511 ++ .../cisco/ios/plugins/modules/ios_ntp.py | 326 + .../ios/plugins/modules/ios_ospf_interfaces.py | 1101 +++ .../cisco/ios/plugins/modules/ios_ospfv2.py | 1691 ++++ .../cisco/ios/plugins/modules/ios_ospfv3.py | 1974 +++++ .../cisco/ios/plugins/modules/ios_ping.py | 242 + .../cisco/ios/plugins/modules/ios_static_route.py | 372 + .../cisco/ios/plugins/modules/ios_static_routes.py | 692 ++ .../cisco/ios/plugins/modules/ios_system.py | 382 + .../cisco/ios/plugins/modules/ios_user.py | 616 ++ .../cisco/ios/plugins/modules/ios_vlan.py | 416 + .../cisco/ios/plugins/modules/ios_vlans.py | 748 ++ .../cisco/ios/plugins/modules/ios_vrf.py | 750 ++ .../cisco/ios/plugins/terminal/__init__.py | 0 .../cisco/ios/plugins/terminal/ios.py | 116 + .../ansible_collections/cisco/ios/requirements.txt | 2 + .../cisco/ios/test-requirements.txt | 7 + .../ansible_collections/cisco/ios/tests/.gitignore | 1 + .../ios/tests/integration/network-integration.cfg | 4 + .../ios/tests/integration/target-prefixes.network | 1 + .../targets/ios_acl_interfaces/defaults/main.yaml | 3 + .../targets/ios_acl_interfaces/tasks/cli.yaml | 20 + .../targets/ios_acl_interfaces/tasks/main.yaml | 4 + .../ios_acl_interfaces/tests/cli/_parsed.cfg | 8 + .../tests/cli/_populate_config.yaml | 9 + .../tests/cli/_remove_config.yaml | 9 + .../ios_acl_interfaces/tests/cli/deleted.yaml | 39 + .../ios_acl_interfaces/tests/cli/empty_config.yaml | 60 + .../ios_acl_interfaces/tests/cli/gathered.yaml | 23 + .../ios_acl_interfaces/tests/cli/merged.yaml | 66 + .../ios_acl_interfaces/tests/cli/overridden.yaml | 47 + .../ios_acl_interfaces/tests/cli/parsed.yaml | 16 + .../ios_acl_interfaces/tests/cli/rendered.yaml | 51 + .../ios_acl_interfaces/tests/cli/replaced.yaml | 48 + .../targets/ios_acl_interfaces/tests/cli/rtt.yaml | 94 + .../targets/ios_acl_interfaces/vars/main.yaml | 97 + .../targets/ios_acls/defaults/main.yaml | 3 + .../integration/targets/ios_acls/meta/main.yaml | 2 + .../integration/targets/ios_acls/tasks/cli.yaml | 20 + .../integration/targets/ios_acls/tasks/main.yaml | 4 + .../targets/ios_acls/tests/cli/_parsed.cfg | 9 + .../ios_acls/tests/cli/_populate_config.yaml | 12 + .../targets/ios_acls/tests/cli/_remove_config.yaml | 8 + .../targets/ios_acls/tests/cli/deleted.yaml | 97 + .../targets/ios_acls/tests/cli/empty_config.yaml | 60 + .../targets/ios_acls/tests/cli/gathered.yaml | 24 + .../targets/ios_acls/tests/cli/merged.yaml | 142 + .../targets/ios_acls/tests/cli/overridden.yaml | 82 + .../targets/ios_acls/tests/cli/parsed.yaml | 16 + .../targets/ios_acls/tests/cli/rendered.yaml | 61 + .../targets/ios_acls/tests/cli/replaced.yaml | 81 + .../targets/ios_acls/tests/cli/rtt.yaml | 192 + .../integration/targets/ios_acls/vars/main.yaml | 174 + .../targets/ios_banner/defaults/main.yaml | 2 + .../integration/targets/ios_banner/meta/main.yml | 3 + .../integration/targets/ios_banner/tasks/cli.yaml | 24 + .../integration/targets/ios_banner/tasks/main.yaml | 2 + .../targets/ios_banner/tests/cli/basic-login.yaml | 36 + .../targets/ios_banner/tests/cli/basic-motd.yaml | 36 + .../ios_banner/tests/cli/basic-no-login.yaml | 34 + .../ios_banner/tests/cli/multiple-login-exec.yaml | 42 + .../targets/ios_banner/tests/cli/net_banner.yml | 31 + .../integration/targets/ios_bgp/defaults/main.yaml | 2 + .../integration/targets/ios_bgp/meta/main.yaml | 3 + .../integration/targets/ios_bgp/tasks/cli.yaml | 16 + .../integration/targets/ios_bgp/tasks/main.yaml | 4 + .../targets/ios_bgp/tests/cli/basic.yaml | 526 ++ .../targets/ios_bgp_global/defaults/main.yaml | 3 + .../targets/ios_bgp_global/meta/main.yaml | 2 + .../targets/ios_bgp_global/tasks/cli.yaml | 20 + .../targets/ios_bgp_global/tasks/main.yaml | 4 + .../targets/ios_bgp_global/tests/cli/_parsed.cfg | 13 + .../ios_bgp_global/tests/cli/_populate_config.yaml | 44 + .../ios_bgp_global/tests/cli/_remove_config.yaml | 4 + .../targets/ios_bgp_global/tests/cli/deleted.yaml | 40 + .../ios_bgp_global/tests/cli/empty_config.yaml | 60 + .../targets/ios_bgp_global/tests/cli/gathered.yaml | 25 + .../targets/ios_bgp_global/tests/cli/merged.yaml | 81 + .../targets/ios_bgp_global/tests/cli/parsed.yaml | 15 + .../targets/ios_bgp_global/tests/cli/purged.yaml | 33 + .../targets/ios_bgp_global/tests/cli/rendered.yaml | 55 + .../targets/ios_bgp_global/tests/cli/replaced.yaml | 59 + .../targets/ios_bgp_global/vars/main.yaml | 117 + .../targets/ios_command/defaults/main.yaml | 3 + .../integration/targets/ios_command/meta/main.yml | 3 + .../integration/targets/ios_command/tasks/cli.yaml | 24 + .../targets/ios_command/tasks/main.yaml | 2 + .../ios_command/tests/cli/bad_operator.yaml | 21 + .../targets/ios_command/tests/cli/cli_command.yaml | 29 + .../targets/ios_command/tests/cli/contains.yaml | 20 + .../targets/ios_command/tests/cli/error_regex.yaml | 69 + .../targets/ios_command/tests/cli/invalid.yaml | 28 + .../targets/ios_command/tests/cli/output.yaml | 30 + .../targets/ios_command/tests/cli/timeout.yaml | 19 + .../targets/ios_config/defaults/main.yaml | 3 + .../integration/targets/ios_config/meta/main.yml | 3 + .../integration/targets/ios_config/tasks/cli.yaml | 16 + .../targets/ios_config/tasks/cli_config.yaml | 16 + .../integration/targets/ios_config/tasks/main.yaml | 11 + .../targets/ios_config/tasks/redirection.yaml | 16 + .../ios_config/templates/basic/base_running_config | 9 + .../targets/ios_config/templates/basic/config.j2 | 4 + .../ios_config/templates/basic/configblock.j2 | 5 + .../ios_config/templates/basic/configexact1.j2 | 6 + .../ios_config/templates/basic/configexact2.j2 | 5 + .../ios_config/templates/basic/configstrict1.j2 | 5 + .../templates/basic/intended_running_config | 9 + .../targets/ios_config/templates/basic/macro.j2 | 8 + .../ios_config/templates/basic/setupblock.j2 | 5 + .../ios_config/templates/basic/setupexact.j2 | 7 + .../ios_config/templates/basic/setupstrict.j2 | 7 + .../ios_config/templates/defaults/config.j2 | 4 + .../targets/ios_config/tests/cli/backup.yaml | 123 + .../targets/ios_config/tests/cli/defaults.yaml | 67 + .../targets/ios_config/tests/cli/diff.yaml | 36 + .../targets/ios_config/tests/cli/macro.yaml | 64 + .../targets/ios_config/tests/cli/save.yaml | 49 + .../targets/ios_config/tests/cli/src_basic.yaml | 64 + .../targets/ios_config/tests/cli/src_invalid.yaml | 16 + .../ios_config/tests/cli/src_match_none.yaml | 34 + .../targets/ios_config/tests/cli/sublevel.yaml | 43 + .../ios_config/tests/cli/sublevel_block.yaml | 66 + .../ios_config/tests/cli/sublevel_exact.yaml | 62 + .../ios_config/tests/cli/sublevel_strict.yaml | 58 + .../tests/cli/sublevel_strict_mul_parents.yaml | 74 + .../targets/ios_config/tests/cli/toplevel.yaml | 37 + .../ios_config/tests/cli/toplevel_after.yaml | 45 + .../ios_config/tests/cli/toplevel_before.yaml | 45 + .../tests/cli/toplevel_nonidempotent.yaml | 41 + .../ios_config/tests/cli_config/cli_backup.yaml | 114 + .../ios_config/tests/cli_config/cli_basic.yaml | 44 + .../tests/cli_config/cli_block_replace.yaml | 34 + .../tests/cli_config/cli_exact_match.yaml | 35 + .../tests/cli_config/cli_strict_match.yaml | 26 + .../ios_config/tests/redirection/shortname.yaml | 37 + .../targets/ios_facts/defaults/main.yaml | 3 + .../integration/targets/ios_facts/meta/main.yml | 3 + .../integration/targets/ios_facts/tasks/cli.yaml | 24 + .../integration/targets/ios_facts/tasks/main.yaml | 2 + .../targets/ios_facts/tests/cli/all_facts.yaml | 27 + .../targets/ios_facts/tests/cli/default_facts.yaml | 27 + .../ios_facts/tests/cli/invalid_subset.yaml | 36 + .../targets/ios_facts/tests/cli/not_hardware.yaml | 24 + .../targets/ios_interface/defaults/main.yaml | 2 + .../targets/ios_interface/meta/main.yaml | 3 + .../targets/ios_interface/tasks/cli.yaml | 24 + .../targets/ios_interface/tasks/main.yaml | 2 + .../targets/ios_interface/tests/cli/basic.yaml | 254 + .../targets/ios_interface/tests/cli/intent.yaml | 151 + .../ios_interface/tests/cli/net_interface.yaml | 46 + .../targets/ios_interfaces/defaults/main.yaml | 3 + .../targets/ios_interfaces/meta/main.yaml | 2 + .../targets/ios_interfaces/tasks/cli.yaml | 20 + .../targets/ios_interfaces/tasks/main.yaml | 4 + .../targets/ios_interfaces/tests/cli/_parsed.cfg | 11 + .../ios_interfaces/tests/cli/_populate_config.yaml | 8 + .../ios_interfaces/tests/cli/_remove_config.yaml | 9 + .../targets/ios_interfaces/tests/cli/deleted.yaml | 51 + .../ios_interfaces/tests/cli/empty_config.yaml | 60 + .../targets/ios_interfaces/tests/cli/gathered.yaml | 24 + .../targets/ios_interfaces/tests/cli/merged.yaml | 57 + .../ios_interfaces/tests/cli/overridden.yaml | 53 + .../targets/ios_interfaces/tests/cli/parsed.yaml | 16 + .../targets/ios_interfaces/tests/cli/rendered.yaml | 29 + .../targets/ios_interfaces/tests/cli/replaced.yaml | 55 + .../targets/ios_interfaces/vars/main.yaml | 251 + .../targets/ios_l2_interface/defaults/main.yaml | 2 + .../targets/ios_l2_interface/meta/main.yml | 3 + .../targets/ios_l2_interface/tasks/cli.yaml | 27 + .../targets/ios_l2_interface/tasks/main.yaml | 6 + .../targets/ios_l2_interface/tests/cli/agg.yaml | 106 + .../targets/ios_l2_interface/tests/cli/sanity.yaml | 186 + .../targets/ios_l2_interfaces/defaults/main.yaml | 3 + .../targets/ios_l2_interfaces/meta/main.yaml | 2 + .../targets/ios_l2_interfaces/tasks/cli.yaml | 24 + .../targets/ios_l2_interfaces/tasks/main.yaml | 4 + .../ios_l2_interfaces/tests/cli/_parsed.cfg | 8 + .../tests/cli/_populate_config.yaml | 10 + .../tests/cli/_remove_config.yaml | 12 + .../tests/cli/_remove_vlan_config.yaml | 5 + .../ios_l2_interfaces/tests/cli/deleted.yaml | 47 + .../ios_l2_interfaces/tests/cli/empty_config.yaml | 60 + .../ios_l2_interfaces/tests/cli/gathered.yaml | 24 + .../ios_l2_interfaces/tests/cli/merged.yaml | 97 + .../ios_l2_interfaces/tests/cli/overridden.yaml | 55 + .../ios_l2_interfaces/tests/cli/parsed.yaml | 18 + .../ios_l2_interfaces/tests/cli/rendered.yaml | 30 + .../ios_l2_interfaces/tests/cli/replaced.yaml | 61 + .../targets/ios_l2_interfaces/tests/cli/rtt.yaml | 65 + .../targets/ios_l2_interfaces/vars/main.yaml | 213 + .../targets/ios_l3_interface/defaults/main.yaml | 2 + .../targets/ios_l3_interface/meta/main.yaml | 3 + .../targets/ios_l3_interface/tasks/cli.yaml | 24 + .../targets/ios_l3_interface/tasks/main.yaml | 2 + .../targets/ios_l3_interface/tests/cli/basic.yaml | 280 + .../targets/ios_l3_interfaces/defaults/main.yaml | 3 + .../targets/ios_l3_interfaces/meta/main.yaml | 2 + .../targets/ios_l3_interfaces/tasks/cli.yaml | 20 + .../targets/ios_l3_interfaces/tasks/main.yaml | 4 + .../ios_l3_interfaces/tests/cli/_parsed.cfg | 6 + .../tests/cli/_populate_config.yaml | 8 + .../tests/cli/_remove_config.yaml | 7 + .../ios_l3_interfaces/tests/cli/deleted.yaml | 50 + .../ios_l3_interfaces/tests/cli/empty_config.yaml | 60 + .../ios_l3_interfaces/tests/cli/gathered.yaml | 23 + .../ios_l3_interfaces/tests/cli/merged.yaml | 59 + .../ios_l3_interfaces/tests/cli/overridden.yaml | 60 + .../ios_l3_interfaces/tests/cli/parsed.yaml | 16 + .../ios_l3_interfaces/tests/cli/rendered.yaml | 33 + .../ios_l3_interfaces/tests/cli/replaced.yaml | 63 + .../targets/ios_l3_interfaces/tests/cli/rtt.yaml | 79 + .../targets/ios_l3_interfaces/vars/main.yaml | 188 + .../ios/tests/integration/targets/ios_lacp/aliases | 1 + .../targets/ios_lacp/defaults/main.yaml | 3 + .../integration/targets/ios_lacp/meta/main.yaml | 2 + .../integration/targets/ios_lacp/tasks/cli.yaml | 24 + .../integration/targets/ios_lacp/tasks/main.yaml | 4 + .../targets/ios_lacp/tests/cli/_parsed.cfg | 1 + .../ios_lacp/tests/cli/_populate_config.yaml | 7 + .../targets/ios_lacp/tests/cli/_remove_config.yaml | 7 + .../targets/ios_lacp/tests/cli/deleted.yaml | 44 + .../targets/ios_lacp/tests/cli/empty_config.yaml | 54 + .../targets/ios_lacp/tests/cli/gathered.yaml | 24 + .../targets/ios_lacp/tests/cli/merged.yaml | 45 + .../targets/ios_lacp/tests/cli/parsed.yaml | 18 + .../targets/ios_lacp/tests/cli/rendered.yaml | 21 + .../targets/ios_lacp/tests/cli/replaced.yaml | 47 + .../integration/targets/ios_lacp/vars/main.yaml | 38 + .../targets/ios_lacp_interfaces/defaults/main.yaml | 3 + .../targets/ios_lacp_interfaces/tasks/cli.yaml | 24 + .../targets/ios_lacp_interfaces/tasks/main.yaml | 4 + .../ios_lacp_interfaces/tests/cli/_parsed.cfg | 7 + .../tests/cli/_populate_config.yaml | 9 + .../tests/cli/_remove_config.yaml | 10 + .../ios_lacp_interfaces/tests/cli/deleted.yaml | 46 + .../tests/cli/empty_config.yaml | 66 + .../ios_lacp_interfaces/tests/cli/gathered.yaml | 24 + .../ios_lacp_interfaces/tests/cli/merged.yaml | 56 + .../ios_lacp_interfaces/tests/cli/overridden.yaml | 55 + .../ios_lacp_interfaces/tests/cli/parsed.yaml | 18 + .../ios_lacp_interfaces/tests/cli/rendered.yaml | 26 + .../ios_lacp_interfaces/tests/cli/replaced.yaml | 55 + .../targets/ios_lacp_interfaces/tests/cli/rtt.yaml | 62 + .../targets/ios_lacp_interfaces/vars/main.yaml | 148 + .../targets/ios_lag_interfaces/defaults/main.yaml | 3 + .../targets/ios_lag_interfaces/meta/main.yaml | 2 + .../targets/ios_lag_interfaces/tasks/cli.yaml | 24 + .../targets/ios_lag_interfaces/tasks/main.yaml | 4 + .../ios_lag_interfaces/tests/cli/_parsed.cfg | 4 + .../tests/cli/_populate_config.yaml | 8 + .../tests/cli/_populate_port_channel.yaml | 7 + .../tests/cli/_remove_config.yaml | 8 + .../ios_lag_interfaces/tests/cli/deleted.yaml | 47 + .../ios_lag_interfaces/tests/cli/empty_config.yaml | 67 + .../ios_lag_interfaces/tests/cli/gathered.yaml | 26 + .../ios_lag_interfaces/tests/cli/merged.yaml | 55 + .../ios_lag_interfaces/tests/cli/overridden.yaml | 54 + .../ios_lag_interfaces/tests/cli/parsed.yaml | 18 + .../ios_lag_interfaces/tests/cli/rendered.yaml | 26 + .../ios_lag_interfaces/tests/cli/replaced.yaml | 55 + .../targets/ios_lag_interfaces/tests/cli/rtt.yaml | 63 + .../targets/ios_lag_interfaces/vars/main.yaml | 115 + .../targets/ios_linkagg/defaults/main.yaml | 3 + .../integration/targets/ios_linkagg/meta/main.yaml | 3 + .../integration/targets/ios_linkagg/tasks/cli.yaml | 24 + .../targets/ios_linkagg/tasks/main.yaml | 2 + .../targets/ios_linkagg/tests/cli/basic.yaml | 175 + .../targets/ios_lldp/defaults/main.yaml | 2 + .../integration/targets/ios_lldp/meta/main.yaml | 3 + .../integration/targets/ios_lldp/tasks/cli.yaml | 24 + .../integration/targets/ios_lldp/tasks/main.yaml | 2 + .../targets/ios_lldp/tests/cli/basic.yaml | 52 + .../integration/targets/ios_lldp_global/aliases | 1 + .../targets/ios_lldp_global/defaults/main.yaml | 3 + .../targets/ios_lldp_global/meta/main.yaml | 2 + .../targets/ios_lldp_global/tasks/cli.yaml | 20 + .../targets/ios_lldp_global/tasks/main.yaml | 4 + .../targets/ios_lldp_global/tests/cli/_parsed.cfg | 4 + .../tests/cli/_populate_config.yaml | 6 + .../ios_lldp_global/tests/cli/_remove_config.yaml | 6 + .../targets/ios_lldp_global/tests/cli/deleted.yaml | 43 + .../ios_lldp_global/tests/cli/empty_config.yaml | 49 + .../ios_lldp_global/tests/cli/gathered.yaml | 23 + .../targets/ios_lldp_global/tests/cli/merged.yaml | 46 + .../targets/ios_lldp_global/tests/cli/parsed.yaml | 16 + .../ios_lldp_global/tests/cli/rendered.yaml | 22 + .../ios_lldp_global/tests/cli/replaced.yaml | 47 + .../targets/ios_lldp_global/vars/main.yaml | 51 + .../targets/ios_lldp_interfaces/defaults/main.yaml | 3 + .../targets/ios_lldp_interfaces/tasks/cli.yaml | 20 + .../targets/ios_lldp_interfaces/tasks/main.yaml | 4 + .../tests/cli/_enable_lldp.yaml | 6 + .../ios_lldp_interfaces/tests/cli/_parsed.cfg | 17 + .../tests/cli/_populate_config.yaml | 8 + .../tests/cli/_remove_config.yaml | 8 + .../ios_lldp_interfaces/tests/cli/deleted.yaml | 47 + .../tests/cli/empty_config.yaml | 60 + .../ios_lldp_interfaces/tests/cli/gathered.yaml | 25 + .../ios_lldp_interfaces/tests/cli/merged.yaml | 59 + .../ios_lldp_interfaces/tests/cli/overridden.yaml | 56 + .../ios_lldp_interfaces/tests/cli/parsed.yaml | 16 + .../ios_lldp_interfaces/tests/cli/rendered.yaml | 26 + .../ios_lldp_interfaces/tests/cli/replaced.yaml | 57 + .../targets/ios_lldp_interfaces/tests/cli/rtt.yaml | 65 + .../targets/ios_lldp_interfaces/vars/main.yaml | 147 + .../targets/ios_logging/defaults/main.yaml | 2 + .../integration/targets/ios_logging/meta/main.yaml | 3 + .../integration/targets/ios_logging/tasks/cli.yaml | 24 + .../targets/ios_logging/tasks/main.yaml | 2 + .../targets/ios_logging/tests/cli/basic.yaml | 151 + .../targets/ios_logging/tests/cli/net_logging.yaml | 34 + .../integration/targets/ios_ntp/defaults/main.yaml | 2 + .../integration/targets/ios_ntp/meta/main.yml | 3 + .../integration/targets/ios_ntp/tasks/cli.yaml | 24 + .../integration/targets/ios_ntp/tasks/main.yaml | 2 + .../ios_ntp/tests/cli/ntp_configuration.yaml | 106 + .../targets/ios_ospf_interfaces/defaults/main.yaml | 3 + .../targets/ios_ospf_interfaces/meta/main.yaml | 2 + .../targets/ios_ospf_interfaces/tasks/cli.yaml | 20 + .../targets/ios_ospf_interfaces/tasks/main.yaml | 4 + .../tests/cli/_initial_ipv6_setup.yaml | 6 + .../ios_ospf_interfaces/tests/cli/_parsed.cfg | 22 + .../tests/cli/_populate_config.yaml | 36 + .../tests/cli/_remove_config.yaml | 10 + .../ios_ospf_interfaces/tests/cli/deleted.yaml | 70 + .../tests/cli/empty_config.yaml | 60 + .../ios_ospf_interfaces/tests/cli/gathered.yaml | 27 + .../ios_ospf_interfaces/tests/cli/merged.yaml | 75 + .../ios_ospf_interfaces/tests/cli/overridden.yaml | 65 + .../ios_ospf_interfaces/tests/cli/parsed.yaml | 16 + .../ios_ospf_interfaces/tests/cli/rendered.yaml | 47 + .../ios_ospf_interfaces/tests/cli/replaced.yaml | 53 + .../targets/ios_ospf_interfaces/tests/cli/rtt.yaml | 99 + .../targets/ios_ospf_interfaces/vars/main.yaml | 207 + .../targets/ios_ospfv2/defaults/main.yaml | 3 + .../integration/targets/ios_ospfv2/meta/main.yaml | 2 + .../integration/targets/ios_ospfv2/tasks/cli.yaml | 20 + .../integration/targets/ios_ospfv2/tasks/main.yaml | 4 + .../ios_ospfv2/tests/cli/_initial_vrf_setup.yaml | 6 + .../targets/ios_ospfv2/tests/cli/_parsed.cfg | 19 + .../ios_ospfv2/tests/cli/_populate_config.yaml | 55 + .../ios_ospfv2/tests/cli/_remove_config.yaml | 10 + .../targets/ios_ospfv2/tests/cli/deleted.yaml | 83 + .../targets/ios_ospfv2/tests/cli/empty_config.yaml | 60 + .../targets/ios_ospfv2/tests/cli/gathered.yaml | 27 + .../targets/ios_ospfv2/tests/cli/merged.yaml | 94 + .../targets/ios_ospfv2/tests/cli/overridden.yaml | 80 + .../targets/ios_ospfv2/tests/cli/parsed.yaml | 16 + .../targets/ios_ospfv2/tests/cli/rendered.yaml | 66 + .../targets/ios_ospfv2/tests/cli/replaced.yaml | 80 + .../targets/ios_ospfv2/tests/cli/rtt.yaml | 133 + .../integration/targets/ios_ospfv2/vars/main.yaml | 250 + .../targets/ios_ospfv3/defaults/main.yaml | 3 + .../integration/targets/ios_ospfv3/meta/main.yaml | 2 + .../integration/targets/ios_ospfv3/tasks/cli.yaml | 20 + .../integration/targets/ios_ospfv3/tasks/main.yaml | 4 + .../ios_ospfv3/tests/cli/_initial_vrf_setup.yaml | 11 + .../targets/ios_ospfv3/tests/cli/_parsed.cfg | 15 + .../ios_ospfv3/tests/cli/_populate_config.yaml | 42 + .../ios_ospfv3/tests/cli/_remove_config.yaml | 16 + .../targets/ios_ospfv3/tests/cli/deleted.yaml | 69 + .../targets/ios_ospfv3/tests/cli/empty_config.yaml | 61 + .../targets/ios_ospfv3/tests/cli/gathered.yaml | 26 + .../targets/ios_ospfv3/tests/cli/merged.yaml | 75 + .../targets/ios_ospfv3/tests/cli/overridden.yaml | 58 + .../targets/ios_ospfv3/tests/cli/parsed.yaml | 17 + .../targets/ios_ospfv3/tests/cli/rendered.yaml | 53 + .../targets/ios_ospfv3/tests/cli/replaced.yaml | 58 + .../targets/ios_ospfv3/tests/cli/rtt.yaml | 116 + .../integration/targets/ios_ospfv3/vars/main.yaml | 104 + .../targets/ios_ping/defaults/main.yaml | 3 + .../integration/targets/ios_ping/meta/main.yaml | 3 + .../integration/targets/ios_ping/tasks/cli.yaml | 24 + .../integration/targets/ios_ping/tasks/main.yaml | 2 + .../targets/ios_ping/tests/cli/ping.yaml | 58 + .../targets/ios_smoke/defaults/main.yaml | 3 + .../integration/targets/ios_smoke/meta/main.yaml | 3 + .../integration/targets/ios_smoke/tasks/cli.yaml | 22 + .../integration/targets/ios_smoke/tasks/main.yaml | 2 + .../targets/ios_smoke/templates/defaults/config.j2 | 4 + .../targets/ios_smoke/tests/cli/common_config.yaml | 213 + .../targets/ios_smoke/tests/cli/common_utils.yaml | 152 + .../targets/ios_smoke/tests/cli/misc_tests.yaml | 41 + .../targets/ios_static_route/defaults/main.yaml | 2 + .../targets/ios_static_route/meta/main.yaml | 3 + .../targets/ios_static_route/tasks/cli.yaml | 24 + .../targets/ios_static_route/tasks/main.yaml | 2 + .../targets/ios_static_route/tests/cli/basic.yaml | 159 + .../tests/cli/net_static_route.yaml | 32 + .../targets/ios_static_routes/defaults/main.yaml | 3 + .../targets/ios_static_routes/meta/main.yaml | 2 + .../targets/ios_static_routes/tasks/cli.yaml | 20 + .../targets/ios_static_routes/tasks/main.yaml | 4 + .../tests/cli/_intial_setup_config.yaml | 11 + .../tests/cli/_populate_config.yaml | 10 + .../tests/cli/_remove_config.yaml | 11 + .../ios_static_routes/tests/cli/deleted.yaml | 82 + .../ios_static_routes/tests/cli/empty_config.yaml | 60 + .../ios_static_routes/tests/cli/gathered.yaml | 24 + .../ios_static_routes/tests/cli/merged.yaml | 89 + .../ios_static_routes/tests/cli/overridden.yaml | 73 + .../ios_static_routes/tests/cli/rendered.yaml | 69 + .../ios_static_routes/tests/cli/replaced.yaml | 76 + .../targets/ios_static_routes/tests/cli/rtt.yaml | 94 + .../targets/ios_static_routes/vars/main.yaml | 96 + .../targets/ios_system/defaults/main.yaml | 2 + .../integration/targets/ios_system/meta/main.yml | 3 + .../integration/targets/ios_system/tasks/cli.yaml | 24 + .../integration/targets/ios_system/tasks/main.yaml | 2 + .../targets/ios_system/tests/cli/net_system.yaml | 35 + .../ios_system/tests/cli/set_domain_list.yaml | 124 + .../ios_system/tests/cli/set_domain_name.yaml | 37 + .../targets/ios_system/tests/cli/set_hostname.yaml | 36 + .../ios_system/tests/cli/set_lookup_source.yaml | 66 + .../ios_system/tests/cli/set_name_servers.yaml | 64 + .../targets/ios_user/defaults/main.yaml | 2 + .../integration/targets/ios_user/files/test_rsa | 27 + .../targets/ios_user/files/test_rsa.pub | 1 + .../integration/targets/ios_user/meta/main.yaml | 3 + .../integration/targets/ios_user/tasks/cli.yaml | 17 + .../integration/targets/ios_user/tasks/main.yaml | 2 + .../targets/ios_user/tests/cli/auth.yaml | 109 + .../targets/ios_user/tests/cli/basic.yaml | 160 + .../targets/ios_vlan/defaults/main.yaml | 3 + .../integration/targets/ios_vlan/meta/main.yaml | 3 + .../integration/targets/ios_vlan/tasks/cli.yaml | 24 + .../integration/targets/ios_vlan/tasks/main.yaml | 2 + .../targets/ios_vlan/tests/cli/basic.yaml | 246 + .../targets/ios_vlans/defaults/main.yaml | 3 + .../integration/targets/ios_vlans/meta/main.yaml | 2 + .../integration/targets/ios_vlans/tasks/cli.yaml | 24 + .../integration/targets/ios_vlans/tasks/main.yaml | 4 + .../targets/ios_vlans/tests/cli/_parsed.cfg | 21 + .../ios_vlans/tests/cli/_populate_config.yaml | 7 + .../ios_vlans/tests/cli/_remove_config.yaml | 7 + .../targets/ios_vlans/tests/cli/deleted.yaml | 46 + .../targets/ios_vlans/tests/cli/empty_config.yaml | 66 + .../targets/ios_vlans/tests/cli/gathered.yaml | 24 + .../targets/ios_vlans/tests/cli/merged.yaml | 62 + .../targets/ios_vlans/tests/cli/overridden.yaml | 56 + .../targets/ios_vlans/tests/cli/parsed.yaml | 18 + .../targets/ios_vlans/tests/cli/rendered.yaml | 33 + .../targets/ios_vlans/tests/cli/replaced.yaml | 61 + .../targets/ios_vlans/tests/cli/rtt.yaml | 72 + .../integration/targets/ios_vlans/vars/main.yaml | 442 + .../targets/prepare_ios_tests/tasks/main.yml | 54 + .../targets/prepare_ios_tests/templates/config.j2 | 4 + .../cisco/ios/tests/sanity/ignore-2.10.txt | 1 + .../cisco/ios/tests/sanity/ignore-2.11.txt | 1 + .../cisco/ios/tests/sanity/ignore-2.9.txt | 11 + .../cisco/ios/tests/sanity/requirements.txt | 4 + .../cisco/ios/tests/unit/__init__.py | 0 .../cisco/ios/tests/unit/compat/__init__.py | 0 .../cisco/ios/tests/unit/compat/builtins.py | 34 + .../cisco/ios/tests/unit/compat/mock.py | 128 + .../cisco/ios/tests/unit/compat/unittest.py | 39 + .../cisco/ios/tests/unit/mock/__init__.py | 0 .../cisco/ios/tests/unit/mock/loader.py | 116 + .../cisco/ios/tests/unit/mock/path.py | 10 + .../cisco/ios/tests/unit/mock/procenv.py | 94 + .../cisco/ios/tests/unit/mock/vault_helper.py | 42 + .../cisco/ios/tests/unit/mock/yaml_helper.py | 167 + .../cisco/ios/tests/unit/modules/__init__.py | 0 .../cisco/ios/tests/unit/modules/conftest.py | 40 + .../ios/tests/unit/modules/network/__init__.py | 0 .../ios/tests/unit/modules/network/ios/__init__.py | 0 .../unit/modules/network/ios/fixtures/__init__.py | 0 .../network/ios/fixtures/configure_terminal | 2 + .../network/ios/fixtures/ios_acl_interfaces.cfg | 8 + .../network/ios/fixtures/ios_acls_config.cfg | 4 + .../ios/fixtures/ios_banner_show_banner.txt | 3 + .../ios_banner_show_running_config_ios12.txt | 15 + .../network/ios/fixtures/ios_bgp_config.cfg | 24 + .../network/ios/fixtures/ios_bgp_global.cfg | 8 + .../network/ios/fixtures/ios_config_config.cfg | 12 + .../network/ios/fixtures/ios_config_defaults.cfg | 13 + .../network/ios/fixtures/ios_config_src.cfg | 11 + .../modules/network/ios/fixtures/ios_facts_dir | 23 + .../network/ios/fixtures/ios_facts_show_cdp | 4 + .../fixtures/ios_facts_show_cdp_neighbors_detail | 40 + .../network/ios/fixtures/ios_facts_show_interfaces | 61 + .../ios/fixtures/ios_facts_show_ip_interface | 0 .../ios/fixtures/ios_facts_show_ipv6_interface | 0 .../network/ios/fixtures/ios_facts_show_lldp | 6 + .../fixtures/ios_facts_show_lldp_neighbors_detail | 50 + .../ios/fixtures/ios_facts_show_memory_statistics | 0 .../network/ios/fixtures/ios_facts_show_version | 68 + .../ios/fixtures/ios_facts_show_virtual_switch | 21 + .../network/ios/fixtures/ios_l2_interfaces.cfg | 9 + .../network/ios/fixtures/ios_logging_config.cfg | 11 + .../ios/fixtures/ios_logging_config_ios12.cfg | 6 + .../network/ios/fixtures/ios_ntp_config.cfg | 7 + .../network/ios/fixtures/ios_ospf_interfaces.cfg | 11 + .../modules/network/ios/fixtures/ios_ospfv2.cfg | 8 + .../modules/network/ios/fixtures/ios_ospfv3.cfg | 8 + .../fixtures/ios_ping_ping_10.255.255.250_repeat_2 | 4 + .../ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2 | 4 + .../ios/fixtures/ios_ping_ping_8.8.8.8_size_1400 | 4 + .../ios_ping_ping_8.8.8.8_size_1400_df-bit | 5 + .../ios/fixtures/ios_static_routes_config.cfg | 5 + .../network/ios/fixtures/ios_system_config.cfg | 14 + .../network/ios/fixtures/ios_user_config.cfg | 2 + .../network/ios/fixtures/ios_vlan_config.cfg | 9 + .../network/ios/fixtures/ios_vlans_config.cfg | 34 + .../network/ios/fixtures/ios_vrf_config.cfg | 81 + .../unit/modules/network/ios/fixtures/show_version | 45 + .../tests/unit/modules/network/ios/ios_module.py | 104 + .../modules/network/ios/test_ios_acl_interfaces.py | 390 + .../unit/modules/network/ios/test_ios_acls.py | 540 ++ .../unit/modules/network/ios/test_ios_banner.py | 88 + .../tests/unit/modules/network/ios/test_ios_bgp.py | 390 + .../modules/network/ios/test_ios_bgp_global.py | 244 + .../unit/modules/network/ios/test_ios_command.py | 143 + .../unit/modules/network/ios/test_ios_config.py | 339 + .../unit/modules/network/ios/test_ios_facts.py | 168 + .../modules/network/ios/test_ios_l2_interfaces.py | 327 + .../unit/modules/network/ios/test_ios_logging.py | 161 + .../tests/unit/modules/network/ios/test_ios_ntp.py | 111 + .../network/ios/test_ios_ospf_interfaces.py | 405 + .../unit/modules/network/ios/test_ios_ospfv2.py | 353 + .../unit/modules/network/ios/test_ios_ospfv3.py | 427 + .../unit/modules/network/ios/test_ios_ping.py | 90 + .../modules/network/ios/test_ios_static_routes.py | 707 ++ .../unit/modules/network/ios/test_ios_system.py | 155 + .../unit/modules/network/ios/test_ios_user.py | 170 + .../unit/modules/network/ios/test_ios_vlan.py | 161 + .../unit/modules/network/ios/test_ios_vlans.py | 385 + .../tests/unit/modules/network/ios/test_ios_vrf.py | 420 + .../cisco/ios/tests/unit/modules/utils.py | 51 + .../cisco/ios/tests/unit/plugins/__init__.py | 0 .../ios/tests/unit/plugins/cliconf/__init__.py | 0 .../unit/plugins/cliconf/fixtures/__init__.py | 0 .../unit/plugins/cliconf/fixtures/ios/__init__.py | 0 .../unit/plugins/cliconf/fixtures/ios/show_version | 54 + .../unit/plugins/cliconf/fixtures/nos/__init__.py | 0 .../unit/plugins/cliconf/fixtures/nos/show_chassis | 30 + .../cliconf/fixtures/nos/show_running-config | 549 ++ .../unit/plugins/cliconf/fixtures/nos/show_version | 17 + .../plugins/cliconf/fixtures/slxos/__init__.py | 0 .../plugins/cliconf/fixtures/slxos/show_chassis | 40 + .../cliconf/fixtures/slxos/show_running-config | 624 ++ .../cliconf/fixtures/slxos/show_startup-config | 624 ++ .../plugins/cliconf/fixtures/slxos/show_version | 18 + .../ios/tests/unit/plugins/cliconf/test_ios.py | 135 + .../cisco/ios/tests/unit/requirements.txt | 42 + .../ansible_collections/cisco/ios/tox.ini | 32 + 771 files changed, 126653 insertions(+) create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/.gitignore create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/.yamllint create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/FILES.json create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/LICENSE create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/MANIFEST.json create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/README.md create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/bindep.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/CHANGELOG.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/changelog.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/103_fix_l2_interfaces_traceback_error.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/124_resolved_ios_acls_issue.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/132_update_ios_l3_doc_issue.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/135_accept_list_of_dict_for_ospfv2_network.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/137_ios_static_routes_idempotency_issue.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/141_add_int_virt_template_issue.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/144_add_interface_tunnel_issue.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/146_add_cdp_platform_info_to_ios_facts.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_bgp_global_resource_module.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_ospv3_resource_module.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/161_static_route_facts_cmd_update.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/165_enable_ospfv3_integration_tests.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/175_fix_ios_vlans_when_name_had_remote.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/192_add_ospf_interfaces_resource_module.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/209_fix_ios_ospf_interfaces_authentication_param.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/211_update_ios_acls_module_to_use_resource_module_approach.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/216_fix_command_rejected_issue.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/223_fix_static_routes_facts_parsing.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/228_ios_ping.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/51-virtual-switch-system-detection.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/63_support_for_very_long_vlan_name.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/65_fixes_ios_interfaces_rm_where_interface_in_description_resulted_in_failure.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/command-dicts.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/galaxy-version.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/ios_config_diff_doc_update.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/upcap_ansible.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/update_resource_module_doc_discrepancy.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_cliconf.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_config_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interface_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interface_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interface_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_route_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_routes_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_system_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_user_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlan_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/meta/runtime.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/action/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/action/ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/facts.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/static_routes.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/lacp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/static_routes.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/base.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/process.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/module.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/providers.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/utils/utils.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_acl_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_banner.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_bgp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_command.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_config.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_facts.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_interface.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_l2_interface.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_l2_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_l3_interface.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_l3_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lacp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lacp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lag_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_linkagg.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lldp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lldp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_lldp_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_logging.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_ntp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_ping.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_static_route.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_static_routes.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_system.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_user.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_vlan.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_vlans.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/modules/ios_vrf.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/terminal/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/plugins/terminal/ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/requirements.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/test-requirements.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/.gitignore create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/network-integration.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/target-prefixes.network create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acl_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_acls/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tests/cli/basic-login.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tests/cli/basic-motd.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tests/cli/basic-no-login.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tests/cli/multiple-login-exec.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_banner/tests/cli/net_banner.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/purged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_bgp_global/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/bad_operator.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/cli_command.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/contains.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/error_regex.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/invalid.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/output.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_command/tests/cli/timeout.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tasks/cli_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tasks/redirection.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/base_running_config create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/config.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/configblock.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/configexact1.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/configexact2.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/configstrict1.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/intended_running_config create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/macro.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/setupblock.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/setupexact.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/basic/setupstrict.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/templates/defaults/config.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/backup.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/defaults.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/diff.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/macro.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/save.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/src_basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/src_invalid.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/src_match_none.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/sublevel.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/sublevel_block.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/sublevel_exact.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/sublevel_strict.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/sublevel_strict_mul_parents.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/toplevel.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/toplevel_after.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/toplevel_before.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli/toplevel_nonidempotent.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli_config/cli_backup.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli_config/cli_basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli_config/cli_block_replace.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli_config/cli_exact_match.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/cli_config/cli_strict_match.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_config/tests/redirection/shortname.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/all_facts.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/default_facts.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/invalid_subset.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_facts/tests/cli/not_hardware.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/tests/cli/intent.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interface/tests/cli/net_interface.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/tests/cli/agg.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interface/tests/cli/sanity.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_vlan_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l2_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interface/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interface/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interface/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interface/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interface/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_l3_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/aliases create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lacp_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_port_channel.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lag_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_linkagg/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_linkagg/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_linkagg/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_linkagg/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_linkagg/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/aliases create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_global/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/_enable_lldp.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_lldp_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_logging/tests/cli/net_logging.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ntp/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ntp/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ntp/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ntp/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ntp/tests/cli/ntp_configuration.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/_initial_ipv6_setup.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospf_interfaces/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv2/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/_initial_vrf_setup.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ospfv3/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_ping/tests/cli/ping.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/templates/defaults/config.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/tests/cli/common_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/tests/cli/common_utils.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_smoke/tests/cli/misc_tests.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_route/tests/cli/net_static_route.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/_intial_setup_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_static_routes/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/meta/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/net_system.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/set_domain_list.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/set_domain_name.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/set_hostname.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/set_lookup_source.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_system/tests/cli/set_name_servers.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/files/test_rsa create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/files/test_rsa.pub create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/auth.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_user/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlan/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlan/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlan/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlan/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlan/tests/cli/basic.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/defaults/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/meta/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tasks/cli.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tasks/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_parsed.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_populate_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/_remove_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/deleted.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/empty_config.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/gathered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/merged.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/overridden.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/parsed.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rendered.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/replaced.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/tests/cli/rtt.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/ios_vlans/vars/main.yaml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/prepare_ios_tests/tasks/main.yml create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/integration/targets/prepare_ios_tests/templates/config.j2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/sanity/ignore-2.10.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/sanity/ignore-2.11.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/sanity/ignore-2.9.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/sanity/requirements.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/compat/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/compat/builtins.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/compat/mock.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/compat/unittest.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/loader.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/path.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/procenv.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/vault_helper.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/mock/yaml_helper.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/conftest.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/configure_terminal create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_acl_interfaces.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_acls_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_banner_show_banner.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_banner_show_running_config_ios12.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_bgp_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_bgp_global.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_config_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_config_defaults.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_config_src.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_dir create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp_neighbors_detail create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_interfaces create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_ip_interface create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_ipv6_interface create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp_neighbors_detail create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_memory_statistics create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_version create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_facts_show_virtual_switch create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_l2_interfaces.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_logging_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_logging_config_ios12.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ntp_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ospf_interfaces.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ospfv2.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ospfv3.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ping_ping_10.255.255.250_repeat_2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400 create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400_df-bit create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_static_routes_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_system_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_user_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_vlan_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_vlans_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/ios_vrf_config.cfg create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/fixtures/show_version create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/ios_module.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acl_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_acls.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_banner.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_bgp_global.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_command.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_config.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_facts.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_l2_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_logging.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ntp.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospf_interfaces.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv2.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ospfv3.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_ping.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_static_routes.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_system.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_user.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlan.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vlans.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/network/ios/test_ios_vrf.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/modules/utils.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/ios/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/ios/show_version create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/nos/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/nos/show_chassis create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/nos/show_running-config create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/nos/show_version create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/slxos/__init__.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/slxos/show_chassis create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/slxos/show_running-config create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/slxos/show_startup-config create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/fixtures/slxos/show_version create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/plugins/cliconf/test_ios.py create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tests/unit/requirements.txt create mode 100644 collections-debian-merged/ansible_collections/cisco/ios/tox.ini (limited to 'collections-debian-merged/ansible_collections/cisco/ios') diff --git a/collections-debian-merged/ansible_collections/cisco/ios/.gitignore b/collections-debian-merged/ansible_collections/cisco/ios/.gitignore new file mode 100644 index 00000000..6037698f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/.gitignore @@ -0,0 +1,3 @@ +.tox +__pycache__ +*.py[cod] diff --git a/collections-debian-merged/ansible_collections/cisco/ios/.yamllint b/collections-debian-merged/ansible_collections/cisco/ios/.yamllint new file mode 100644 index 00000000..3adaf90c --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/.yamllint @@ -0,0 +1,15 @@ +--- +extends: default + +ignore: | + .tox + changelogs/* + +rules: + braces: + max-spaces-inside: 1 + level: error + brackets: + max-spaces-inside: 1 + level: error + line-length: disable diff --git a/collections-debian-merged/ansible_collections/cisco/ios/FILES.json b/collections-debian-merged/ansible_collections/cisco/ios/FILES.json new file mode 100644 index 00000000..9051cc00 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/FILES.json @@ -0,0 +1,7614 @@ +{ + "files": [ + { + "name": ".", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "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": "docs", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_ospfv3_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "74e2be6334a29be7503747ba59b229b88d8c6000209799bbb243c78c5eb6f652", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_vrf_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c71060ef1b3d48f0cbb3eb0efd9eaa5589a2654e4dc4a2f3739dc11d067986c", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_linkagg_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "778a770081c633fbd81cfa4577fc31e16beb492f3682299115e164956b0446be", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_bgp_global_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ef55b062b32fbd96d306f2c1b6188fa625597988c2b85f9b7ccb30cf03bb1848", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_l2_interface_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "218543c7086d013cee59befc33a325a89440e910a9add587552464563a9e3f09", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_acls_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fa7601417f546d0ee9dbf4c0252c012ab884b0989f715d6897df99ea922318c8", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_ping_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ef5c5f82202702f0a8e7b7393ffb95a39ee02671e7bae65ccf89f7e6b4cfa8af", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_l3_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e200429ad1fe685a02b402fa026ee0ddb89efbf6b466750e57bad3cc7bee04b2", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_config_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "658fc900d0a02a88de1851659b998fc9a7c7c8c92ebe94979c39950f82143c39", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lldp_global_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5c927b32e1b9bff0369caa4000c27fbee9d4cf044e0fb5cb222e07a15b46edc1", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_l3_interface_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "58d166c3ff6658dec3fd92ec46cc22c852d82536483b030e845cdbd6ae26434b", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_acl_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "50cc1d5481c6414b85deaed2c6adc386945f386099dc1d4cd44739319be3160b", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_bgp_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c2130418c8deb2c92fd10365d6811b1e538cd8a3594113c96e1e37429281c438", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_vlans_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "042c93bea389c1ef78ef0da30c52af6fbf30939613084232096cdb79cf690c4d", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_vlan_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7d8fc425d54bd8f33bece8b51fcbe96e3e9bafa6aac8b4085a3e2e3d61ab19a1", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_banner_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "59c141929bc22f9448b15b48880d724e6febe21bd7fed08ebffd7904013cca6a", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_facts_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "047ddccb9148c073a9ecfd74bfc319ce5545762d28eb3f5b1828756b11861df5", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0cab0406db57557fa7e271b63b5dfc4a85b0a8fd1ff45d83e29d388b424811bd", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_user_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "81b2d8eabb4d122093f8fd1f99360c14c2aee22d21ebff509fa436448baba571", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_system_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1410a8cba8910524911df58c9f53e8dbbb2a3c319c4bf8fce88893058f761ca5", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_static_routes_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f2cfa1628d11e3cc476365fe8cfb78a2516ddca6a0ae32619f78aff84af0ebe7", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lacp_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "eb8cdba2e6efa2efb03fcefee0518ecef34a32a78a95a21750d7efcc2906c6de", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_command_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf0fc722b314cfe7efd2d2c284208b49145b585525d9786bb8dec325c541cb1", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_static_route_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bb4db22c9c6bbfe635a1ea998a859d7616b4c4bb449e4e50fffb570eee7b28be", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_ospf_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0ad42283a5e687c486952415ab9ca72336def521e608dd7cca62d2f3b32fad33", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_interface_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b9b4ecf9435bc6408671b476e1707c741e7d7a8bdfcf11cb3d643af5a250fbcb", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lag_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6e02f79e7595c74feea32fdf8573de896c48c779cfc0040f960c8b983adb4414", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lldp_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2f329b06f6e573894353d5005247f05b32f4241aa6489ba5992afe619ca18677", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_logging_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b442922626db1fb0d1fa50063faa6337de49cc521167a451b22c748bdc412cb0", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_ntp_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4e75e665aeaf5aaa786cbdd8480268251d47a8c837c2aef01fe3d6406de73b1c", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lacp_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "892db3a89b17c0afbc006fef990393d63bfb1d63f3264ada54a8185b4b3aaa1c", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_ospfv2_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9833c053f427d4e89aa340b84062a203f4e6b7dc197e9849c1ae61114b92d543", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_cliconf.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4e427b1ed6a2288f9728b0e7420093ada804f119dc63bdd8832b35524fec6ef2", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_l2_interfaces_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2d9a7b60b3e750044cdb0d352f0cc04828a37f9e6d73a8ec0408c939f4806c67", + "format": 1 + }, + { + "name": "docs/cisco.ios.ios_lldp_module.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "818e9215d73788ab061696c5e36af68352a7c35767460974f239b1b3c1734099", + "format": 1 + }, + { + "name": "bindep.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "80645079eb025b3a905b4775ac545d080a3d7d35d537c31e04f7197c94315ab5", + "format": 1 + }, + { + "name": "test-requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f3c3034db738d9dd385446a8bb5275e8cdfa3661206dd97ac783c2f730534b24", + "format": 1 + }, + { + "name": "changelogs", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "changelogs/changelog.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a7026ce4d2faf2d706f3e08e35521192d5fdccc272fa5fd0f3dc3d97d1aba759", + "format": 1 + }, + { + "name": "changelogs/config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ea4bf1b6f634beae5b603bab1d38ebc0c6aa05450881a7d7accbe888c8780b62", + "format": 1 + }, + { + "name": "changelogs/fragments", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "changelogs/fragments/132_update_ios_l3_doc_issue.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3812558da19f5edc1130dbe678b2fd89e8195576388dd78676d4888e3bc94469", + "format": 1 + }, + { + "name": "changelogs/fragments/upcap_ansible.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1600f7584ad11feb18d07e04d4b8fadc16100aaa6500b88a069135b27b9b3976", + "format": 1 + }, + { + "name": "changelogs/fragments/223_fix_static_routes_facts_parsing.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "457aa956edff6b066b7364defa6297552e73816cfdbd7fd65835fbf0f40e014a", + "format": 1 + }, + { + "name": "changelogs/fragments/141_add_int_virt_template_issue.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "691eeca5d61be6009df9ecd152a989503cb0111c6f6c0c9291ac366743cffe7c", + "format": 1 + }, + { + "name": "changelogs/fragments/144_add_interface_tunnel_issue.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "42aaae52019c1e84fd76dba01980926cdca614bca18aa7542cc327501db3cad1", + "format": 1 + }, + { + "name": "changelogs/fragments/ios_config_diff_doc_update.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bf62f20445fcfa0adb4d006d2184d48d1bf7d2dbf5653a153fe7d5fc506f338f", + "format": 1 + }, + { + "name": "changelogs/fragments/51-virtual-switch-system-detection.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ad74386cb6c5d8079270abc4a95629d796df0bf0b6ef5f8518b5d6dfc37976ba", + "format": 1 + }, + { + "name": "changelogs/fragments/135_accept_list_of_dict_for_ospfv2_network.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7b022e7c398f9bbe955adba92e84dabe4dc6322fa364bdd9aa7969ae5f4d56ab", + "format": 1 + }, + { + "name": "changelogs/fragments/update_resource_module_doc_discrepancy.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "36cfb95f5e77c3270bc399ff39fdfcfa19d607e5cc2ca4e45ec0b5d2a2230de6", + "format": 1 + }, + { + "name": "changelogs/fragments/148_add_ospv3_resource_module.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6cadc12d7b1823307a2ec221d10552884d3d71c8ed99c72890e80e8d1668cbbb", + "format": 1 + }, + { + "name": "changelogs/fragments/209_fix_ios_ospf_interfaces_authentication_param.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9f638e5926a3dde025fa397c5d473ba4380aea1ab8be57a99632e5bbed02c71d", + "format": 1 + }, + { + "name": "changelogs/fragments/galaxy-version.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "dda8eb2efcf0e2d799b90db8e752e5d9b5bcc49cbb0d3a55a997fea15c0520a1", + "format": 1 + }, + { + "name": "changelogs/fragments/103_fix_l2_interfaces_traceback_error.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9077e187530e51ef748a95c5cdb805566445d2a24fe07882dee22bd5d8c51166", + "format": 1 + }, + { + "name": "changelogs/fragments/command-dicts.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0878798781e7643c03ec6736bbbae7f32746fcb87d73c2d77b882fb47177c836", + "format": 1 + }, + { + "name": "changelogs/fragments/211_update_ios_acls_module_to_use_resource_module_approach.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "54661f643be3b0734284cdcb8c5a4b184c1d22776523a3a40dd197c1c123e27b", + "format": 1 + }, + { + "name": "changelogs/fragments/228_ios_ping.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e0c8e0e014c75bea285064677a835b77dce55d0773c6f7f97394c268b4ac116d", + "format": 1 + }, + { + "name": "changelogs/fragments/192_add_ospf_interfaces_resource_module.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5c162bf542d913b911bbb24240adf5e8a0e8d3b27c559406d7aebf938655cd48", + "format": 1 + }, + { + "name": "changelogs/fragments/65_fixes_ios_interfaces_rm_where_interface_in_description_resulted_in_failure.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0c05814f5d9982548dcfd7e0619541f1fd469df98a242b61d30340858aa873f9", + "format": 1 + }, + { + "name": "changelogs/fragments/63_support_for_very_long_vlan_name.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7f972e56d2f7537fb87ee5d0baa4fd0ae02f2569a4b3db603e8fe9f870c9f84", + "format": 1 + }, + { + "name": "changelogs/fragments/175_fix_ios_vlans_when_name_had_remote.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "11691237a5c181cf2bd78a054696638ef4d86b8008931a9b110c5c18524d1970", + "format": 1 + }, + { + "name": "changelogs/fragments/146_add_cdp_platform_info_to_ios_facts.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "984572e834b4a1f51e123a4ec2713d578799eeeab75f7c6375c2f4cfb6db4d8a", + "format": 1 + }, + { + "name": "changelogs/fragments/161_static_route_facts_cmd_update.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "db95cab6ab5d1ce063f71f9cf2bad7d7abd2b0be74c5da19e73d52e0251478e6", + "format": 1 + }, + { + "name": "changelogs/fragments/124_resolved_ios_acls_issue.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "057db279cb937df4b78a69fe1fcbd8f9df25ba521b95c913d1cbedc8ebdff571", + "format": 1 + }, + { + "name": "changelogs/fragments/165_enable_ospfv3_integration_tests.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b89fb94c423689958f004b9699a5227be29cc9e583d4c53914998459ccca5746", + "format": 1 + }, + { + "name": "changelogs/fragments/137_ios_static_routes_idempotency_issue.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "70ad3e8b7e340e563909966300a1f6e8eceba8184357fb100c6451f50c1e5305", + "format": 1 + }, + { + "name": "changelogs/fragments/148_add_bgp_global_resource_module.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b3a0001f0a5b89bd967f6102dde4e21fd17c6902450c554cc1af8f0a180ec50f", + "format": 1 + }, + { + "name": "changelogs/fragments/216_fix_command_rejected_issue.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6e85011e06de05e78ff0a12b613e2ceaa55cfb4dbb00aaa6d4b871775353d1d0", + "format": 1 + }, + { + "name": "changelogs/CHANGELOG.rst", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bb9b80a1d19772ca9e442786c5da2545ca6a033b8f7dc146b1acf0451b484674", + "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": "13fc79ec75f433967f79302d2eb0fb67cdbaf4c43f2eabcee4d42c4f0e237545", + "format": 1 + }, + { + "name": "README.md", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "139c61ac8f33454c00e270e904067b4f88661748e44fdf787042611bc7424d7a", + "format": 1 + }, + { + "name": ".gitignore", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "13efa8adb5f73be5234e611e5ec4cc509417641a49c47d861ae370cc86bbb981", + "format": 1 + }, + { + "name": "plugins", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/modules", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/modules/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/modules/ios_lag_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8fabce7d6ee2bd5160dd29a134e23c99ceb5c30e4c51036003715450bb218ac", + "format": 1 + }, + { + "name": "plugins/modules/ios_config.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b81ee1836e019050388b6e527425f0360510e85ebae9c3dd8cb41a99abfc8ae7", + "format": 1 + }, + { + "name": "plugins/modules/ios_l2_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "67fb90c1d4dd662048313f4fe446c624ac6803471a04ce19bf8548b5a643d4aa", + "format": 1 + }, + { + "name": "plugins/modules/ios_user.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6dd9e94b095b8e8ced49a7732bbc0ba4da3efe1f88158c0d83f36213279b71c1", + "format": 1 + }, + { + "name": "plugins/modules/ios_ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "76c27736185bb25abfd209aa25203d05fc08080094e15eb33fcc4f20d89d2088", + "format": 1 + }, + { + "name": "plugins/modules/ios_linkagg.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b1e8f381ec03eff2d89f09e3198b3e97256602eedde4c70c63418924aa37affe", + "format": 1 + }, + { + "name": "plugins/modules/ios_l2_interface.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "74156f80d2e022aeebdc442f3d4ce5b8d729e287c429868df34a3698c4fecdfe", + "format": 1 + }, + { + "name": "plugins/modules/ios_static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7c8e3ce262924dab1bff72e3977f10142b54710f647802c8b5411762f3b70342", + "format": 1 + }, + { + "name": "plugins/modules/ios_lldp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a33080d78f353ea635f47549dca3ed7e688e25ed8c0e7ea5a66afc3ce87c4fe", + "format": 1 + }, + { + "name": "plugins/modules/ios_lldp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "739d99588bc6024d26816baf136498b5f1891f41d8750913d7c54d0ec8fbfc38", + "format": 1 + }, + { + "name": "plugins/modules/ios_logging.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "082a46487a97ce8625373f2eac27c77698ba1821cb930406d6123d7b6c2b0d91", + "format": 1 + }, + { + "name": "plugins/modules/ios_l3_interface.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b16fe69dd57f10af7a037a2547c3fff72bfd13abc0d09aa32cea16387a186343", + "format": 1 + }, + { + "name": "plugins/modules/ios_vlan.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "01b64e10811c893335326c56c1eb7ebd68faacdeceb47b3873825132f65b27e9", + "format": 1 + }, + { + "name": "plugins/modules/ios_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "55d90a90aab6ff0ba212a9f08c26174e163fcc1a6f1fc290ad0c740fa6a7074e", + "format": 1 + }, + { + "name": "plugins/modules/ios_system.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ce26d3a271fbf1733d15581ecf3a1a4884c39155aa5d90eb5d1631994501d953", + "format": 1 + }, + { + "name": "plugins/modules/ios_ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "74a931c245b961507064097b4d46c2b4e8e7a179c7746f33c4c142ef54624f13", + "format": 1 + }, + { + "name": "plugins/modules/ios_command.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "09a02e3a7c4a950cd63430c408dec51d8fe9c1fa3bb93105b1c23f375eaac569", + "format": 1 + }, + { + "name": "plugins/modules/ios_bgp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "012729b5afd0450c3551d2a4306bc177b92713ef323eb5b4f42655bf74c77f2e", + "format": 1 + }, + { + "name": "plugins/modules/ios_ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3820f0c9e1191636aefdde6faf75b3463dc3d8a3e37979df293869e9b9f3f837", + "format": 1 + }, + { + "name": "plugins/modules/ios_lldp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e235e34a49446f9f3d79d783e0c3f031a1ace4a313a87ded857fbc572e2e7eb7", + "format": 1 + }, + { + "name": "plugins/modules/ios_facts.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "03b2057cd730203d83ee9457f0620183fac3de176c8c69a6afb6a3e89b0add94", + "format": 1 + }, + { + "name": "plugins/modules/ios_acl_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1cc30586ac5f0e17d7606a2372b8713e0cda6982479ca5f0a2f65a0f7143400c", + "format": 1 + }, + { + "name": "plugins/modules/ios_acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cd875a5046d98cc62591b279636e6562b9857c73d70997d14fe4ddc3052dea8c", + "format": 1 + }, + { + "name": "plugins/modules/ios_ping.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "25eb68b4412cf20691121c08e37589f59b0cffb7ad36036f8e6f6c2c1d49807b", + "format": 1 + }, + { + "name": "plugins/modules/ios_bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "94542b14c3c4221ee2fb44adc9bffcf505c4ca73f87342d0c4e6cba9f86a50dc", + "format": 1 + }, + { + "name": "plugins/modules/ios_vlans.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2fea596e3d800ed40986f996ae1efea6cd58ef62f52df0b5a19162d94b9a9952", + "format": 1 + }, + { + "name": "plugins/modules/ios_ntp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a46a40010c0704713e93ed62bc8bb1fca58312b29af85b9789b0be53b1d5c3a0", + "format": 1 + }, + { + "name": "plugins/modules/ios_lacp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4c3d89b7b4758f8551a613d44d2f1292aa1ec4a24c3fc3ab6909ae1e604944a3", + "format": 1 + }, + { + "name": "plugins/modules/ios_lacp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b7e833d065ff6c52afa6194ca91f0d80e105d4d2db3fc289299abcdd9352a44b", + "format": 1 + }, + { + "name": "plugins/modules/ios_interface.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "01d5836db6e1c8728054e79a36d34c5bfbd46749206715a1f4257a0e88078725", + "format": 1 + }, + { + "name": "plugins/modules/ios_vrf.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4e39c41ae7183034593d908d0cbc38183b8ae48d66a0730c82a9344c224abdae", + "format": 1 + }, + { + "name": "plugins/modules/ios_l3_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ea5944669366547ac9c0bd789cf26e56d68d9f1ede329915c590c1fb998f696c", + "format": 1 + }, + { + "name": "plugins/modules/ios_static_route.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "717b071aa28cc8838448692dc6e07ca16423419a946f24a1c388a0b6faf60bf5", + "format": 1 + }, + { + "name": "plugins/modules/ios_banner.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4e313e765f108dd7e3f730e5a2e79370eea612f380e27698a061142961c7d994", + "format": 1 + }, + { + "name": "plugins/action", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/action/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/action/ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c85d927519b8c779b33d5616f04bff5f7887032a5be300ca74a168cc9f40e4af", + "format": 1 + }, + { + "name": "plugins/cliconf", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/cliconf/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/cliconf/ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ff85864c74d3616cb3f2bcb963aca4a6949b59ad352e347098fd9b130397aa81", + "format": 1 + }, + { + "name": "plugins/module_utils", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/module.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a33a3e10d3b3220c99ccd2ac2bde0021aa8b9d61bf0beb0b0bf59ff6168fcb9c", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/providers.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1e40324ccc5b05d7a51c2a6d604362a4e80d92919581f319dc1b4efaff17008e", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/bgp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "eb6fd236b7cd74b81f62704d27248b8ae6d54623cae3fbde0cd19e8dcb45afe6", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a825b80d4b84ea95764dfd4363bb3fe95de11cb6a3f3799c0504396e39e94241", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/bgp/process.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "91f9d1b15caa97d5852ec729f8be913cbb93785c69832a3ad63119b2bab54d32", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/providers/cli/config/base.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3686b522f34a831ec029cb3d78be9ad19fd8480c1a583ea7f2a37fce0f997a6c", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/bgp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/bgp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b06282d2e3ad29572c5ada618be96b43c34ec411704d80be64335bd3236bed3f", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l2_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l2_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6249e805d7e7d8cfd0863570ba2fcc7bf4f20756aec7442cc08237c7df58f4b5", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospf_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospf_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "473f098bd911f58d8b97ecc9c6c01a14903ea0b25d28c33dfc598973b252b8c0", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/static_routes", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/static_routes/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/static_routes/static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c2f4cf56e98a4ee14d6dee1136852ff8282f25e5773c12559178e5243f7ed3dd", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1c924bfaa3ae217061e03df9d19883593c9294adb052ad71d7da212289c58d2e", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lag_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lag_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5c7ab35168a625c3bf372f1d0481c7f56a38897deccf8da2bb0784224e5b4c7b", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lacp/lacp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6e9f4266782c8b3b0c445f6a69404bb5f3c2ee20ccc5e327d7552dac280d04c4", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2af4e200f257c683508e2baeb1524463bf33c59474fd5d6a3ceb513fcc278c28", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l3_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l3_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "effb693804b7b732e77362d83f1fe802588585f402a4c3968b880435e44af854", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/interfaces/interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3523616c06072d4a180adcda3cb6de589e17d1fbd64888178c251f0a7802562d", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv3", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv3/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a0d9e671365f851f0d4b29f18d4959404519f2c565ff5bf46f72a5c283515cd4", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acl_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acl_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "850b25b0dc61fd541130b7fe74ac80bfff4ebda25917d6ccbc62d77a569c1f41", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/facts.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d92403c63d1cf3a2a70b824a3ef927343f0667665bc239dc505a591fbd59bf4f", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/legacy", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/legacy/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/legacy/base.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4a732234c3ac856c9f5e90d836e38baef7573959eafedd9c4b7f138093071d7a", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv2", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv2/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9b872becfd8630bb3b0f72ca7d662ea34e0950accbc4dc51d6d307a8aa7d71ac", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/vlans", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/vlans/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/vlans/vlans.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6773a891d8ab30335bf943bfbb3c4e5154616e1c212404e719b48a2d02231d0a", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acls", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acls/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/acls/acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98c99013042adac02bbda372a416a778b686fac10ad73488e100a618ddf03068", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "55dfac9dd7c0d93d310a317a8f7dc6a3e696bbe44cb383bc4a99193b39e42381", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/bgp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/bgp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/bgp_global/bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a1b5e51f1fe8c9c68b19c30ee17532708198d56a862595cf614383d8dec41e9", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l2_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l2_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f1885d136331fcabcd645fb7bc64a067e9cc694901abbeca536ecc8be4bc0f9a", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospf_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospf_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "176f018fa64264b5119ece8af84bd9877c23740d9bff01effe03f1589de0ec7c", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/static_routes", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/static_routes/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/static_routes/static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "de94e6a905a5fcc1ec380e8118256b641830fa6705d2be50a4b7a8538b6da8b6", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f94e1c00733ee3134508e8e339d96f7c843969250d8d469eb422798806ee75ab", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lag_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lag_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d727eab1c311da2a0cdbcd4b36506d8c05c9ed9c9d44f502d633b773880f42b6", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lacp/lacp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f149ac93ea8b325017e82f52a05cc216074c18639b4ea752efa68395e2152c91", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "85218f244c37ca5a1a29309a684caa147c3baa598a2e69b0c73ec398e09800cd", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l3_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l3_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9f10eeedc9df343426839c1f91a7ceac567d12749183ad90a3d20a3fd0004968", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/interfaces/interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fa85a3ac23ae64fab1a82c4c5d0222ae37bcc0cc1155e997ec46de10c9ec17aa", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv3", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv3/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv3/ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1803b6ce93a54560dda00843553f570639fa2d70be58acaa16815ae7a7d515ea", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acl_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acl_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "abf19c869a9c454b777b24cfe5446111e45a940c31fe0d837f7c343625da605b", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv2", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv2/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/ospfv2/ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0aa41db84154b490ce57636060c015d5076e57f43909c7647cfa612056ae881a", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/vlans", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/vlans/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/vlans/vlans.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3925f694cd06c1b8b2742fe928f53bcfdae8d9ae80faad5be468b6716d0d6605", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acls", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acls/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/acls/acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7a605cf670bbb8b43ca0711ca7612035a226d8ed749e35e886c572e4c14135f8", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/config/lldp_global/lldp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8e1a3a1944d634eb58d56bbf29d2fbcf40d89edc15f3d80db8a124a9cf067ccc", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/bgp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/bgp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f730f010f81319e20e05b7fae6371de2ef2ff0afca54251fcf4b0438caac0d46", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l2_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l2_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "597023a18e71b7c624956c0bffb38f3d6f56dd315f55cf69679bbfb75b9419cc", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospf_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospf_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3edb42cfcfa4b2d0679fed529a03baa0d1c7b0d33fb0f5673f25f448a2e74906", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/static_routes", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/static_routes/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/static_routes/static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "47c41ae1f613f9390a746faf9378b46ba92b09bf3f2a04eb45b52d9c3a700cd8", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "47b703ecd4b7f41d20ff2cf9f21f062fcd500887b4f03ae4a4488cc98d7c7733", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lag_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6119da8e5c85009db69f095c2f7a56c499ba6e23c9c57483932e859e6a620d74", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lacp/lacp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d5a30a7a67b15fadeb132d1666e3135f404b064e2c636dbe4352e5a2e3c73a80", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "76b60091455e99e4bad476ab84d1e4e238dc962fbda85377b44cea69b8cc8e87", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l3_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l3_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0eee199ea1b43ab38d29a891d077a08c3fd155832cc663335b8ae35588debc8d", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/facts", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/facts/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/facts/facts.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "300cf93dfb2983fce0e9fe5ec3a92b3cb8ef42d1c14d861ba72b3531c00b6d4f", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/interfaces/interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "444d31446b3b2e9aa74ceb5b736475e49dcdcf75f92a7f5a079fa327e59e4a47", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv3", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv3/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f3fc95473a428199358699c313eb78a1740b84c470e7007a3a487d47ea88798c", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acl_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acl_interfaces/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d42905a9afda5199f3bfcaf9fe0214886821548bcd30d8c6c474afd61eafde97", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv2", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv2/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0ac2b3ed870b51b10a531b6028dcf676cde3f860430d3da66f633fbf3f56dfbe", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/vlans", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/vlans/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/vlans/vlans.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b14a56e9f15fcc8796cabef66fe29795f1286eefc8693350a7946a0e292f78af", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acls", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acls/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/acls/acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d8391bd3769777f0e5af3d4c4810b6cba6333eb879c900edf7934a51a402230c", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_global/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3a9ee45c3d090050cafcc1bc6e68c04ecc98b4a9e1568882d33b8359631623dd", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates/bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "09398a3d648ef1c3645fbf5d10ed08890de00b22c658a71e77ee632db94da8d2", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates/ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "95fe62bc2ed00dbb80dddffcf9bdc0c0fec85093588f2be8b1faf454494fe1bc", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates/ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f397b64b0002765de0c6cf10890c0bd9258c44b7cca5f10ce8d22a7b49ebb18b", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates/ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e435e4a9ced111de9f09c2b0a290ad786f1263700b2027f7abc8f7e055e0ed78", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/rm_templates/acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "19616ab7b905f3347f2ad8ca1cd6d5a1d2fd50ba46fb705f2c6de560d836d4c9", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/utils", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/utils/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/utils/utils.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "64a69eb7e544ec4232e0fb1e90a198394df64100210ba70318a9bc459d5ac316", + "format": 1 + }, + { + "name": "plugins/module_utils/network/ios/ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "287c59afe40847a578e6db8074d49c17e1596f472bc4ca34d07f0aa502785239", + "format": 1 + }, + { + "name": "plugins/terminal", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/terminal/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/terminal/ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ffa8149fa5f5e9d1c345ce71693e5cf8633459e5bf613d45dda00ec68a34f497", + "format": 1 + }, + { + "name": "plugins/doc_fragments", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "plugins/doc_fragments/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "plugins/doc_fragments/ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ac52bca746d9f2d2aa710495508f6b6dc46e7dc4364745bb202cccd96ba9f39d", + "format": 1 + }, + { + "name": "tox.ini", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8489be3acdfa2a0fc1afe08c62db1863042fcdcb812ae76487a6cdaf3d17eb9d", + "format": 1 + }, + { + "name": "tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "01c2cba0422bdac8688109a3e7d137ce710603686005afe4b323775a0511abde", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/aliases", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f9197d0a4996205b420a60b2e87067fce0b51225e6821100fbe1b310c628cbc2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7d6c6a7d802005cd2c85fbda2160439806e81cdce14e0ff6a351d24b2edfe862", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "74bcc717859e6359673ba6d529c9658ce11d1d37ddf572fbb28b272ffacb785b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7667023709a6c9cbb6e4ae02cbd6048ac4594c7c7d8079e537a12d6ae94deeb3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f7c27cd157487084217a300cd0feb6a28914d373abf10486636dda1c4a367176", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7f3df1a8c6d7ddadfe184d5e44e3955ec0873514099dba52087ab14f8deb397b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "26db719f28795d48893b75acb7ab27865359b3958316b9c9380d3c4eb0979642", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7fd53bfa448c08344322cc25bdead71c4939f04f6f33872949f044bfe440fe7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "265b64036c857b4db4526a1597060dc9d25031013b23261ba12a9dc9fe87279b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_global/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7d327294611eb611d6f35e9a2cb61b3874bb19464abb611263e0210dcc9a3064", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c5d533348c002828616b4f8406bcfa54e9c9a892ac23ad0cd8e558288b20ea36", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b2823addabb6ea8765af8c22b9deac38eb5fc2b707eccb9b80fddff27c7bc8a4", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "46caec7aa1b09159e6984249b9196dd0133b3020aefebdccbe383e6870f041e9", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "da714367c037b52d99c4a49409a4a1640f7822e1f0d8586aeb9ddf37c44e8d89", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6275810432c22c259301c7672275cf310de6edfc4e6e4e3233450b68211eab9a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a81ce03dddaf3374eaf766c910cdc115e6bd6bb86207fd32ae7c303949dd5e7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "79157f261882a3c80e798e045e077fa01247699fb8e1f44528702d05ce74fbc0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "638da5e125389338a676c058d51f2e0f4e6a78f8ec16d56315c0f3f38cdba8a7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "512ff8a43bd990aba33ffb34e5bbbe10a33e32ba66e16da7d131bc3427521958", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "174be5b2e49206d58d51fc9ac065942280ea2c762345d745ba4d6e8cbfb4882e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e6aa2803ccc96af860a3b4d6456a0aaaffa1dcb4281b0ad532a6a11082379a3a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "642085133a90516dd423a546fbd8ac47d69f209dd5cfe4415a623506ab439a0d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/_initial_ipv6_setup.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b90638bf0a5e6ccf1223191195dfe436dbf2919cd7f58509dd3474e897ff4373", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospf_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5aad47ebad8c598af540471e09d44eb59844b0c4fa5badf3e26925a9bffa51e1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fd14404c1d656a5d3b5799c224ae52331ecec92f00eb7bf53b862035785aa602", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d40f2c5cb855db5567d8c30a8d6525eb05a6b420f1293697dded7caa77e16936", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2f1261a7746841ddac98804fc6ddc815c5e571de8a632e327fafd976ea2d9cf8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3415068b46349aed852408f7ef280432b32ddfcf3c33e9173b197230d8f75fa0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "40721eff93f51b2081a7343b324840cfe9e8af8ab301a2af6379b24f08c50ddb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f8f69ae3107eda13e4da34224d276a12a02773db62dd1d86b22b49959bb5a721", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/_initial_vrf_setup.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f754efff9cf7cfd7e0b941c7d178d6761a9f0972d79a095e35f53d2ea3014b25", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6ef92ac51d1e40c99598b9a3210a5c6c00a14e7971803df96851fc963921f6e2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2660f96968e549f00a5a3495eb3aa52fd55d108c1aab3ebc1c9556aebd7a6c77", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b2f5aa315413409a7cc566543432407ccd01c94187f1b2214aefcbacaf9ba1c1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f4ba9d828aed2609febc925384d34a36ea4575050b6790a84b2516275e1cc974", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "47caea1c48e2e7dac3ab13162b34153a831851ba5ef8b859e6dc840cbc1cdce7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "96bbf7646259334e76598c0eb51d0182dc58198286a223c0bbada7e8607a2710", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv2/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "372d741359caac42ade5c0002bdc782d1d938744f191204271157dbb2cd9bb92", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b6f2f2da7b4a6c3295349174bbcde0312211934bd3443fb997f853448b4f3b18", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98caa48692613524412c717c8eb25ad523087bc1d844631dd6c77bd89931e464", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8d000d875420a138f0f5fb7fc3590a79a973f2d1d5553acf1db018f7d7499ab7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "248684bc32583841054af7096b04eb0c0dafde57cf659a6af48044bdb7f7b0cc", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "31ad862316db120f597347fe7214aa450d975761e32bb3bd56b0068d58b78b96", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "50146d9bf938c13bb15670048549c6ca6a424b36005db3aab9b3d25dea68528a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a758928f768bfcd510176cf410545928207d74f665620890da1651f9e747c9e4", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98f38a291eab68c25db50373dd4914930bd149cb2b4f664b9325742d64da53e9", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_vlan_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e35665bf02673c34ba3dc1339d0a5aff4ca227d4d06a244f3f53af31bb3f008e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fb68296b0155bb33bf0bef8763a7e575caabd3b01e76d49a264c1f5015cb722d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a8a8f64f22491854226bc4e0bfed4b0d994adf05029ee7066185be014910b82a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "073481a9b551d8ff8bd2f63c557d7acf3e981e86afdb41b54fedb4ba508628a5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3e60013f8483a9df65a6c8fd0e2b8fcf9197fea50496aabcf1a11d78ed266319", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f9d39c2415640453a265dd53522de59dfe8b2928b7bf86841073c30cf0a6fe50", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "12638746d6f02a5836112cc574cb9e9bf25074fdab3bc957570d11eb7f687370", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c9bf8a4be9cd6a66964ac25c7d97551c74a5cd26eff0ea5f9619fcaa749c9ba1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98caa48692613524412c717c8eb25ad523087bc1d844631dd6c77bd89931e464", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b036a77c5d14eab492db7d0eba2b569fa62e0834b856d07725040f2bfc35f91c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "79de4354f6353bcb35a9718a6b40ea15953daf3a8924916ab07e668ca33fa24f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ed08ea59f253f7b37c73cc4abfaab2a147871b18085961af8aa197487bd91b64", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "59601ab2e70119c4f2026b235324347b0de2dc81f9aefcce4a841c5ac3f0f62d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7a7fa761d8b3ee52e686beb4d9171afe0848036b61e7b4e8604bc1f68492c07", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5bc03d4d1d986c373fd90117f897478881e2ec9d108b2fee8fb425c1664c6f5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ef455976f0c1c3746ded67a8abb50806e86185f50d7cf632f40c4b787523e0ee", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3a720368eebab029dd04c2984d92490252a06c36c0d7351acf7bb3232ec8d87", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aa8e40ffd7c87cf57184a2869674022db5ea63166d37fe9531f76281eedb7d26", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "de8d2676beaa03337eb9ba76d4e45d4dcf600102002fe2d17d8984211d312bf6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "21abbacb48512cfeb7c56f1f97c6ffdbaff33af7770174284d5d08eb4a25b817", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6b839588214685e499935c87a4ccf8a8fc92b5882dadef08887dd1c01830b2e8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ping/tests/cli/ping.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f60de9bc6e078018420c9147035ee119483682d5ecae80a7c7e3f9dfdd332df7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/set_lookup_source.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f0418eb06a8665aac17f04f159fb2b746b5e78ec9059cf43979c56a3208956ce", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/set_hostname.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d0839547e625a715aef9c74e186c7d773b2cc797ae69eaedaad0b473b4d86c5e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/set_domain_list.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4a2feee8ca8e87e948058b50280ddac54edda63e4dded07c448ad58572b270fc", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/set_name_servers.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4cba18fbbc2844823825198f8073cafc96116262f7372d998320456a4b21b060", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/set_domain_name.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0f800638b80cb903b6b1b06874ddeb12439a926e796cac9c253d8aa2b1cb4250", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_system/tests/cli/net_system.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "17ed01eddfcf13b3d866c7f9615b0f7e9e7dcf1b5aa8a66df4d85fbb03dfa97d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ntp/tests/cli/ntp_configuration.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2226a7893a17ff86b297254650d0bb7c1be9c98ca15739de21c021e7d990f6cc", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ca83c0d6a2d9ae96b4a283621594e488f384ed9b5e66533ad79419ddd71eefff", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tests/cli/intent.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "366347240efbf228868b2c42c0a2ec16c263d42ee1ec1dac87e40844f7286d2c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interface/tests/cli/net_interface.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bb5360c77922f6427c815b97de61764c4ba3a452aeb1a4b45d2abbcded112c36", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a159a96bd5b749abe2e943461fe85ad545ddaba6f7e3109f8e64ffc0acac0951", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bd18662484be5a36441132e995541a60c5a5e018030fdf54c95a5721f4f95230", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "410ec3b88cbf19c7684121fa80e41ff6499226a71c71ee3e94ffa274aed36d3b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ed13f0a1648017c5322e8bf27286eedf6e8a2bf8b27b7fa4b76977e11092d9fb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a1234e3fbf090e770038c7b0bb58808463cb21da283709c434f217b5559bcfe0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "717affaac7952aa865f93ca922cf2dee8f196356e7a4c62a0d3fa55ae5bda959", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "31f748d3d367a788eada6553244c7133bcad3f577bbce091b60e3edd31081209", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3f726a8058fcb45068789eeff628cb2699ef86ed79c24c8ef754e36473a5968a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cdf9d5d9a82b0a9e05e619b2d6e25788a3d6d8c192ad338082b25e923e7535b8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1fb8f050c5402b2a21ad4898c5f855860d50605269c551f89df566f4aee337d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f7cb827215f61a619075ac83e79739d2f574b55040d858f634f2f815c51bcdfb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "864413a0dd094399b969641e3205828dcf50cf6f0cfe4badc845f931ed956655", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acl_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "729a201d839d1892371d1e30f9d04b51dfaedbe7525cb6481671cd8721b0dcb0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tests/cli/net_logging.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "eaaa69681362580326ce460fe64fb2fc6c042c99b4613a326710a94fd9459cb6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_logging/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8f9339885cbc9efe6904eb35850e3fad551547fb348c5135a46ce644e1edbed5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlan/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0f039a2a380ae9998ab1697361cfbe03a498d0d7f9afb9c028fcfc94ce4a7712", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5647c8d18f860c57ed8e1a94079fbf5360ed3b7b642031de67f05a24ed9113ba", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_route/tests/cli/net_static_route.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "39d4c6df49799186813c1b8edd86922aac76ee046cd091c690abcd5f49390b86", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7b64a991fb0542ca93eb647da8348deebe324631744703367815086d548d3657", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8defd549cdef879f20fe308a9c5cb2709d7cf60276fe7780dfb0752c5303efa6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6cccfe0f066c79a43a4a67146ccd18ad49a2a51208bed28616f61d0cc6814aa3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "80bf0fb385ec0ddecab2bdcdf15d182a552c5c2be5368d3ea23aac8f03a47cc9", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d19eb6ccf96f20efc50fa089041cb1691e1404c66c8804b6c101defb5dd9a14b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7f1821e2db383e9baf7f6dc94697253fa2561e1aca75097f2f4d7ec0396dfb04", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b37e815a73d04e7aafc210e70b2a8b6505c5f688824bd570001a2af3884b50d0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d8c2ef6c0ce2dc5bb2ea6a8c0eba6058a9f36153846564029d53cf97e91d5cad", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8782c2952905125ab49e10cbc38aa774f89ac1a2958410514608cb67228327dc", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8576f0ce30b69342067cbaa1c7b6c95040710d1d1ad2b6543eaeeea18188f734", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8c312d099303c7367b9e14fc72e1bd347680245bde9e199e22d263f33942acf6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b2510c593b806a1ee4e78a21ed66015213fac149e1957cc688e6b3466fdeaaca", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "94c5907f62731ebfec4c8de9ceca5c169595cfdfbf9b2fb4bd9ee7989bbc9f37", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_linkagg/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f64ab336138ed6dc086f704116a453ef876b78cc3e2b6adda12e69335e0f25ed", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8bfdae66690410878e43937993b9d090ebbc8371a3883b4f2c6d40861fdd38b2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98caa48692613524412c717c8eb25ad523087bc1d844631dd6c77bd89931e464", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "31dcdedd876672aa1f15ac36c7b35b156cea9795b15f686e40b2eecaa0ea5392", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2926e432490a15eafcc5ea30088366536c529812ad9cf442596e1d806572deba", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "302d3ed8d3b66ca97253080b6c8adcf8aa8f76a49dee91ebaf721ad0bcdd3c5f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "19f7c631e76b31f1f70a4f42f16b222c636cc1502d9d54998546a58bb513640e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "db73ba9f198e50d457daec6f4bbf4b10bc17952fe8d96bebf282ecbc34ff2600", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "59dd29c3f24a09d430f692a85b7860c16f19aac1c51f387bf4bbd7e123faee68", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3e7dbdd9e080d674bb13e8a6e005cf6573ef79f1825d7d75f1debf17ed634ac3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7f63761c1394ae6ab94c50c96d783945080f9f1865b56abdfbb589a8fc87fb95", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a285a78aff5a523ab16b266c6aff19c7ea21c0fdcb144002eca41de82a77243", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "06f3fcb7eadaa087062564b82f098453ee0a6663694250cd8ee5b2d772496bd4", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6fe49cd5fd28575634589d864d5a530849bf04f7bf722bd0eb74554133736cde", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_vlans/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c091c29932709a02400f74bc7a97bfa8ffd62367667058061dc3647642cfc11c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f7e16b3cd732f89c36b3fc13da4d52943cbe80c91fa39bc0ffd21abf4bd73702", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98caa48692613524412c717c8eb25ad523087bc1d844631dd6c77bd89931e464", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "29e84f17b9cac3926148d1e50ede11ee0416559954a445d2044b2a2d342d120b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2702785ccdf153378ef622fe65cffad3c3aa14fe79101873ae536d001063dae8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "423d950268bc02402a1a1a345aace8641c4049d6887029d4e0bc40dd623d00e6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a4736716c7adce04f1ac956c3d3ad64bc69502ed50511aa93fceae52d158e9f7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9938f9bb5270a3354dd4bdd0abb9ee63b7aef6f08e1eabd81a5657e66499c109", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5222fe95fc6ef12482426687685b92181bfeb496729210771ae43432ca2fcfbd", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_populate_port_channel.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6204ace83ea546604ba6676661dadab552e36c37d378be76e18928fd22949f2d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6414bdc86a513148a60079f00166b270eb950cf4349dd968f3da8e4f0bf34367", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "60dca0ec6c0a6b18d7fe628613bd388aa2778d5a7ee5f9149fd50d3cd09cf37b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "148f00f4f03a7834e04660ade280261ea5def4055197cdbed43d589575ad140d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "451e6c82436d5015d020059b27391dbbb0f283f64730d50104d03aa6a9574688", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "522847c2744621ab880087feba0d02a42e573cc14b7fe7da531cb3a472bc5163", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lag_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f8fc576e63012428e294f77954bd683d460a6df446f5b969aa6eb237f299c9bc", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5d9a640abfe561027b4afaadcf0306d9f52437a9ca11c8c6bd33aa39668cfc2b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "75178f12ee6688bc6635aafb6d83adddbed9b5a0d12fb9d39c819afa14adba64", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6ca9087498025dc467bd0737ee5bea5773d6550281d1d3a8be1cbc627fbaaa71", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c067c840f27100f2b18efaf9f039b156ed885af45a9a77bb264893062c3c05d6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6b7debbd621f5a8edf96d49eeba53ee8622e795e5ccc1038d6f8a4207d628bc7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "159169e5c932726ac79abcb370450dc2afee7e9070cf1fb84b05f9f7fbcf1702", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/_initial_vrf_setup.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "332e803ee3ce5797bea34d78e86a6a879da127418667c303a4ae99aa629c6091", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8531712da3738c16acf1cb21899d1fd5e597f2821c3d73c569fa4ec7a94f4a87", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a59972c045b227ae8e54b691605a1c24e0c900504de8fd0b279d67583d1a8e35", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "18335466957c6d86d7ebd1e08d88f695b48ce9efb0f34614ca553a4f5df504c8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "68d81914a3840dfe26ff646644729b0e9ed9a6843e3bdae953bbd7dbe0236d9e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2e9a68473b1ab7c5eff7082cf63cb875da8f1c853d76b51b7bb37a30fde45069", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d92ba4d016ccb9e18dd025f56f2c5bb7a740d9321f54411ae598a406a6bc9d60", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_ospfv3/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "952c8156e294e0734673d19ae3353ee40b4b54d59bed8bf27d1c3afc43cf3fad", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4704bda3308d41e4324ad6de7a5a791a3524b37b28b22a18c7b95cbb85f81c7d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/files", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/files/test_rsa.pub", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4552b1d9416ac1be7c90b10b182a6ff4a4c56efcba53bb31851808c5d1fd787c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/files/test_rsa", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "660b96e5ac6d6bd17900490c4749ff3a63898bb155db0a661fefbd6ac6f0fc44", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2d819ad27b89c7447246179e00a7031c53c7ed3307e903d6bd4d70d3d713678a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_user/tests/cli/auth.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "68706403accc9add56879153657a76220b2c98cfbbe01233f76b867694fce3b5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli/net_banner.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "52cbe31b026c508d4fae39e90b528b85327d7ce2b30226d18b670871712b0515", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli/multiple-login-exec.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9d9be6ad7e8e3ff56ac83472e563316c028edeabdb9219342e515efca7fd0bd2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli/basic-no-login.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "09df55f560bdd86a377e800660024f18a2894af59abf447fdcee1e6a891235c2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli/basic-motd.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "93bea8cbf0016a4594e6fdafae63d1ca198a4f5f14a63eb25e17560b91816b7c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_banner/tests/cli/basic-login.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5d3477ec6d1ccbfc7473f9d32e3984d088dab7a966fbd6e8609c51359beabc6d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "696155604ca0ca7b40a48e1c1164b90239170bb7ef534b018b57d1b2be6230f1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8531d1ae4cf48071c3f0cd56526ad6ba50798eca78d9e06caebc631ce9303c93", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/templates/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/templates/defaults/config.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "63cabaa434b59d994f3d56383ce682f57335258c9275f2f3db142dca3ece356e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "665288590cd4226da42511817f09ccdfc92df36c9621583cd2c82919af295c5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tests/cli/common_utils.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f734bac34a0107d4d00665b60513b016d3599ab7f79f1511621cd90dddeac830", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tests/cli/common_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3b5ea64fd1753c05a8315f23375fe9725cbe19ceb5ae497165e1df3c94700953", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_smoke/tests/cli/misc_tests.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "292f2175fc31b26fc51982074d399b351f754c86cae5612883b3b0c24c05a4c1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/contains.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2802a470e4e00bdfbd33c62dca835592020bd65adf89afe46e4642342068a568", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/error_regex.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "da924dde120caf35bed512ffd26b69922f5fc9211358e351fe04051b9e4d208d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/bad_operator.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aacae494386399786aa09df529b7bec53c3769d6279674b5d15a7a3aae60b1ea", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/cli_command.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b9ed018e5e163e8f821a6034215f4b519b2d68151826aa3d676271d1a8317434", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/timeout.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a9f86a0c62932181e9d456c8bbfde8671744f801388f10eb0b12743348e7a87e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/invalid.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a4190c98ffd7c41a3340d19395d7805e39fb46d122910994fa4ff2c4e1aefc10", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_command/tests/cli/output.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6a09c43ebab142c101846c2f386ccdc2196812f70646fcd2c1669cf43fae7212", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fab2481e15366cac65f667178aec920f19fa9e6e9b94c1c288f0b1d4def6f496", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "310ea041808710ee6cd0923fa11ee216cb0c7d6648566f8c9082a754b3b09631", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cd37cb681c3273bfa2db4b735eb48e3bd6eaad60c2a7911a9f574590cd3a72e2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4890e93cae219d1bdb2c19bebf1bdde18169a8d09d5744d89343e1d797dfead7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8b582f7dfcc45db8ce601d1507f8413b3c5b498c6d1c5b6fe7c47989964ade1b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/purged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c245ca5d50c96e31c59b899d36823cf345d37a8b2f20a1bba619148001652c23", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b2da4ddbf8005d319cb8406880027dbceebb455674e15559ab2484fb2b53175d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "27a0abaffbbb3f242847ae239b63f908ac700802b6718f56785203fd08ad4197", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d63663c2b6e79824f0fbc2217b547d5430d12fb14f41272dc3aad18df627a3f4", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8a7cce21c39bcd259b9cc943a7132fd52a9f6d37a5bcd9939948d3b5b18da9a6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "42b567ef2692551479ee9ffd64fa26d62b7782064926cb84ab7d2b8bf7440288", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp_global/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e5917e1c386c28d407fb3c2e9b6bbb9207bd41d0111897997ce985e79c4bf9e1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests/cli/invalid_subset.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b7e95b6edb1e5a1a65cbe303aa55646080e15a52431fae5e293f4589891920f5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests/cli/default_facts.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6559aafec8dc0ffe3922793190f90a004954617bb31a2a4066c2da0dc60bf63d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests/cli/not_hardware.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d84f5d25beb0026af15c516e2b051b760ab3cf0696989c2c1dc32e77cfc45d2b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_facts/tests/cli/all_facts.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6f6b2280d403e2619e10a4094c2dabfdad57ffba86fa0da4c0797360993b60c9", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "87da87d01cf1b71104f49a1eb08d112511b7b4fedfba8b2680f3a37063f721ee", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "601584c238ab85d2e98bfbe79dbaea89223c2d158d1c1dfcb305b8eef1c27954", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tests/cli/agg.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f78b337a47f13293de26707d822a5c48f4ea30a07658a8927547f64106a6b809", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l2_interface/tests/cli/sanity.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "746d8efba8c4ac8cc25a70656357e33db1348c67062a7051114b74b4c0619c08", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_l3_interface/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "377b5be49e97896ce08623bbfc5be19a728e9c2081cf5ff30d8f1c9ff84182ca", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2459ac3ec5afca9ebb776104b75666ed58f7dd16de2cbd3302112941b3b41b82", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tasks/cli_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6fb40eb0a58fa2ec842aa0b05ce9b85574fb6a99502e3a74f2f0226c7076e354", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7dfea86e7584dc37126acfe5ae7fecad5b7a1ce6b33349b5522bc8170c9da137", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tasks/redirection.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "24c235a52dd3f178bf104b6909e8852323ae8c7e31019efd6a86452c621c22a5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/meta/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/setupexact.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "78abef2216f92c74b21c0a935660fa35625c923e4d3b5d6eaa014a2f7b9d5182", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/configstrict1.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/configexact1.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a112244df64f4360549463724af9ae4c598c3f39c22310a4d0a98c44cf034408", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/intended_running_config", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "69c0817a704c7ef0c5c3acbaa44a542c03a1ef42459a35957714b0a838636df8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/setupstrict.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "78abef2216f92c74b21c0a935660fa35625c923e4d3b5d6eaa014a2f7b9d5182", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/configblock.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/configexact2.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d7019ec0a3b0c34ed351eed7b9ea2979114804e6aac94b9433bd42789bec5b0c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/macro.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "240ea6bffb5f8140b8fb61c0e4505e89f76ea5c0ade1103b63b25c6024e57892", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/base_running_config", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7385f5112a2ea15a4ca3f480bf6830bf91439a67073d846367170819b02692c6", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/config.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8a1d61def7b5db197597c56f0c6c31f6aaf16ab38c990e99e386305f46ffa6a8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/basic/setupblock.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c7e470728246324f9d35d7d1f36e53f10a1d424cb9b14aea8ebd22ae03384985", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/templates/defaults/config.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "63cabaa434b59d994f3d56383ce682f57335258c9275f2f3db142dca3ece356e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "126c357f960d8408c7d5e4c3bdc05e2e5e898330e173a4f56f72240f10aae4bb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config/cli_strict_match.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7fe692780a98653506cf8820d82d790f9a0d0fa4207f373c225059f7ad7f3280", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config/cli_basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "db3b302a31fe498934442cdd7e8eb36f33adbe9275c5a2ea4995448f0f386c99", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config/cli_block_replace.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e873d48d1a9c2a8d8fb4c66e5217f01a45fabf9057345ce4210c279041329e9a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config/cli_backup.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8e3dc4e968e2149e65f78bf511fd56927fb8a0deb33233b24f6205f38bd5d3d8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli_config/cli_exact_match.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "07a6d77ab31b7a2e9948ba9cf0f7c66269586ffaf4c15191909df635ddeb7a72", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/redirection", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/redirection/shortname.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "dcb176c40f74838c5514cb619446c7e7d5bf45e3e79b5ea105cc1724ae987014", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/backup.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "077a580bb1fb38b4a39c187c4d59f016bcb820d709ae8153a028762647bfce01", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/defaults.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "45ca9fc442124d5f6b9badf4d14bf575c3d5ebdda6824f219c78de0039ed24e5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/toplevel.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d68ad1763287bc15ca8c470a8ee82ae549b0ce4609a4372b2ea48067826f0a8d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/toplevel_before.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c6170c4b9c4a2c9e8573bd6edac18aaf5169f4b8d8899ac532e8d9d30abb1dd2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/diff.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "feacddd26bbcd6b510468edb7659d0664a905fd3cc2b5a170c89469ab2e55463", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/save.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3d97ba05a1e9058163daef744f352416f86dbce90c4cf8b78aeceb14482960ae", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/sublevel.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2c935a9ccdea62b5d8d5f06bc041f3dd5868588098186053494b42df8e93bbee", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f0cd6610a79297f0205b226cfacf01bd712ae66ed756f834887cab483e3538e2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/sublevel_strict_mul_parents.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b3f8924569731052bf142a6f8a55b793a9c4bb4e4604b747895212339b40dbcf", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/src_basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f4e60253e9103798a49fc60016447b078ac9a0c5b5931e8c529fe9c59478bbae", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/src_match_none.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a46810ba3e0d57f610a4c7adb367d3424e4b17d979bed6bcd8dff1d2603b05f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/sublevel_block.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d609783be0aaafc97777552aee41d9291799b1778b3be0cb31475507d819b700", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/src_invalid.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "869453b6c865ecc053bae989969a296348ce42a449d3d289d02d05a9352b1732", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/macro.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "546f4182e24f1e46458f2f69852d1e37163e2aba95d35a83f5e21209d652968b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/toplevel_nonidempotent.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "12a46c088957d5e84a037d94e31978626ccb7260abaa125bc52677fe093656dd", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/toplevel_after.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3f66eaf80e762d26aa7684cf57754f6c196e4d798b5daa2c6a2f530a0a79e5fd", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_config/tests/cli/sublevel_exact.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7a046d3257788c25299f7e11df7b23c91da7f03062e5c7b56eb69ba3f85bfca8", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2b4a818bc4fc5a81fa2f98a0e133af948e6f96631a2e69d7f346fcc4148e62fd", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0491773cc2527ff3af722f14867a5538a4967db5a1b717e0bdbb4db1afd3583e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a1f98c6e98c510dbb08ee5c76923de3ee2606b4f98eff6bb8a46f17924942bd", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "23f54fb0c468fda513ee975fa2e47d73a9b08ac9e83168cc8bd52ba036b99629", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4413b53571a4b0fc057b05052827c343bf10920cb7785a20b1429d5ed01006", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3e9fb6dbcdcf968f420ab7a2905c750c78771576dd223626c65f0945ff37520c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b6324775b1ad6f2e86073138fd4ccdf544ef42a25048473ea15b6d357493bd75", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b0e29921e7333c5db5460c31aa84dda91275ef56e29530f6591e2630b4ba7950", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9d09ae34ab9af0ef314bb6764d677d9da6721c2ea6ee999a6509323d297907f0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "57dbc0b90b7478c18048a7f9bae3d0d024564035838e2e7cf4313666a0b1914e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4c1335cf9df575d9d7584939967d245bb9a20d7c05fdc1329d5c3133ea954863", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "15bfcef5e975418d45878e4d6e20da467c732ed63c3e08906ea1e453750457d0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "492b145950e2e3277fa644396a716413e16f7c9fcde7b8fd3dcf650991bc87a7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9561612cbaa92216b8491e2128c11fab8798c2a073abeb875977b999c46e873d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "248861e24e404d07d4d7ad5b1e1581f6caa0c9fdbe7f90121c92188e94355e9f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aef016ff42f3c5acad560bea30e80e0a622f55c688d7e7b4f58927f3bfe6beb3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e75ca59ca7de8855b00216abc68e71d1176d610db66386198d49940fb8fca074", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1f1fc5128f0516cc0114b35b613e0409daafefd7061643fbc9f5928715bbca4f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8d4356c3e0714d399fbd2d3034dcd02fe0c21340a285122de1cf4d6539675100", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "81349a2741a30f2462a1c7791910c9c0f68937d0f375cf92af5fb82d4266040b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "94be65eb2f51dc8fad5d985c608f7d4a1666717341b585f7211b47d4d0e69cb1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6cefcfe20f54715dde671afa1f2c92aead3272ad10567a55d67047c4bd11835e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/_intial_setup_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2bd7f282ad1f962e2119ba76ffcb7726632986713300f21e2f6f44bf1d9fe0a1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_static_routes/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f97183b143a95aaa6e45db5f6a2bf7648e2f7e1451cb2de901139bc4e0503894", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a143f1637070f48f0d805d277b37161f2f28380a40fccdec53f388f02dc58bba", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7afeef95df204472049d68969563d0bce130d83df7ee56cf4cb41977ceccc6be", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "96279d4409a0798967325701c2afc44f30831c10b1b7f51cfbe88a189f61172d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4c99e7fd6e2eae766ff1499a5869e5c5269eba57ee45fb4f552d560a88f195d7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "82d38a7f53df95819fab2099e3a77112be8db7de94e49d1703bb1e9921dd7da1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "42ae03bd0a338028359088907ceb670b7ad96c65cde905b12aed9083a635bc1b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "93a4ffc09a1efe77e5c6e1d1f5333e5cebe0155160fdd4c8f1981a6a1c9997c0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_enable_lldp.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5de1d929d534d14a5b6e680b77c600c324f693943d7af0ce24d7d0a75557b228", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "662492761a0d003a85490541067f11f2d5646ced351dcc0bfe2b1ad8033ef608", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cd7988ef24a50957436cdc0f0be5b585652931186291ecd1fdaa0ff8a0497a89", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e38937d74d7e7d5faa59ee68fcdaa5af2813452a2d6dee23e07eb7dd7e038216", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e67e436f1614422dda61c126abebe442aa9bdf87be325628b165e746eb4efffe", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8c81d733ff0fd8fbd90b6912ac9706f38577fec046b9a69e2a08b1e98465c256", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp_interfaces/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c91f8c007db3d0fa4630450ce4214eb94fb3eeb61acd4251898f16ec748772ba", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d47efd7341e66a847bbb70768c4b30876d4c6b044b2b65859416a4ce738e7191", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ddf85efe18296ec17d890e6539366e7ae535082e3ddb5e795f3bbb3de8e9625e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lldp/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2ab12cdf400e4f09ac2823be50a835bdbcbcad55816b26f9f9bd320f886b500d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "348e33b47422ed5f7ea038fe5365638fcd086ee7a32b4cff9b42adfe8e049d8f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a5282279957f89f8930b279d9672664a1f7887d3996df2fcff9c0f08e9829d2", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8e82c716422654d049fd043bbf84d624ed532f96741e032f52f14c19e970d3e", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_bgp/tests/cli/basic.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1d38cf19d1bc5930d5d5e7f80f3580137da7c884535c0d3ba3ee9a8e679bd80e", + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_ios_tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_ios_tests/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_ios_tests/tasks/main.yml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1302dd51d004f880ec4612ec6e2f053dc0672adf212cf0fb662da78394ff3076", + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_ios_tests/templates", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/prepare_ios_tests/templates/config.j2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7ca941952f4366404a261ceda3a81c9c28257e7c189280fe107be2b643565546", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "34537c31909d55ab6461991eb2ddfae9e4dd32b1b7e01133aa040dfe08ae02b9", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "98caa48692613524412c717c8eb25ad523087bc1d844631dd6c77bd89931e464", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/aliases", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9b121bba6a0892e8ff599846aa1ea5c388ae3c8a9e6a85192f43b89cf992719f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cec8b5236bf31c60e732478db17fa577312110b32ff79337854aaff8ecb1772d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "11af977f9509c28860607ff9170d65975153d8554690aeff50a507d3baf20ab5", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "75d21d0679a8d2158247e0f8d7dc98c3b41a9ae404dc270f9b65e912aaf6e98c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3861e5336a9a03bea43d9022a9e6273c26d28addc839c28c47ee459a6c8afe7", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5ab54c78347e95e5d8cd7603518a069c83726a85f6434c5f22d8c7305dbfac62", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a1d1f8e37665348ab79e2b065266bfe958a4666e81c9f1510f6202e2d82b604a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "274c06d61c608744714ababc9846161da48f65c34eb9101177f286eb88998310", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "de667d557002ec93fd5996cb02c3898acf10320c105feeb30ac576dfcb84626a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c9e3364059e41ddf8ee03262a6fb8216237df1691ee880c50978b25c4bf339e0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_lacp/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a1f04e8c3243caa2a9c153e8d7cfeb4077fe71471f2b197bf4079b31b2e654a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/vars", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/vars/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec8248040d37fc5f43c5adf88a4e1e8d0c34369166810c71c171095eea90823f", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tasks", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tasks/cli.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "90528688ff4d0b98df05918adb9b9740dfcc14e9c9a544c2f7507613d21e98a0", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tasks/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a2ed6e2e9ba3726d6661ba7938c2a5bb607cce4e616fc0edb05e1e43d365e5a", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/meta", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/meta/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ec4fa30fc4a7b9e002d1c7b3932286ace72ba36e4f532e2cc79f49d07e0794c3", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/defaults", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/defaults/main.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9c7a04f67f78ee48d4cd68a3fc7ec07e8736cf82ecdca0f9600eb2fbb621d390", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/_parsed.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cd4c4ddfb23dfd766d9414e44d760ff41febdb8b88e9fa92e5f3fab86b5b387b", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/gathered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "671334b19c46a76eae6421800a1909239ced11404233ded662a70dd5c93d0755", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/replaced.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a91796bb081927844db93ac9dbc85c01c27dd51aed04df77fa6bbd78bfd97f21", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/rtt.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "72878b84b6c86e9209c840715748bec8c59a2c735fbb8b21eed09c55bb48fab1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/_populate_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0c0ebdd64b612d61cf679b72a9fe7477b92d5e93d247d9fbb62c0b0166757be1", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/merged.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1bac73f2af0c4b6a90e68c5321c74b5f9f6adb7145308b553ee4705cf642600c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/parsed.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "488cbd4a9ccdef6595ab6d11ba4fcd191f8e700d92702177dca35be628ce442c", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/_remove_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5844e5ff91c0d27550a10f496e3bd6b26171da8a1b192da9f4ebb7a0354b69fb", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/deleted.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a995671672aa6ca7cd507bf20117e940ca3eff64d55bc44c7f2f0191cd481361", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/rendered.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a9296c100c4dcd107a1fcd0f60247e90664e5a1ed6407dba3b86e320d9fb2f24", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/overridden.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1747222439d44687b11301df1102df884a619df6135eb888cf7833861dcb583d", + "format": 1 + }, + { + "name": "tests/integration/targets/ios_acls/tests/cli/empty_config.yaml", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "7582a5d7b187379a9bcd002658e4395f9584c8ac96816df45a09cd0d93fb1ffb", + "format": 1 + }, + { + "name": "tests/integration/target-prefixes.network", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "48ee046028069a9c6ded9844911eab9020389ac067e2a8772244b99be182e063", + "format": 1 + }, + { + "name": "tests/integration/network-integration.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d67b11263a8f50b30bf43c7c2b4bdd8dc4f173f0b5dd22761311360dfbd56a1d", + "format": 1 + }, + { + "name": "tests/unit", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "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": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "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": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_facts.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0b8e6d123996061914929a42aa6f749f2f4f4c2e31cabbefce874868d6d1d8c1", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_user.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e696ae7d9089da2b018b5d063e98df9ce12a7928249c0ad52101741d92a6293b", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_vlans.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9dbc48dc8ad3c1de295de2800de3e67eb9f3d01c558fb446aff3b836e3fa8725", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_l2_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "308b9e24afe4ee6dc733601ff4b40021376650298819d47ae32969713236087d", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_command.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "28cad95e496200197e2f944953a396f732b5174969e4e2401d2578bf67db59b1", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/ios_module.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0e3376753daca30313c5e85bb11f4f03e0adc6b648a95635592bdd5f9a784cf2", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_config.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ae677b6f020333bc79d555251392f9c4d54b0fcb4e49b005acc13fa30c91c20b", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_banner.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f4f23f3a010e5bb93ee7634ccec86647479c5fbab700e61c2d328d91a0bdf93f", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_ping.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c027e59908d7a1dc236e5b5aa79c6972f395a6a8390b43ab5a40fc106997745a", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_acls.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ca4ffcf4681073a36b599e3613f1c1ca65c0a22f52d54d289d659da75922976c", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_ospf_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1a87a529e65a337112b2285e0f9c002dd0339f5628ba77e43caeb13fb62b716c", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_bgp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "69ffd81b35e9c16361f9131b819410d88abc90fc75ea7ec8588cd2f10e1e4a46", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_static_routes.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e5f58775a1c8d83e1ef0c1299b98eb60515c0c54e5c7ba902e77675d39107fd9", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_logging.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0cb87a4501dd4e8e8991d498e3d8bc29ccb134ba7a581d54f5847d53f1e68657", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_system.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9a774208dc00cf88e81c0b6b189f15a881f17f0bcc94013baef122973d8ddb20", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_ospfv2.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "1676134c4365f4e71bf82893f34f4afa9dd0bae9eae19b9fe26393ff6f014079", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_bgp_global.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2095fab2b637515088e7ae8e2e28054cf5b7f61fd620649846eb43c60b61c3e7", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_acl_interfaces.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "843085ca26cb355fa6eae058a321efd78449cb30c59545d0dcaba99afa36dabb", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_vrf.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "eb1793391c0e5aa98c2870048dd4fd9186e750030ad721b70e13e1cb2f952dc6", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_ntp.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8eff29fe6aaea0a189085d407f71f249c899651462dbbd16c1a36e3203bca3d7", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_config_defaults.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "114e89387a2b3cb37c475ed22f287f83dd93bd16a51845286b27f8355d1ae0e5", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp_neighbors_detail", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c449f224b8f3dc1d11e310bed18bde4bc9a1ff71b856d948f7ad17d0a2916197", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400_df-bit", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8452a768d797ca829ff18314236a7275cf03a14f751c6f53c8b6711bc8a1d7f", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4962134fb2b2230a111b5b94f904ba094c12d0e0775e22c50b3db6599dbfcb36", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_system_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ecb0f88d690961592ffec4c1dbeebb4b6883ed2fee08fd60117a3b7937b37949", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_config_src.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "57d42d2e8e8b7a4b6cae566115ee42fecea077b525cace10cefc3b7dbd85f033", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "547917e90b62a4ef7eb05c6a2527019acf8e3790d7d5a0c9f6b24af6a82a2fb3", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_cdp", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5abf76b46295216c079870fba8c70f8f6064ccd667e80d91e31b47ab84f6fd70", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_acls_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a56b3c434f21e90f25e0f12503cdfa2f261d09a0fc1a1bfe467e4dae8d45d727", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_bgp_global.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a2a266a1aa49e62f48977c7dc7bc6cfc354a9f7ff90b5eacc39116a9a8bf1bef", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_user_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "92081628d201c43cc40e2022f0ebac80f1ee5c1e78e19479d0b94780945a9657", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_vlans_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c251cad5781d9a1233b950340cf888ba271d4061b54b03c130c313f2dc29f208", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_static_routes_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "31c86739af2efa1f2a6329c94811363a53db0349590294f5a4d54449af2ca367", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_memory_statistics", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ipv6_interface", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_acl_interfaces.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "bd18662484be5a36441132e995541a60c5a5e018030fdf54c95a5721f4f95230", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_config_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "6fe81e446733fef4e3643a80042ab4111b9b0c927599c4b5972ecea4c18b4ffd", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/configure_terminal", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "75a11da44c802486bc6f65640aa48a730f0f684c5c07a42ba3cd1735eb3fb070", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_interfaces", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a6ae9abc8c6e47a7f6d8b2a404ee70a4f389bea8ce2cf0b70090e4a50d09be68", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_vrf_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "9ee43d746654712aed9c1163d6130a7b6de350a3efef3e6e228355378b20be50", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_logging_config_ios12.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2923b7e2af16ca384a4c44c7fc1c9944367fffc1769b9ee6c41d73a9e0a2c1fb", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_version", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a6290b0be0cd8622c90617eace7c4c8bb1508a77d33c2b0e7bb9d6f7f8967282", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_vlan_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "5bbdf12bc4e3492274b5370e88d533157373416503cb9e22191fab89bdb1ab16", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ad64c29374175a8d737d01ae856c16364c442fca9ea7b9447ab8f22d9ed78dad", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_running_config_ios12.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ed9d617788c3a95226fda5a0dfa4271afe77626709937b27a3af70ffde7af53a", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ospf_interfaces.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "64c47152e30e7e18ef57862e1354f06ad6656e39d43ca6832363bf0ddc3cb3a6", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ntp_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fbc202ae725e32e8511fd53c9ef52a5a8e361e766bdc74fa0ceda781a247ab5c", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_virtual_switch", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "aa61d553aa1411a4ad0724f0b04d9f2cd39030eb96f550f67937973a674dfe08", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/show_version", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "65a51f235c73af72788a8add79a0e49311002d7a60ed9ab66b6d5ce9f514d23b", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_bgp_config.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8e1448b74254646dea1644addbebf552013bc999c32b8a90f3141fadfd2e045c", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_l2_interfaces.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "357c88e0ff3c5ad2fe0b7262f3cbc311764cb190c31decdee75de65f9e913eff", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_10.255.255.250_repeat_2", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f6102ec8eb37947bb6892dbb4c1252c794ef52376540c9d8ce2b9753aa613685", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_banner_show_banner.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "fcbd9e21fbc41c072eed699ebf08ba9fc0e86b9084e4e54eb701cc12d4c764d0", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_size_1400", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "825819c8953b25588aadeb8264ebc23a52d06537049b7e3f4f0b9edfda1b7e45", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_lldp_neighbors_detail", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "acecbe3bd51a94baad82569be08448c8902974c14c1cc191efc5e5771bd6ae70", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_show_ip_interface", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_facts_dir", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "be78a9714687ce28322efe35f1df91b12b532d87f552aae6c321d44bab0109cb", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv3.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "eb0bb42a712513bc2ba44a00a3f7621109f5484ac35af4b6ca7f72dab288cb3a", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/fixtures/ios_ospfv2.cfg", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "80595dd882cfee31a890d13715964a5d750cb415c9b81fcf12fe6c236159b337", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_ospfv3.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c3ec4654b34ca0eadd02469f5096ffdda8b9a5b4cfc7982c4f88d1689958552f", + "format": 1 + }, + { + "name": "tests/unit/modules/network/ios/test_ios_vlan.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "946254375410a80d85532bd14bd5b0d97a26c7331775661e2aa57e8659a155c8", + "format": 1 + }, + { + "name": "tests/unit/modules/conftest.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2af4846e50d461a131ad3edfb609fbb39a9eb1796048c62e4ead8234bcf5c6a1", + "format": 1 + }, + { + "name": "tests/unit/modules/utils.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "69901effdc8994417ed4d30ea1d4b75715633ede85b2df8cf4679519614a59ec", + "format": 1 + }, + { + "name": "tests/unit/compat", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/compat/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/compat/mock.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "52ecd54195edca933104eb3e937547c7395ff604ada2694a8b184c2c1466dbf1", + "format": 1 + }, + { + "name": "tests/unit/compat/unittest.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "3ed698b1faec43d87a2c1ebcb15a2aae48b09ff355bb9a598e5f5a1c928dbb30", + "format": 1 + }, + { + "name": "tests/unit/compat/builtins.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "ba13a350ade8ef804336f888d5883b8e54f8bddfb9d0fadc10277a8ca6540f4e", + "format": 1 + }, + { + "name": "tests/unit/mock", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/mock/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/mock/loader.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0cfbf4c710a5d5725f84d5f34ab76ec1a0e853397cd945c90fd97769f89dddc5", + "format": 1 + }, + { + "name": "tests/unit/mock/procenv.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a8aa6e5f3fe85e6fc844a6e1f518b6cfbb468af74d4398ee898d8bde1cc235e7", + "format": 1 + }, + { + "name": "tests/unit/mock/yaml_helper.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "94e2f3c867d2582c9f7a0e99e544718e355025c4a51c9925e70158fa89b3609e", + "format": 1 + }, + { + "name": "tests/unit/mock/path.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e4a4744bd9f35557ade9a309d57ba379db1101a61054964d1a7a2ceda6190133", + "format": 1 + }, + { + "name": "tests/unit/mock/vault_helper.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "feae23166b6eb502f7d9b77c314970516c9a99aaad7de01295b4dfdad53c5c09", + "format": 1 + }, + { + "name": "tests/unit/plugins", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/test_ios.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "afa954732c939f47b211c593c7c734edfa0fc3fbebb230a5a72b558598ba1d84", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/nos", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/nos/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/nos/show_version", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a21600440d1fbd2208fd81eeeaa632cfdf6b69c060bcff46e5a3f4a5f5c26f68", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/nos/show_running-config", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "42f2e50d84821d1ce5c9ddfa082e7a6086254ef9908166a0d4523a3dc5b6b2df", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/nos/show_chassis", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "a2890b7a8db9c1e8954a186fa311c8a2b44477b1d04bff9c32bf75b7797b4533", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_version", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e18e1a4f1640ca226a2f0d067a422af58218fa7f191a8b71394432a56177c7fd", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_startup-config", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_running-config", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d1a135373ce559af818475189bbfc8ff838f5891869b62e159e38ac4c30b3284", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/slxos/show_chassis", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "2612f77ae1f3f24ce219d2ef967a20d86109fcb47b8a4220c9d0493c717a5743", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/ios", + "ftype": "dir", + "chksum_type": null, + "chksum_sha256": null, + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/ios/__init__.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "format": 1 + }, + { + "name": "tests/unit/plugins/cliconf/fixtures/ios/show_version", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "28896cfd7a101f137f8433db1efdb33343aa43425aaedc2d4f7eebec7e71204d", + "format": 1 + }, + { + "name": "tests/unit/requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "49ba996dc4735c3463e9af561344346dfae14bcc1a68096ce78364b377f0df1f", + "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": "bbb39bdc5fea2e4d4f92cda125a7998d4d9dc3f9e0a67282cf65c166a0c280ea", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.11.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1", + "format": 1 + }, + { + "name": "tests/sanity/ignore-2.10.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "4d5b86543c5d0e71325edbf6019f42e4999f5ef2b9121a0c2e30bd0eae3d0fb1", + "format": 1 + }, + { + "name": "tests/sanity/requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "c8a4ac4bfdef88e75d6e748e35a42fb4915947dfa2b7dd788626fd829600e014", + "format": 1 + }, + { + "name": "tests/.gitignore", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "b5726d3ec9335a09c124469eca039523847a6b0f08a083efaefd002b83326600", + "format": 1 + }, + { + "name": "requirements.txt", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "883b106f13b0c6536f55619685ddca25968b4167dedb12e08fa37c93f4c63b25", + "format": 1 + } + ], + "format": 1 +} \ No newline at end of file diff --git a/collections-debian-merged/ansible_collections/cisco/ios/LICENSE b/collections-debian-merged/ansible_collections/cisco/ios/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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. + + This program 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 this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/MANIFEST.json b/collections-debian-merged/ansible_collections/cisco/ios/MANIFEST.json new file mode 100644 index 00000000..c21b066d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/MANIFEST.json @@ -0,0 +1,35 @@ +{ + "collection_info": { + "namespace": "cisco", + "name": "ios", + "version": "1.3.0", + "authors": [ + "Ansible Network Community (ansible-network)" + ], + "readme": "README.md", + "tags": [ + "cisco", + "ios", + "iosxe", + "networking" + ], + "description": "Ansible Network Collection for Cisco IOS devices.", + "license": [], + "license_file": "LICENSE", + "dependencies": { + "ansible.netcommon": "*" + }, + "repository": "https://github.com/ansible-collections/cisco.ios", + "documentation": null, + "homepage": null, + "issues": null + }, + "file_manifest_file": { + "name": "FILES.json", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "74f9b10ef7fd3e8f88aa91f18a362ea97fdc5975d4a3eff0ef65a7dae2c32da9", + "format": 1 + }, + "format": 1 +} \ No newline at end of file diff --git a/collections-debian-merged/ansible_collections/cisco/ios/README.md b/collections-debian-merged/ansible_collections/cisco/ios/README.md new file mode 100644 index 00000000..1137afd7 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/README.md @@ -0,0 +1,150 @@ +# Cisco IOS Collection +[![CI](https://zuul-ci.org/gated.svg)](https://dashboard.zuul.ansible.com/t/ansible/project/github.com/ansible-collections/cisco.ios) + +The Ansible Cisco IOS collection includes a variety of Ansible content to help automate the management of Cisco IOS network appliances. + +This collection has been tested against Cisco IOSv version 15.2 on VIRL. + + +## Ansible version compatibility + +This collection has been tested against following Ansible versions: **>=2.9.10,<2.11**. + +Plugins and modules within a collection may be tested with only specific Ansible versions. +A collection may contain metadata that identifies these versions. +PEP440 is the schema used to describe the versions of Ansible. + + +### Supported connections +The Cisco IOS collection supports ``network_cli`` connections. + +## Included content + + +### Cliconf plugins +Name | Description +--- | --- +[cisco.ios.ios](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_cliconf.rst)|Use ios cliconf to run command on Cisco IOS platform + +### Modules +Name | Description +--- | --- +[cisco.ios.ios_acl_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_acl_interfaces_module.rst)|ACL interfaces resource module +[cisco.ios.ios_acls](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_acls_module.rst)|ACLs resource module +[cisco.ios.ios_banner](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_banner_module.rst)|Manage multiline banners on Cisco IOS devices +[cisco.ios.ios_bgp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_bgp_module.rst)|Configure global BGP protocol settings on Cisco IOS. +[cisco.ios.ios_bgp_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_bgp_global_module.rst)|Global BGP resource module +[cisco.ios.ios_command](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_command_module.rst)|Run commands on remote devices running Cisco IOS +[cisco.ios.ios_config](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_config_module.rst)|Manage Cisco IOS configuration sections +[cisco.ios.ios_facts](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_facts_module.rst)|Collect facts from remote devices running Cisco IOS +[cisco.ios.ios_interface](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage Interface on Cisco IOS network devices +[cisco.ios.ios_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_interfaces_module.rst)|Interfaces resource module +[cisco.ios.ios_l2_interface](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_l2_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage Layer-2 interface on Cisco IOS devices. +[cisco.ios.ios_l2_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_l2_interfaces_module.rst)|L2 interfaces resource module +[cisco.ios.ios_l3_interface](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_l3_interface_module.rst)|(deprecated, removed after 2022-06-01) Manage Layer-3 interfaces on Cisco IOS network devices. +[cisco.ios.ios_l3_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_l3_interfaces_module.rst)|L3 interfaces resource module +[cisco.ios.ios_lacp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lacp_module.rst)|LACP resource module +[cisco.ios.ios_lacp_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lacp_interfaces_module.rst)|LACP interfaces resource module +[cisco.ios.ios_lag_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lag_interfaces_module.rst)|LAG interfaces resource module +[cisco.ios.ios_linkagg](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_linkagg_module.rst)|Manage link aggregation groups on Cisco IOS network devices +[cisco.ios.ios_lldp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lldp_module.rst)|Manage LLDP configuration on Cisco IOS network devices. +[cisco.ios.ios_lldp_global](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lldp_global_module.rst)|LLDP resource module +[cisco.ios.ios_lldp_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_lldp_interfaces_module.rst)|LLDP interfaces resource module +[cisco.ios.ios_logging](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_logging_module.rst)|Manage logging on network devices +[cisco.ios.ios_ntp](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ntp_module.rst)|Manages core NTP configuration. +[cisco.ios.ios_ospf_interfaces](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ospf_interfaces_module.rst)|OSPF_Interfaces resource module +[cisco.ios.ios_ospfv2](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ospfv2_module.rst)|OSPFv2 resource module +[cisco.ios.ios_ospfv3](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ospfv3_module.rst)|OSPFv3 resource module +[cisco.ios.ios_ping](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_ping_module.rst)|Tests reachability using ping from Cisco IOS network devices +[cisco.ios.ios_static_route](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_static_route_module.rst)|(deprecated, removed after 2022-06-01) Manage static IP routes on Cisco IOS network devices +[cisco.ios.ios_static_routes](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_static_routes_module.rst)|Static routes resource module +[cisco.ios.ios_system](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_system_module.rst)|Manage the system attributes on Cisco IOS devices +[cisco.ios.ios_user](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_user_module.rst)|Manage the aggregate of local users on Cisco IOS device +[cisco.ios.ios_vlan](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vlan_module.rst)|(deprecated, removed after 2022-06-01) Manage VLANs on IOS network devices +[cisco.ios.ios_vlans](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vlans_module.rst)|VLANs resource module +[cisco.ios.ios_vrf](https://github.com/ansible-collections/cisco.ios/blob/main/docs/cisco.ios.ios_vrf_module.rst)|Manage the collection of VRF definitions on Cisco IOS devices + + +## Installing this collection + +You can install the Cisco IOS collection with the Ansible Galaxy CLI: + + ansible-galaxy collection install cisco.ios + +You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format: + +```yaml +--- +collections: + - name: cisco.ios +``` +## Using this collection + + +This collection includes [network resource modules](https://docs.ansible.com/ansible/latest/network/user_guide/network_resource_modules.html). + +### Using modules from the Cisco IOS collection in your playbooks + +You can call modules by their Fully Qualified Collection Namespace (FQCN), such as `cisco.ios.ios_l2_interfaces`. +The following example task replaces configuration changes in the existing configuration on a Cisco IOS network device, using the FQCN: + +```yaml +--- + - name: Replace device configuration of specified L2 interfaces with provided configuration. + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/2 + trunk: + - allowed_vlans: 20-25,40 + native_vlan: 20 + pruning_vlans: 10 + encapsulation: isl + state: replaced + +``` + +**NOTE**: For Ansible 2.9, you may not see deprecation warnings when you run your playbooks with this collection. Use this documentation to track when a module is deprecated. + + +### See Also: + +* [Cisco IOS Platform Options](https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html) +* [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details. + +## Contributing to this collection + +We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [Cisco IOS collection repository](https://github.com/ansible-collections/cisco.ios). See [Contributing to Ansible-maintained collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html#contributing-maintained-collections) for complete details. + +You can also join us on: + +- Freenode IRC - ``#ansible-network`` Freenode channel +- Slack - https://ansiblenetwork.slack.com + +See the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for details on contributing to Ansible. + +### Code of Conduct +This collection follows the Ansible project's +[Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html). +Please read and familiarize yourself with this document. + +## Release notes + +Release notes are available [here](https://github.com/ansible-collections/cisco.ios/blob/main/changelogs/CHANGELOG.rst). + +## Roadmap + + + +## More information + +- [Ansible network resources](https://docs.ansible.com/ansible/latest/network/getting_started/network_resources.html) +- [Ansible Collection overview](https://github.com/ansible-collections/overview) +- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html) +- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html) +- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) + +## Licensing + +GNU General Public License v3.0 or later. + +See [LICENSE](https://www.gnu.org/licenses/gpl-3.0.txt) to see the full text. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/bindep.txt b/collections-debian-merged/ansible_collections/cisco/ios/bindep.txt new file mode 100644 index 00000000..ba9c980f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/bindep.txt @@ -0,0 +1,6 @@ +# This is a cross-platform list tracking distribution packages needed by tests; +# 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] diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/CHANGELOG.rst b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/CHANGELOG.rst new file mode 100644 index 00000000..a4fbb9ff --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/CHANGELOG.rst @@ -0,0 +1,162 @@ +================================== +Cisco Ios Collection Release Notes +================================== + +.. contents:: Topics + +v1.3.0 +====== + +Minor Changes +------------- + +- Add ios_bgp_global module. + +Bugfixes +-------- +- IOS resource modules minor doc updates (https://github.com/ansible-collections/cisco.ios/pull/233). +- To fix ios_static_routes facts parsing in presence of interface (https://github.com/ansible-collections/cisco.ios/pull/225). +- Add support size and df_bit options for ios_ping (https://github.com/ansible-collections/cisco.ios/pull/228). +- IOS_CONFIG, incorrectly claims success when Command Rejected (https://github.com/ansible-collections/cisco.ios/pull/215). +- Update doc to clarify on input config pattern (https://github.com/ansible-collections/cisco.ios/pull/220). +- Updating ios acls module to use newer CLI RM approach to resolve all of the ACL related bugs (https://github.com/ansible-collections/cisco.ios/pull/211). + +New Modules +----------- + +- ios_bgp_global - BGP Global resource module + +v1.2.1 +====== + +Bugfixes +-------- + +- To fix ios_ospf_interfaces resource module authentication param behaviour (https://github.com/ansible-collections/cisco.ios/issues/209). +- Add version key to galaxy.yaml to work around ansible-galaxy bug. + +v1.2.0 +====== + +Minor Changes +------------- + +- Add ios_ospf_interfaces module. + +Bugfixes +-------- + +- To enable ios ospfv3 integration tests (https://github.com/ansible-collections/cisco.ios/pull/165). +- To fix ios_static_routes where interface ip route-cache config was being parsed and resulted traceback (https://github.com/ansible-collections/cisco.ios/pull/176). +- To fix IOS static routes idempotency issue coz of netmask to cidr conversion (https://github.com/ansible-collections/cisco.ios/pull/177). +- To fix ios_vlans traceback bug when the name had Remote in it and added unit TC for the module (https://github.com/ansible-collections/cisco.ios/pull/179). +- To fix the traceback issue for longer vlan name having more than 32 characters (https://github.com/ansible-collections/cisco.ios/pull/182). + +New Modules +----------- + +- ios_ospf_interfaces - OSPF Interfaces resource module + +v1.1.0 +====== + +Minor Changes +------------- + +- Add ios_ospfv3 module. + +Bugfixes +-------- + +- Fix element type of ios_command's command parameter (https://github.com/ansible-collections/cisco.ios/pull/151). +- Add support for interface type Virtual-Template (https://github.com/ansible-collections/cisco.ios/pull/154). +- Added support for interface Tunnel (https://github.com/ansible-collections/cisco.ios/pull/145). +- To fix the incorrect command displayed under ios_l3_interfaces resource module docs (https://github.com/ansible-collections/cisco.ios/pull/149). + +New Modules +----------- + +- ios_ospfv3 - OSPFv3 resource module + +v1.0.3 +====== + +Release Summary +--------------- + +- Releasing 1.0.3 with updated readme with changelog link, galaxy description, and bugfix. + +Bugfixes +-------- + +- To fix the issue where ios acls was complaining in absence of protocol option value (https://github.com/ansible-collections/cisco.ios/pull/124). +- To fix IOS l2 interfaces for traceback error and merge operation not working as expected (https://github.com/ansible-collections/cisco.ios/pull/103). + +v1.0.2 +====== + +Release Summary +--------------- + +- Re-releasing 1.0.1 with updated changelog. + +v1.0.1 +====== + +Minor Changes +------------- + +- Removes IOS sanity ignores and sync for argspec and docstring (https://github.com/ansible-collections/cisco.ios/pull/114). +- Updated docs. + +Bugfixes +-------- + +- Make `src`, `backup` and `backup_options` in ios_config work when module alias is used (https://github.com/ansible-collections/cisco.ios/pull/107). + + +v1.0.0 +====== + +New Plugins +----------- + +Cliconf +~~~~~~~ + +- ios - Use ios cliconf to run command on Cisco IOS platform + +New Modules +----------- + +- ios_acl_interfaces - ACL interfaces resource module +- ios_acls - ACLs resource module +- ios_banner - Manage multiline banners on Cisco IOS devices +- ios_bgp - Configure global BGP protocol settings on Cisco IOS. +- ios_command - Run commands on remote devices running Cisco IOS +- ios_config - Manage Cisco IOS configuration sections +- ios_facts - Collect facts from remote devices running Cisco IOS +- ios_interface - (deprecated, removed after 2022-06-01) Manage Interface on Cisco IOS network devices +- ios_interfaces - Interfaces resource module +- ios_l2_interface - (deprecated, removed after 2022-06-01) Manage Layer-2 interface on Cisco IOS devices. +- ios_l2_interfaces - L2 interfaces resource module +- ios_l3_interface - (deprecated, removed after 2022-06-01) Manage Layer-3 interfaces on Cisco IOS network devices. +- ios_l3_interfaces - L3 interfaces resource module +- ios_lacp - LACP resource module +- ios_lacp_interfaces - LACP interfaces resource module +- ios_lag_interfaces - LAG interfaces resource module +- ios_linkagg - Manage link aggregation groups on Cisco IOS network devices +- ios_lldp - Manage LLDP configuration on Cisco IOS network devices. +- ios_lldp_global - LLDP resource module +- ios_lldp_interfaces - LLDP interfaces resource module +- ios_logging - Manage logging on network devices +- ios_ntp - Manages core NTP configuration. +- ios_ospfv2 - OSPFv2 resource module +- ios_ping - Tests reachability using ping from Cisco IOS network devices +- ios_static_route - (deprecated, removed after 2022-06-01) Manage static IP routes on Cisco IOS network devices +- ios_static_routes - Static routes resource module +- ios_system - Manage the system attributes on Cisco IOS devices +- ios_user - Manage the aggregate of local users on Cisco IOS device +- ios_vlan - (deprecated, removed after 2022-06-01) Manage VLANs on IOS network devices +- ios_vlans - VLANs resource module +- ios_vrf - Manage the collection of VRF definitions on Cisco IOS devices diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/changelog.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/changelog.yaml new file mode 100644 index 00000000..8e072044 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/changelog.yaml @@ -0,0 +1,189 @@ +ancestor: null +releases: + 1.0.0: + modules: + - description: ACL interfaces resource module + name: ios_acl_interfaces + namespace: '' + - description: ACLs resource module + name: ios_acls + namespace: '' + - description: Manage multiline banners on Cisco IOS devices + name: ios_banner + namespace: '' + - description: Configure global BGP protocol settings on Cisco IOS. + name: ios_bgp + namespace: '' + - description: Run commands on remote devices running Cisco IOS + name: ios_command + namespace: '' + - description: Manage Cisco IOS configuration sections + name: ios_config + namespace: '' + - description: Collect facts from remote devices running Cisco IOS + name: ios_facts + namespace: '' + - description: (deprecated, removed after 2022-06-01) Manage Interface on Cisco + IOS network devices + name: ios_interface + namespace: '' + - description: Interfaces resource module + name: ios_interfaces + namespace: '' + - description: (deprecated, removed after 2022-06-01) Manage Layer-2 interface + on Cisco IOS devices. + name: ios_l2_interface + namespace: '' + - description: L2 interfaces resource module + name: ios_l2_interfaces + namespace: '' + - description: (deprecated, removed after 2022-06-01) Manage Layer-3 interfaces + on Cisco IOS network devices. + name: ios_l3_interface + namespace: '' + - description: L3 interfaces resource module + name: ios_l3_interfaces + namespace: '' + - description: LACP resource module + name: ios_lacp + namespace: '' + - description: LACP interfaces resource module + name: ios_lacp_interfaces + namespace: '' + - description: LAG interfaces resource module + name: ios_lag_interfaces + namespace: '' + - description: Manage link aggregation groups on Cisco IOS network devices + name: ios_linkagg + namespace: '' + - description: Manage LLDP configuration on Cisco IOS network devices. + name: ios_lldp + namespace: '' + - description: LLDP resource module + name: ios_lldp_global + namespace: '' + - description: LLDP interfaces resource module + name: ios_lldp_interfaces + namespace: '' + - description: Manage logging on network devices + name: ios_logging + namespace: '' + - description: Manages core NTP configuration. + name: ios_ntp + namespace: '' + - description: OSPFv2 resource module + name: ios_ospfv2 + namespace: '' + - description: Tests reachability using ping from Cisco IOS network devices + name: ios_ping + namespace: '' + - description: (deprecated, removed after 2022-06-01) Manage static IP routes + on Cisco IOS network devices + name: ios_static_route + namespace: '' + - description: Static routes resource module + name: ios_static_routes + namespace: '' + - description: Manage the system attributes on Cisco IOS devices + name: ios_system + namespace: '' + - description: Manage the aggregate of local users on Cisco IOS device + name: ios_user + namespace: '' + - description: (deprecated, removed after 2022-06-01) Manage VLANs on IOS network + devices + name: ios_vlan + namespace: '' + - description: VLANs resource module + name: ios_vlans + namespace: '' + - description: Manage the collection of VRF definitions on Cisco IOS devices + name: ios_vrf + namespace: '' + plugins: + cliconf: + - description: Use ios cliconf to run command on Cisco IOS platform + name: ios + namespace: null + release_date: '2020-06-23' + 1.0.1: + changes: + bugfixes: + - Make `src`, `backup` and `backup_options` in ios_config work when module alias is used + (https://github.com/ansible-collections/cisco.ios/pull/107). + minor_changes: + - Removes IOS sanity ignores and sync for argspec and docstring + (https://github.com/ansible-collections/cisco.ios/pull/114). + - Updated docs. + fragments: + - 90-add-change-log-1.0.0.yaml + - 1.1.0_update_docs.yaml + - handle_src_backup_with_module_alias.yaml + - remove_ios_ignore.yaml + release_date: '2020-08-03' + 1.0.2: + changes: + release_summary: + - Re-releasing 1.0.1 with updated changelog. + fragments: + - 1.0.2.yaml + release_date: '2020-08-07' + 1.0.3: + changes: + release_summary: + - Releasing 1.0.3 with updated readme with changelog link, galaxy description, and bugfix. + release_date: '2020-08-28' + 1.1.0: + changes: + bugfixes: + - Fix element type of ios_command's command parameter (https://github.com/ansible-collections/cisco.ios/pull/151). + - Add support for interface type Virtual-Template (https://github.com/ansible-collections/cisco.ios/pull/154). + - Added support for interface Tunnel (https://github.com/ansible-collections/cisco.ios/pull/145). + - To fix the incorrect command displayed under ios_l3_interfaces resource module docs (https://github.com/ansible-collections/cisco.ios/pull/149). + minor_changes: + - Add ios_ospfv3 module. + modules: + - description: OSPFv3 resource module + name: ios_ospfv3 + namespace: '' + release_date: '2020-10-01' + 1.2.0: + changes: + bugfixes: + - To enable ios ospfv3 integration tests (https://github.com/ansible-collections/cisco.ios/pull/165). + - To fix ios_static_routes where interface ip route-cache config was being parsed and resulted traceback (https://github.com/ansible-collections/cisco.ios/pull/176). + - To fix IOS static routes idempotency issue coz of netmask to cidr conversion (https://github.com/ansible-collections/cisco.ios/pull/177). + - To fix ios_vlans traceback bug when the name had Remote in it and added unit TC for the module (https://github.com/ansible-collections/cisco.ios/pull/179). + - To fix the traceback issue for longer vlan name having more than 32 characters (https://github.com/ansible-collections/cisco.ios/pull/182). + minor_changes: + - Add ios_ospf_interfaces module. + modules: + - description: OSPF Interfaces resource module + name: ios_ospf_interfaces + namespace: '' + release_date: '2020-11-01' + 1.2.1: + changes: + bugfixes: + - To fix ios_ospf_interfaces resource module authentication param behaviour (https://github.com/ansible-collections/cisco.ios/issues/209). + - Add version key to galaxy.yaml to work around ansible-galaxy bug. + fragments: + - 209_fix_ios_ospf_interfaces_authentication_param.yaml + - galaxy-version.yaml + release_date: '2020-11-26' + 1.3.0: + changes: + bugfixes: + - IOS resource modules minor doc updates (https://github.com/ansible-collections/cisco.ios/pull/233). + - To fix ios_static_routes facts parsing in presence of interface (https://github.com/ansible-collections/cisco.ios/pull/225). + - Add support size and df_bit options for ios_ping (https://github.com/ansible-collections/cisco.ios/pull/228). + - IOS_CONFIG, incorrectly claims success when Command Rejected (https://github.com/ansible-collections/cisco.ios/pull/215). + - Update doc to clarify on input config pattern (https://github.com/ansible-collections/cisco.ios/pull/220). + - Updating ios acls module to use newer CLI RM approach to resolve all of the ACL related bugs (https://github.com/ansible-collections/cisco.ios/pull/211). + minor_changes: + - Add ios_bgp_global module. + modules: + - description: BGP Global resource module + name: ios_bgp_global + namespace: '' + release_date: '2021-1-29' diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/config.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/config.yaml new file mode 100644 index 00000000..fa19846e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/config.yaml @@ -0,0 +1,30 @@ +changelog_filename_template: CHANGELOG.rst +changelog_filename_version_depth: 0 +changes_file: changelog.yaml +changes_format: combined +keep_fragments: false +mention_ancestor: true +new_plugins_after_name: removed_features +notesdir: fragments +prelude_section_name: release_summary +prelude_section_title: Release Summary +flatmap: true +sections: +- - major_changes + - Major Changes +- - minor_changes + - Minor Changes +- - breaking_changes + - Breaking Changes / Porting Guide +- - deprecated_features + - Deprecated Features +- - removed_features + - Removed Features (previously deprecated) +- - security_fixes + - Security Fixes +- - bugfixes + - Bugfixes +- - known_issues + - Known Issues +title: Cisco Ios Collection +trivial_section_name: trivial diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/103_fix_l2_interfaces_traceback_error.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/103_fix_l2_interfaces_traceback_error.yaml new file mode 100644 index 00000000..fc236267 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/103_fix_l2_interfaces_traceback_error.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix IOS l2 interfaces for traceback error and merge operation not working as expected(https://github.com/ansible-collections/cisco.ios/pull/103). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/124_resolved_ios_acls_issue.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/124_resolved_ios_acls_issue.yaml new file mode 100644 index 00000000..c8f85c95 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/124_resolved_ios_acls_issue.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix the issue where ios acls was complaining in absence of protocol option value(https://github.com/ansible-collections/cisco.ios/pull/124). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/132_update_ios_l3_doc_issue.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/132_update_ios_l3_doc_issue.yaml new file mode 100644 index 00000000..c6d83d85 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/132_update_ios_l3_doc_issue.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To update the IOS L3 doc issue raised in issue(https://github.com/ansible-collections/cisco.ios/issue/132). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/135_accept_list_of_dict_for_ospfv2_network.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/135_accept_list_of_dict_for_ospfv2_network.yaml new file mode 100644 index 00000000..f244b057 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/135_accept_list_of_dict_for_ospfv2_network.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To accept list of dict for OSPFv2 network param(https://github.com/ansible-collections/cisco.ios/issues/152) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/137_ios_static_routes_idempotency_issue.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/137_ios_static_routes_idempotency_issue.yaml new file mode 100644 index 00000000..1937c2ce --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/137_ios_static_routes_idempotency_issue.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix IOS static routes idempotency issue coz of netmask to cidr conversion(https://github.com/ansible-collections/cisco.ios/issues/137). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/141_add_int_virt_template_issue.yml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/141_add_int_virt_template_issue.yml new file mode 100644 index 00000000..c85d5f88 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/141_add_int_virt_template_issue.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To provide support for interface Virtual-Template raised in issue(https://github.com/ansible-collections/cisco.ios/issues/141) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/144_add_interface_tunnel_issue.yml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/144_add_interface_tunnel_issue.yml new file mode 100644 index 00000000..7cb508f8 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/144_add_interface_tunnel_issue.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To provide support for interface Tunnel in IOS raised in issue(https://github.com/ansible-collections/cisco.ios/issues/144) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/146_add_cdp_platform_info_to_ios_facts.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/146_add_cdp_platform_info_to_ios_facts.yaml new file mode 100644 index 00000000..4c5d821d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/146_add_cdp_platform_info_to_ios_facts.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Add CDP platform information to ios_facts module output. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_bgp_global_resource_module.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_bgp_global_resource_module.yaml new file mode 100644 index 00000000..3ffbf986 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_bgp_global_resource_module.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Add ios_bgp_global resource module (fixes - https://github.com/ansible-collections/cisco.ios/issues/97). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_ospv3_resource_module.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_ospv3_resource_module.yaml new file mode 100644 index 00000000..6e07984e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/148_add_ospv3_resource_module.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Add ios_ospfv3 resource module (fixes - https://github.com/ansible-collections/cisco.ios/issues/95). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/161_static_route_facts_cmd_update.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/161_static_route_facts_cmd_update.yaml new file mode 100644 index 00000000..de50229d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/161_static_route_facts_cmd_update.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix ios_static_routes where interface ip route-cache config was being parsed and resulted traceback diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/165_enable_ospfv3_integration_tests.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/165_enable_ospfv3_integration_tests.yaml new file mode 100644 index 00000000..57ca6aa4 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/165_enable_ospfv3_integration_tests.yaml @@ -0,0 +1,3 @@ +--- +trivial: + - To enable ios ospfv3 integration tests for zuul ios instance. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/175_fix_ios_vlans_when_name_had_remote.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/175_fix_ios_vlans_when_name_had_remote.yaml new file mode 100644 index 00000000..a09943af --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/175_fix_ios_vlans_when_name_had_remote.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix ios_vlans traceback bug when the name had Remote in it(https://github.com/ansible-collections/cisco.ios/issues/175). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/192_add_ospf_interfaces_resource_module.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/192_add_ospf_interfaces_resource_module.yaml new file mode 100644 index 00000000..010a3515 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/192_add_ospf_interfaces_resource_module.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Adding ios_ospf_interfaces resource module. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/209_fix_ios_ospf_interfaces_authentication_param.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/209_fix_ios_ospf_interfaces_authentication_param.yaml new file mode 100644 index 00000000..22185b73 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/209_fix_ios_ospf_interfaces_authentication_param.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix ios_ospf_interfaces resource module authentication param behaviour (https://github.com/ansible-collections/cisco.ios/issues/209). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/211_update_ios_acls_module_to_use_resource_module_approach.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/211_update_ios_acls_module_to_use_resource_module_approach.yaml new file mode 100644 index 00000000..ab75efbd --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/211_update_ios_acls_module_to_use_resource_module_approach.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - Updating ios acls module to use newer CLI RM approach to resolve all of the ACL related bugs(https://github.com/ansible-collections/cisco.ios/pulls/211). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/216_fix_command_rejected_issue.yml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/216_fix_command_rejected_issue.yml new file mode 100644 index 00000000..cf5da650 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/216_fix_command_rejected_issue.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To provide support return for "Command Rejected" (https://github.com/ansible-collections/cisco.ios/issues/216) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/223_fix_static_routes_facts_parsing.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/223_fix_static_routes_facts_parsing.yaml new file mode 100644 index 00000000..7544800e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/223_fix_static_routes_facts_parsing.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - 223_fix_static_routes_facts_parsing_with_interface_present(https://github.com/ansible-collections/cisco.ios/issues/223). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/228_ios_ping.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/228_ios_ping.yaml new file mode 100644 index 00000000..5d613563 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/228_ios_ping.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Add support df-bit and size option for ios_ping (https://github.com/ansible-collections/cisco.ios/pull/228). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/51-virtual-switch-system-detection.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/51-virtual-switch-system-detection.yaml new file mode 100644 index 00000000..aac0b7e9 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/51-virtual-switch-system-detection.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - Adding Detection of Virtual Switch System to facts (https://github.com/ansible-collections/cisco.ios/pull/51) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/63_support_for_very_long_vlan_name.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/63_support_for_very_long_vlan_name.yaml new file mode 100644 index 00000000..3a5d558e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/63_support_for_very_long_vlan_name.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To add support for accepting vlan name more than 32 characters(https://github.com/ansible-collections/cisco.ios/issues/63). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/65_fixes_ios_interfaces_rm_where_interface_in_description_resulted_in_failure.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/65_fixes_ios_interfaces_rm_where_interface_in_description_resulted_in_failure.yaml new file mode 100644 index 00000000..e2a0fbf9 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/65_fixes_ios_interfaces_rm_where_interface_in_description_resulted_in_failure.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - fixes ios interfaces rm where interface in description resulted in failure (https://github.com/ansible-collections/cisco.ios/issues/65). diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/command-dicts.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/command-dicts.yaml new file mode 100644 index 00000000..b8273850 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/command-dicts.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - ios_command - set command type to "raw" to support complex commands (with prompt and answer, for example) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/galaxy-version.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/galaxy-version.yaml new file mode 100644 index 00000000..6d5e47ea --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/galaxy-version.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - Add version key to galaxy.yaml to work around ansible-galaxy bug diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/ios_config_diff_doc_update.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/ios_config_diff_doc_update.yaml new file mode 100644 index 00000000..a8d26e9b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/ios_config_diff_doc_update.yaml @@ -0,0 +1,4 @@ +--- +bugfixes: + - Update docs to clarify the idemptonecy releated caveat and add it in the output warnings + (https://github.com/ansible-collections/ansible.netcommon/pull/189) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/upcap_ansible.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/upcap_ansible.yaml new file mode 100644 index 00000000..97d1217d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/upcap_ansible.yaml @@ -0,0 +1,4 @@ +--- +trivial: + - uncap ansible in meta/runtime.yaml + - address default documentation mismatch issues diff --git a/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/update_resource_module_doc_discrepancy.yaml b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/update_resource_module_doc_discrepancy.yaml new file mode 100644 index 00000000..eb23a028 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/changelogs/fragments/update_resource_module_doc_discrepancy.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - To fix few ios resource module discrepancy diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst new file mode 100644 index 00000000..5fd74c37 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acl_interfaces_module.rst @@ -0,0 +1,740 @@ +.. _cisco.ios.ios_acl_interfaces_module: + + +**************************** +cisco.ios.ios_acl_interfaces +**************************** + +**ACL interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the access-control (ACL) attributes of interfaces on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of ACL interfaces options
+
+
+ access_groups + +
+ list + / elements=dictionary +
+
+ +
Specify access-group for IP access list (standard or extended).
+
+
+ acls + +
+ list + / elements=dictionary +
+
+ +
Specifies the ACLs for the provided AFI.
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
Specifies the direction of packets that the ACL will be applied on.
+
With one direction already assigned, other acl direction cannot be same.
+
+
+ name + +
+ string + / required +
+
+ +
Specifies the name of the IPv4/IPv4 ACL for the interface.
+
+
+ afi + +
+ string + / required +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Specifies the AFI for the ACLs to be configured on this interface.
+
+
+ name + +
+ string + / required +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+
+
+ running_config + +
+ string +
+
+ +
The module, by default, will connect to the remote device and retrieve the current running-config to use as a base for comparing against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The running_config argument allows the implementer to pass in the configuration to use as the base config for comparison. This value of this option should be the output received from device by executing command.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • parsed
  • +
  • rendered
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL + + + +Examples +-------- + +.. code-block:: yaml + + # Using Merged + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # interface GigabitEthernet0/2 + # ip access-group 123 out + + - name: Merge module attributes of given access-groups + cisco.ios.ios_acl_interfaces: + config: + - name: GigabitEthernet0/1 + access_groups: + - afi: ipv4 + acls: + - name: 110 + direction: in + - name: 123 + direction: out + - afi: ipv6 + acls: + - name: test_v6 + direction: out + - name: temp_v6 + direction: in + - name: GigabitEthernet0/2 + access_groups: + - afi: ipv4 + acls: + - name: 100 + direction: in + state: merged + + # Commands Fired: + # --------------- + # + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 100 in + # ip access-group 123 out + + + # After state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + # Using Replaced + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + - name: Replace module attributes of given access-groups + cisco.ios.ios_acl_interfaces: + config: + - name: GigabitEthernet0/1 + access_groups: + - afi: ipv4 + acls: + - name: 100 + direction: out + - name: 110 + direction: in + state: replaced + + # Commands Fired: + # --------------- + # + # interface GigabitEthernet0/1 + # no ip access-group 123 out + # no ipv6 traffic-filter temp_v6 in + # no ipv6 traffic-filter test_v6 out + # ip access-group 100 out + + # After state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 100 out + # ip access-group 110 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + # Using Overridden + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + - name: Overridden module attributes of given access-groups + cisco.ios.ios_acl_interfaces: + config: + - name: GigabitEthernet0/1 + access_groups: + - afi: ipv4 + acls: + - name: 100 + direction: out + - name: 110 + direction: in + state: overridden + + # Commands Fired: + # --------------- + # + # interface GigabitEthernet0/1 + # no ip access-group 123 out + # no ipv6 traffic-filter test_v6 out + # no ipv6 traffic-filter temp_v6 in + # ip access-group 100 out + # interface GigabitEthernet0/2 + # no ip access-group 110 in + # no ip access-group 123 out + + # After state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 100 out + # ip access-group 110 in + # interface GigabitEthernet0/2 + + # Using Deleted + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + - name: Delete module attributes of given Interface + cisco.ios.ios_acl_interfaces: + config: + - name: GigabitEthernet0/1 + state: deleted + + # Commands Fired: + # --------------- + # + # interface GigabitEthernet0/1 + # no ip access-group 110 in + # no ip access-group 123 out + # no ipv6 traffic-filter test_v6 out + # no ipv6 traffic-filter temp_v6 in + + # After state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + # Using DELETED without any config passed + #"(NOTE: This will delete all of configured resource module attributes from each configured interface)" + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + - name: Delete module attributes of given access-groups from ALL Interfaces + cisco.ios.ios_acl_interfaces: + config: + state: deleted + + # Commands Fired: + # --------------- + # + # interface GigabitEthernet0/1 + # no ip access-group 110 in + # no ip access-group 123 out + # no ipv6 traffic-filter test_v6 out + # no ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # no ip access-group 110 out + # no ip access-group 123 out + + # After state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # interface GigabitEthernet0/2 + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + - name: Gather listed acl interfaces with provided configurations + cisco.ios.ios_acl_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "name": "Loopback888" + # }, + # { + # "name": "GigabitEthernet0/0" + # }, + # { + # "access_groups": [ + # { + # "acls": [ + # { + # "direction": "in", + # "name": "110" + # }, + # { + # "direction": "out", + # "name": "123" + # } + # ], + # "afi": "ipv4" + # }, + # { + # "acls": [ + # { + # "direction": "in", + # "name": "temp_v6" + # }, + # { + # "direction": "out", + # "name": "test_v6" + # } + # ], + # "afi": "ipv6" + # } + # ], + # "name": "GigabitEthernet0/1" + # }, + # { + # "access_groups": [ + # { + # "acls": [ + # { + # "direction": "in", + # "name": "100" + # }, + # { + # "direction": "out", + # "name": "123" + # } + # ], + # "afi": "ipv4" + # } + # ], + # "name": "GigabitEthernet0/2" + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | include interface|ip access-group|ipv6 traffic-filter + # interface Loopback888 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter test_v6 out + # ipv6 traffic-filter temp_v6 in + # interface GigabitEthernet0/2 + # ip access-group 110 in + # ip access-group 123 out + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_acl_interfaces: + config: + - name: GigabitEthernet0/1 + access_groups: + - afi: ipv4 + acls: + - name: 110 + direction: in + - name: 123 + direction: out + - afi: ipv6 + acls: + - name: test_v6 + direction: out + - name: temp_v6 + direction: in + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "ip access-group 110 in", + # "ip access-group 123 out", + # "ipv6 traffic-filter temp_v6 in", + # "ipv6 traffic-filter test_v6 out" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # ip access-group 110 in + # ip access-group 123 out + # ipv6 traffic-filter temp_v6 in + # ipv6 traffic-filter test_v6 out + + - name: Parse the commands for provided configuration + cisco.ios.ios_acl_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "access_groups": [ + # { + # "acls": [ + # { + # "direction": "in", + # "name": "110" + # } + # ], + # "afi": "ipv4" + # }, + # { + # "acls": [ + # { + # "direction": "in", + # "name": "temp_v6" + # } + # ], + # "afi": "ipv6" + # } + # ], + # "name": "GigabitEthernet0/1" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['interface GigabitEthernet0/1', 'ip access-group 110 in', 'ipv6 traffic-filter test_v6 out']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst new file mode 100644 index 00000000..d2988a75 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_acls_module.rst @@ -0,0 +1,4557 @@ +.. _cisco.ios.ios_acls_module: + + +****************** +cisco.ios.ios_acls +****************** + +**ACLs resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the named or numbered ACLs on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of ACL options.
+
+
+ acls + +
+ list + / elements=dictionary +
+
+ +
A list of Access Control Lists (ACL).
+
+
+ aces + +
+ list + / elements=dictionary +
+
+ +
The entries within the ACL.
+
+
+ destination + +
+ dictionary +
+
+ +
Specify the packet destination.
+
+
+ address + +
+ string +
+
+ +
Host address to match, or any single host address.
+
+
+ any + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match any source address.
+
+
+ host + +
+ string +
+
+ +
A single destination host
+
+
+ port_protocol + +
+ dictionary +
+
+ +
Specify the destination port along with protocol.
+
Note, Valid with TCP/UDP protocol_options
+
+
+ eq + +
+ string +
+
+ +
Match only packets on a given port number.
+
+
+ gt + +
+ string +
+
+ +
Match only packets with a greater port number.
+
+
+ lt + +
+ string +
+
+ +
Match only packets with a lower port number.
+
+
+ neq + +
+ string +
+
+ +
Match only packets not on a given port number.
+
+
+ range + +
+ dictionary +
+
+ +
Port group.
+
+
+ end + +
+ integer +
+
+ +
Specify the end of the port range.
+
+
+ start + +
+ integer +
+
+ +
Specify the start of the port range.
+
+
+ wildcard_bits + +
+ string +
+
+ +
Destination wildcard bits, valid with IPV4 address.
+
+
+ dscp + +
+ string +
+
+ +
Match packets with given dscp value.
+
+
+ evaluate + +
+ string +
+
+ +
Evaluate an access list
+
+
+ fragments + +
+ string +
+
+ +
Check non-initial fragments.
+
+
+ grant + +
+ string +
+
+
    Choices: +
  • permit
  • +
  • deny
  • +
+
+
Specify the action.
+
+
+ log + +
+ string +
+
+ +
Log matches against this entry.
+
+
+ log_input + +
+ string +
+
+ +
Log matches against this entry, including input interface.
+
+
+ option + +
+ dictionary +
+
+ +
Match packets with given IP Options value.
+
Valid only for named acls.
+
+
+ add_ext + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Address Extension Option (147).
+
+
+ any_options + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with ANY Option.
+
+
+ com_security + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Commercial Security Option (134).
+
+
+ dps + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Dynamic Packet State Option (151).
+
+
+ encode + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Encode Option (15).
+
+
+ eool + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with End of Options (0).
+
+
+ ext_ip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Extended IP Option (145).
+
+
+ ext_security + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Extended Security Option (133).
+
+
+ finn + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Experimental Flow Control Option (205).
+
+
+ imitd + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with IMI Traffic Desriptor Option (144).
+
+
+ lsr + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Loose Source Route Option (131).
+
+
+ mtup + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with MTU Probe Option (11).
+
+
+ mtur + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with MTU Reply Option (12).
+
+
+ no_op + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with No Operation Option (1).
+
+
+ nsapa + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with NSAP Addresses Option (150).
+
+
+ record_route + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Record Route Option (7).
+
+
+ router_alert + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Router Alert Option (148).
+
+
+ sdb + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Selective Directed Broadcast Option (149).
+
+
+ security + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Basic Security Option (130).
+
+
+ ssr + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Strict Source Routing Option (137).
+
+
+ stream_id + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Stream ID Option (136).
+
+
+ timestamp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Time Stamp Option (68).
+
+
+ traceroute + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Trace Route Option (82).
+
+
+ ump + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Upstream Multicast Packet Option (152).
+
+
+ visa + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Experimental Access Control Option (142).
+
+
+ zsu + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with Experimental Measurement Option (10).
+
+
+ precedence + +
+ integer +
+
+ +
Match packets with given precedence value.
+
+
+ protocol + +
+ string +
+
+ +
Specify the protocol to match.
+
Refer to vendor documentation for valid values.
+
+
+ protocol_options + +
+ dictionary +
+
+ +
protocol type.
+
+
+ ahp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Authentication Header Protocol.
+
+
+ eigrp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Cisco's EIGRP routing protocol.
+
+
+ esp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Encapsulation Security Payload.
+
+
+ gre + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Cisco's GRE tunneling.
+
+
+ hbh + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Hop by Hop options header. Valid for IPV6
+
+
+ icmp + +
+ dictionary +
+
+ +
Internet Control Message Protocol.
+
+
+ administratively_prohibited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Administratively prohibited
+
+
+ alternate_address + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Alternate address
+
+
+ conversion_error + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Datagram conversion
+
+
+ dod_host_prohibited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host prohibited
+
+
+ dod_net_prohibited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Net prohibited
+
+
+ echo + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Echo (ping)
+
+
+ echo_reply + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Echo reply
+
+
+ general_parameter_problem + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Parameter problem
+
+
+ host_isolated + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host isolated
+
+
+ host_precedence_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host unreachable for precedence
+
+
+ host_redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host redirect
+
+
+ host_tos_redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host redirect for TOS
+
+
+ host_tos_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host unreachable for TOS
+
+
+ host_unknown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host unknown
+
+
+ host_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Host unreachable
+
+
+ information_reply + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Information replies
+
+
+ information_request + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Information requests
+
+
+ mask_reply + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Mask replies
+
+
+ mask_request + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
mask_request
+
+
+ mobile_redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Mobile host redirect
+
+
+ net_redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Network redirect
+
+
+ net_tos_redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Net redirect for TOS
+
+
+ net_tos_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Network unreachable for TOS
+
+
+ net_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Net unreachable
+
+
+ network_unknown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Network unknown
+
+
+ no_room_for_option + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Parameter required but no room
+
+
+ option_missing + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Parameter required but not present
+
+
+ packet_too_big + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Fragmentation needed and DF set
+
+
+ parameter_problem + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
All parameter problems
+
+
+ port_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Port unreachable
+
+
+ precedence_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Precedence cutoff
+
+
+ protocol_unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Protocol unreachable
+
+
+ reassembly_timeout + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Reassembly timeout
+
+
+ redirect + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
All redirects
+
+
+ router_advertisement + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Router discovery advertisements
+
+
+ router_solicitation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Router discovery solicitations
+
+
+ source_quench + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Source quenches
+
+
+ source_route_failed + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Source route failed
+
+
+ time_exceeded + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
All time exceededs
+
+
+ timestamp_reply + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Timestamp replies
+
+
+ timestamp_request + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Timestamp requests
+
+
+ traceroute + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Traceroute
+
+
+ ttl_exceeded + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
TTL exceeded
+
+
+ unreachable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
All unreachables
+
+
+ igmp + +
+ dictionary +
+
+ +
Internet Gateway Message Protocol.
+
+
+ dvmrp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Distance Vector Multicast Routing Protocol(2)
+
+
+ host_query + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IGMP Membership Query(0)
+
+
+ mtrace_resp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Multicast Traceroute Response(7)
+
+
+ mtrace_route + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Multicast Traceroute(8)
+
+
+ pim + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Protocol Independent Multicast(3)
+
+
+ trace + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Multicast trace(4)
+
+
+ v1host_report + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IGMPv1 Membership Report(1)
+
+
+ v2host_report + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IGMPv2 Membership Report(5)
+
+
+ v2leave_group + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IGMPv2 Leave Group(6)
+
+
+ v3host_report + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IGMPv3 Membership Report(9)
+
+
+ ip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Any Internet Protocol.
+
+
+ ipinip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IP in IP tunneling.
+
+
+ ipv6 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Any IPv6.
+
+
+ nos + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
KA9Q NOS compatible IP over IP tunneling.
+
+
+ ospf + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
OSPF routing protocol.
+
+
+ pcp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Payload Compression Protocol.
+
+
+ pim + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Protocol Independent Multicast.
+
+
+ protocol_number + +
+ integer +
+
+ +
An IP protocol number
+
+
+ sctp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Stream Control Transmission Protocol.
+
+
+ tcp + +
+ dictionary +
+
+ +
Match TCP packet flags
+
+
+ ack + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the ACK bit
+
+
+ established + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match established connections
+
+
+ fin + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the FIN bit
+
+
+ psh + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the PSH bit
+
+
+ rst + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the RST bit
+
+
+ syn + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the SYN bit
+
+
+ urg + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match on the URG bit
+
+
+ udp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
User Datagram Protocol.
+
+
+ sequence + +
+ integer +
+
+ +
Sequence Number for the Access Control Entry(ACE).
+
Refer to vendor documentation for valid values.
+
+
+ source + +
+ dictionary +
+
+ +
Specify the packet source.
+
+
+ address + +
+ string +
+
+ +
Source network address.
+
+
+ any + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match any source address.
+
+
+ host + +
+ string +
+
+ +
A single source host
+
+
+ port_protocol + +
+ dictionary +
+
+ +
Specify the destination port along with protocol.
+
Note, Valid with TCP/UDP protocol_options
+
+
+ eq + +
+ string +
+
+ +
Match only packets on a given port number.
+
+
+ gt + +
+ string +
+
+ +
Match only packets with a greater port number.
+
+
+ lt + +
+ string +
+
+ +
Match only packets with a lower port number.
+
+
+ neq + +
+ string +
+
+ +
Match only packets not on a given port number.
+
+
+ range + +
+ dictionary +
+
+ +
Port group.
+
+
+ end + +
+ integer +
+
+ +
Specify the end of the port range.
+
+
+ start + +
+ integer +
+
+ +
Specify the start of the port range.
+
+
+ wildcard_bits + +
+ string +
+
+ +
Destination wildcard bits, valid with IPV4 address.
+
+
+ time_range + +
+ string +
+
+ +
Specify a time-range.
+
+
+ tos + +
+ dictionary +
+
+ +
Match packets with given TOS value.
+
Note, DSCP and TOS are mutually exclusive
+
+
+ max_reliability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with max reliable TOS (2).
+
+
+ max_throughput + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with max throughput TOS (4).
+
+
+ min_delay + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with min delay TOS (8).
+
+
+ min_monetary_cost + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with min monetary cost TOS (1).
+
+
+ normal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Match packets with normal TOS (0).
+
+
+ service_value + +
+ integer +
+
+ +
Type of service value
+
+
+ ttl + +
+ dictionary +
+
+ +
Match packets with given TTL value.
+
+
+ eq + +
+ integer +
+
+ +
Match only packets on a given TTL number.
+
+
+ gt + +
+ integer +
+
+ +
Match only packets with a greater TTL number.
+
+
+ lt + +
+ integer +
+
+ +
Match only packets with a lower TTL number.
+
+
+ neq + +
+ integer +
+
+ +
Match only packets not on a given TTL number.
+
+
+ range + +
+ dictionary +
+
+ +
Match only packets in the range of TTLs.
+
+
+ end + +
+ integer +
+
+ +
Specify the end of the port range.
+
+
+ start + +
+ integer +
+
+ +
Specify the start of the port range.
+
+
+ acl_type + +
+ string +
+
+
    Choices: +
  • extended
  • +
  • standard
  • +
+
+
ACL type
+
Note, it's mandatory and required for Named ACL, but for Numbered ACL it's not mandatory.
+
+
+ name + +
+ string + / required +
+
+ +
The name or the number of the ACL.
+
+
+ afi + +
+ string + / required +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
The Address Family Indicator (AFI) for the Access Control Lists (ACL).
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh access-list.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • rendered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # vios#sh access-lists + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10 + + - name: Merge provided configuration with device configuration + cisco.ios.ios_acls: + config: + - afi: ipv4 + acls: + - name: std_acl + acl_type: standard + aces: + - grant: deny + source: + address: 192.168.1.200 + - grant: deny + source: + address: 192.168.2.0 + wildcard_bits: 0.0.0.255 + - name: 110 + aces: + - sequence: 10 + protocol_options: + icmp: + traceroute: true + - grant: deny + protocol_options: + tcp: + ack: true + source: + host: 198.51.100.0 + destination: + host: 198.51.110.0 + port_protocol: + eq: telnet + - name: test + acl_type: extended + aces: + - grant: deny + protocol_options: + tcp: + fin: true + source: + address: 192.0.2.0 + wildcard_bits: 0.0.0.255 + destination: + address: 192.0.3.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: www + option: + traceroute: true + ttl: + eq: 10 + - name: 123 + aces: + - grant: deny + protocol_options: + tcp: + ack: true + source: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + destination: + address: 198.51.101.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + tos: + service_value: 12 + - grant: deny + protocol_options: + tcp: + ack: true + source: + address: 192.0.3.0 + wildcard_bits: 0.0.0.255 + destination: + address: 192.0.4.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: www + dscp: ef + ttl: + lt: 20 + - afi: ipv6 + acls: + - name: R1_TRAFFIC + aces: + - grant: deny + protocol_options: + tcp: + ack: true + source: + any: true + port_protocol: + eq: www + destination: + any: true + port_protocol: + eq: telnet + dscp: af11 + state: merged + + # Commands fired: + # --------------- + # + # - ip access-list standard std_acl + # - deny 192.168.1.200 + # - deny 192.168.2.0 0.0.0.255 + # - ip access-list extended 110 + # - no 10 + # - 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # - deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # - ip access-list extended test + # - deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # - ip access-list extended 123 + # - deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # - deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # - ipv6 access-list R1_TRAFFIC + # - deny tcp any eq www any eq telnet ack dscp af11 + + # After state: + # ------------ + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + + # Using replaced + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + + - name: Replaces device configuration of listed acls with provided configuration + cisco.ios.ios_acls: + config: + - afi: ipv4 + acls: + - name: 110 + aces: + - grant: deny + protocol_options: + tcp: + syn: true + source: + address: 192.0.2.0 + wildcard_bits: 0.0.0.255 + destination: + address: 192.0.3.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: www + dscp: ef + ttl: + eq: 10 + - name: 150 + aces: + - grant: deny + sequence: 20 + protocol_options: + tcp: + syn: true + source: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + destination: + address: 198.51.110.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + dscp: ef + ttl: + eq: 10 + state: replaced + + # Commands fired: + # --------------- + # + # - no ip access-list extended 110 + # - ip access-list extended 110 + # - deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www syn dscp ef ttl eq 10 + # - ip access-list extended 150 + # - 20 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq telnet syn dscp ef ttl eq 10 + + # After state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www syn dscp ef ttl eq 10 + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list 150 + # 20 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq telnet syn dscp ef ttl eq 10 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + # Using overridden + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + - name: Override device configuration of all acls with provided configuration + cisco.ios.ios_acls: + config: + - afi: ipv4 + acls: + - name: 110 + aces: + - grant: deny + sequence: 20 + protocol_options: + tcp: + ack: true + source: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + destination: + address: 198.51.110.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: www + dscp: ef + ttl: + eq: 10 + - name: 150 + aces: + - grant: deny + sequence: 10 + protocol_options: + tcp: + syn: true + source: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + destination: + address: 198.51.110.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + dscp: ef + ttl: + eq: 10 + state: overridden + + # Commands fired: + # --------------- + # + # - no ip access-list standard std_acl + # - no ip access-list extended 110 + # - no ip access-list extended 123 + # - no ip access-list extended 150 + # - no ip access-list extended test + # - no ipv6 access-list R1_TRAFFIC + # - ip access-list extended 150 + # - 10 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq telnet syn dscp ef ttl eq 10 + # - ip access-list extended 110 + # - 20 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq www ack dscp ef ttl eq 10 + + # After state: + # ------------- + # + # vios#sh access-lists + # Extended IP access list 110 + # 20 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq www ack dscp ef ttl eq 10 + # Extended IP access list 150 + # 10 deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq telnet syn dscp ef ttl eq 10 + + # Using Deleted + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + - name: "Delete ACLs (Note: This won't delete the all configured ACLs)" + cisco.ios.ios_acls: + config: + - afi: ipv4 + acls: + - name: test + acl_type: extended + - name: 110 + - afi: ipv6 + acls: + - name: R1_TRAFFIC + state: deleted + + # Commands fired: + # --------------- + # + # - no ip access-list extended test + # - no ip access-list extended 110 + # - no ipv6 access-list R1_TRAFFIC + + # After state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + - name: "Delete ACLs based on AFI (Note: This won't delete the all configured ACLs)" + cisco.ios.ios_acls: + config: + - afi: ipv4 + state: deleted + + # Commands fired: + # --------------- + # + # - no ip access-list standard std_acl + # - no ip access-list extended test + # - no ip access-list extended 110 + # - no ip access-list extended 123 + + # After state: + # ------------- + # + # vios#sh access-lists + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured ACLs)" + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + - name: 'Delete ALL of configured ACLs (Note: This WILL delete the all configured + ACLs)' + cisco.ios.ios_acls: + state: deleted + + # Commands fired: + # --------------- + # + # - no ip access-list extended test + # - no ip access-list extended 110 + # - no ip access-list extended 123 + # - no ip access-list extended test + # - no ipv6 access-list R1_TRAFFIC + + # After state: + # ------------- + # + # vios#sh access-lists + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh access-lists + # Standard IP access list std_acl + # 10 deny 192.168.1.200 + # 20 deny 192.168.2.0, wildcard bits 0.0.0.255 + # Extended IP access list 110 + # 10 deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 traceroute dscp ef ttl eq 10 + # 20 deny tcp host 198.51.100.0 host 198.51.110.0 eq telnet ack + # Extended IP access list 123 + # 10 deny tcp 198.51.100.0 0.0.0.255 198.51.101.0 0.0.0.255 eq telnet ack tos 12 + # 20 deny tcp 192.0.3.0 0.0.0.255 192.0.4.0 0.0.0.255 eq www ack dscp ef ttl lt 20 + # Extended IP access list test + # 10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www fin option traceroute ttl eq 10 + # IPv6 access list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 sequence 10 + + - name: Gather listed acls with provided configurations + cisco.ios.ios_acls: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "acls": [ + # { + # "aces": [ + # { + # "destination": { + # "address": "192.0.3.0", + # "wildcard_bits": "0.0.0.255" + # }, + # "dscp": "ef", + # "grant": "deny", + # "protocol_options": { + # "icmp": { + # "echo": true + # } + # }, + # "sequence": 10, + # "source": { + # "address": "192.0.2.0", + # "wildcard_bits": "0.0.0.255" + # }, + # "ttl": { + # "eq": 10 + # } + # } + # ], + # "acl_type": "extended", + # "name": "110" + # }, + # { + # "aces": [ + # { + # "destination": { + # "address": "198.51.101.0", + # "port_protocol": { + # "eq": "telnet" + # }, + # "wildcard_bits": "0.0.0.255" + # }, + # "grant": "deny", + # "protocol_options": { + # "tcp": { + # "ack": true + # } + # }, + # "sequence": 10, + # "source": { + # "address": "198.51.100.0", + # "wildcard_bits": "0.0.0.255" + # }, + # "tos": { + # "service_value": 12 + # } + # }, + # { + # "destination": { + # "address": "192.0.4.0", + # "port_protocol": { + # "eq": "www" + # }, + # "wildcard_bits": "0.0.0.255" + # }, + # "dscp": "ef", + # "grant": "deny", + # "protocol_options": { + # "tcp": { + # "ack": true + # } + # }, + # "sequence": 20, + # "source": { + # "address": "192.0.3.0", + # "wildcard_bits": "0.0.0.255" + # }, + # "ttl": { + # "lt": 20 + # } + # } + # ], + # "acl_type": "extended", + # "name": "123" + # }, + # { + # "aces": [ + # { + # "destination": { + # "address": "192.0.3.0", + # "port_protocol": { + # "eq": "www" + # }, + # "wildcard_bits": "0.0.0.255" + # }, + # "grant": "deny", + # "option": { + # "traceroute": true + # }, + # "protocol_options": { + # "tcp": { + # "fin": true + # } + # }, + # "sequence": 10, + # "source": { + # "address": "192.0.2.0", + # "wildcard_bits": "0.0.0.255" + # }, + # "ttl": { + # "eq": 10 + # } + # } + # ], + # "acl_type": "extended", + # "name": "test_acl" + # } + # ], + # "afi": "ipv4" + # }, + # { + # "acls": [ + # { + # "aces": [ + # { + # "destination": { + # "any": true, + # "port_protocol": { + # "eq": "telnet" + # } + # }, + # "dscp": "af11", + # "grant": "deny", + # "protocol_options": { + # "tcp": { + # "ack": true + # } + # }, + # "sequence": 10, + # "source": { + # "any": true, + # "port_protocol": { + # "eq": "www" + # } + # } + # } + # ], + # "name": "R1_TRAFFIC" + # } + # ], + # "afi": "ipv6" + # } + # ] + + # Using Rendered + + - name: Rendered the provided configuration with the exisiting running configuration + cisco.ios.ios_acls: + config: + - afi: ipv4 + acls: + - name: 110 + aces: + - grant: deny + sequence: 10 + protocol_options: + tcp: + syn: true + source: + address: 192.0.2.0 + wildcard_bits: 0.0.0.255 + destination: + address: 192.0.3.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: www + dscp: ef + ttl: + eq: 10 + - name: 150 + aces: + - grant: deny + protocol_options: + tcp: + syn: true + source: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + destination: + address: 198.51.110.0 + wildcard_bits: 0.0.0.255 + port_protocol: + eq: telnet + dscp: ef + ttl: + eq: 10 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "ip access-list extended 110", + # "10 deny tcp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 eq www syn dscp ef ttl eq 10", + # "ip access-list extended 150", + # "deny tcp 198.51.100.0 0.0.0.255 eq telnet 198.51.110.0 0.0.0.255 eq telnet syn dscp ef ttl eq 10" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # ipv6 access-list R1_TRAFFIC + # deny tcp any eq www any eq telnet ack dscp af11 + + - name: Parse the commands for provided configuration + cisco.ios.ios_acls: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "acls": [ + # { + # "aces": [ + # { + # "destination": { + # "any": true, + # "port_protocol": { + # "eq": "telnet" + # } + # }, + # "dscp": "af11", + # "grant": "deny", + # "protocol_options": { + # "tcp": { + # "ack": true + # } + # }, + # "source": { + # "any": true, + # "port_protocol": { + # "eq": "www" + # } + # } + # } + # ], + # "name": "R1_TRAFFIC" + # } + # ], + # "afi": "ipv6" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['ip access-list extended 110', 'deny icmp 192.0.2.0 0.0.0.255 192.0.3.0 0.0.0.255 echo dscp ef ttl eq 10']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst new file mode 100644 index 00000000..60205ea7 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_banner_module.rst @@ -0,0 +1,326 @@ +.. _cisco.ios.ios_banner_module: + + +******************** +cisco.ios.ios_banner +******************** + +**Manage multiline banners on Cisco IOS devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This will configure both login and motd banners on remote devices running Cisco IOS. It allows playbooks to add or remote banner text from the active running configuration. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ banner + +
+ string + / required +
+
+
    Choices: +
  • login
  • +
  • motd
  • +
  • exec
  • +
  • incoming
  • +
  • slip-ppp
  • +
+
+
Specifies which banner should be configured on the remote device. In Ansible 2.4 and earlier only login and motd were supported.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
Specifies whether or not the configuration is present in the current devices active running configuration.
+
+
+ text + +
+ string +
+
+ +
The banner text that should be present in the remote device running configuration. This argument accepts a multiline string, with no empty lines. Requires state=present.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure the login banner + cisco.ios.ios_banner: + banner: login + text: | + this is my login banner + that contains a multiline + string + state: present + + - name: remove the motd banner + cisco.ios.ios_banner: + banner: motd + state: absent + + - name: Configure banner from file + cisco.ios.ios_banner: + banner: motd + text: "{{ lookup('file', './config_partial/raw_banner.cfg') }}" + state: present + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['banner login', 'this is my login banner', 'that contains a multiline', 'string']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Ricardo Carrillo Cruz (@rcarrillocruz) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst new file mode 100644 index 00000000..ac4993e9 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_global_module.rst @@ -0,0 +1,8801 @@ +.. _cisco.ios.ios_bgp_global_module: + + +************************ +cisco.ios.ios_bgp_global +************************ + +**Global BGP resource module** + + +Version added: 1.3.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the attributes of global bgp on Cisco IOS. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
A list of configurations for global bgp.
+
+
+ aggregate_address + +
+ dictionary +
+
+ +
Configure BGP aggregate entries
+
+
+ address + +
+ string +
+
+ +
Aggregate address
+
+
+ advertise_map + +
+ string +
+
+ +
Set condition to advertise attribute
+
+
+ as_confed_set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Generate AS confed set path information
+
+
+ as_set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Generate AS set path information
+
+
+ attribute_map + +
+ string +
+
+ +
Set attributes of aggregate
+
+
+ netmask + +
+ string +
+
+ +
Aggregate mask
+
+
+ summary_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter more specific routes from updates
+
+
+ suppress_map + +
+ string +
+
+ +
Conditionally filter more specific routes from updates
+
+
+ as_number + +
+ string + / required +
+
+ +
Autonomous system number.
+
+
+ auto_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable automatic network number summarization
+
+
+ bgp + +
+ dictionary +
+
+ +
Enable address family and enter its config mode
+
+
+ additional_paths + +
+ dictionary +
+
+ +
Additional paths in the BGP table
+
+
+ install + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Additional paths to install into RIB
+
+
+ receive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Receive additional paths from neighbors
+
+
+ select + +
+ dictionary +
+
+ +
Selection criteria to pick the paths
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select all available paths
+
+
+ best + +
+ integer +
+
+ +
Select best N paths (2-3).
+
+
+ best_external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select best-external path
+
+
+ group_best + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select group-best path
+
+
+ send + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Send additional paths to neighbors
+
+
+ advertise_best_external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise best external path to internal peers
+
+
+ aggregate_timer + +
+ integer +
+
+ +
Configure Aggregation Timer
+
Please refer vendor documentation for valid values
+
+
+ always_compare_med + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Allow comparing MED from different neighbors
+
+
+ asnotation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Change the default asplain notation
+
asdot notation
+
+
+ bestpath + +
+ list + / elements=dictionary +
+
+ +
Change the default bestpath selection
+
+
+ aigp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
if both paths doesn't have aigp ignore on bestpath comparision
+
ignore
+
+
+ compare_routerid + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Compare router-id for identical EBGP paths
+
+
+ cost_community + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
cost community
+
+
+ igp_metric + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
igp metric
+
Ignore igp metric in bestpath selection
+
+
+ med + +
+ dictionary +
+
+ +
MED attribute
+
+
+ confed + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Compare MED among confederation paths
+
+
+ missing_as_worst + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Treat missing MED as the least preferred one
+
+
+ client_to_client + +
+ dictionary +
+
+ +
Configure client to client route reflection
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
inter-cluster and intra-cluster (default)
+
+
+ intra_cluster + +
+ string +
+
+ +
intra cluster reflection
+
intra-cluster reflection for cluster-id
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
set reflection of routes allowed
+
+
+ cluster_id + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configure Route-Reflector Cluster-id (peers may reset)
+
A.B.C.D/Please refer vendor documentation for valid Route-Reflector Cluster-id
+
+
+ confederation + +
+ dictionary +
+
+ +
AS confederation parameters
+
+
+ identifier + +
+ string +
+
+ +
Set routing domain confederation AS
+
AS number
+
+
+ peers + +
+ string +
+
+ +
Peer ASs in BGP confederation
+
AS number
+
+
+ consistency_checker + +
+ dictionary +
+
+ +
Consistency-checker
+
+
+ auto_repair + +
+ dictionary +
+
+ +
Auto-Repair
+
+
+ interval + +
+ integer +
+
+ +
Set the bgp consistency checker
+
Please refer vendor documentation for valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable Auto-Repair
+
+
+ error_message + +
+ dictionary +
+
+ +
Log Error-Msg
+
+
+ interval + +
+ integer +
+
+ +
Set the bgp consistency checker
+
Please refer vendor documentation for valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable Error-Msg
+
+
+ dampening + +
+ dictionary +
+
+ +
Enable route-flap dampening
+
+
+ max_suppress + +
+ integer +
+
+ +
Maximum duration to suppress a stable route
+
Please refer vendor documentation for valid values
+
+
+ penalty_half_time + +
+ integer +
+
+ +
Half-life time for the penalty
+
Please refer vendor documentation for valid values
+
+
+ reuse_route_val + +
+ integer +
+
+ +
Value to start reusing a route
+
Please refer vendor documentation for valid values
+
+
+ route_map + +
+ string +
+
+ +
Route-map to specify criteria for dampening
+
+
+ suppress_route_val + +
+ integer +
+
+ +
Value to start suppressing a route
+
Please refer vendor documentation for valid values
+
+
+ deterministic_med + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Pick the best-MED path among paths advertised from the neighboring AS
+
+
+ dmzlink_bw + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use DMZ Link Bandwidth as weight for BGP multipaths
+
+
+ enforce_first_as + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enforce the first AS for EBGP routes(default)
+
+
+ enhanced_error + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enabled BGP Enhanced error handling
+
+
+ fast_external_fallover + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Immediately reset session if a link to a directly connected external peer goes down
+
+
+ graceful_restart + +
+ dictionary +
+
+ +
Graceful restart capability parameters
+
+
+ extended + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable Graceful-Restart Extension
+
+
+ restart_time + +
+ integer +
+
+ +
Set the max time needed to restart and come back up
+
Please refer vendor documentation for valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set Graceful-Restart
+
+
+ stalepath_time + +
+ integer +
+
+ +
Set the max time to hold onto restarting peer's stale paths
+
Please refer vendor documentation for valid values
+
+
+ graceful_shutdown + +
+ dictionary +
+
+ +
Graceful shutdown capability parameters
+
+
+ community + +
+ string +
+
+ +
Set Community for Gshut routes
+
community number/community number in aa:nn format
+
+
+ local_preference + +
+ integer +
+
+ +
Set Local Preference for Gshut routes
+
Please refer vendor documentation for valid values
+
+
+ neighbors + +
+ dictionary +
+
+ +
Gracefully shut down all neigbors
+
+
+ activate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Activate graceful shutdown of all neigbors
+
+
+ time + +
+ integer +
+
+ +
time in seconds
+
Please refer vendor documentation for valid values
+
+
+ vrfs + +
+ dictionary +
+
+ +
Gracefully shut down all vrf neigbors
+
+
+ activate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Activate graceful shutdown of all neigbors
+
+
+ time + +
+ integer +
+
+ +
time in seconds
+
Please refer vendor documentation for valid values
+
+
+ inject_map + +
+ dictionary +
+
+ +
Routemap which specifies prefixes to inject
+
+
+ copy_attributes + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Copy attributes from aggregate
+
+
+ exist_map_name + +
+ string +
+
+ +
route-map name
+
+
+ name + +
+ string +
+
+ +
route-map name
+
+
+ listen + +
+ dictionary +
+
+ +
Neighbor subnet range listener
+
+
+ limit + +
+ integer +
+
+ +
Set the max limit for the dynamic subnet range neighbors
+
Please refer vendor documentation for valid values
+
+
+ range + +
+ dictionary +
+
+ +
Subnet network range
+
+
+ ipv4_with_subnet + +
+ string +
+
+ +
IPv4 subnet range(A.B.C.D/nn)
+
+
+ ipv6_with_subnet + +
+ string +
+
+ +
IPv6 subnet range(X:X:X:X::X/<0-128>)
+
+
+ peer_group + +
+ string +
+
+ +
Member of the peer-group
+
+
+ log_neighbor_changes + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log neighbor up/down and reset reason
+
+
+ maxas_limit + +
+ integer +
+
+ +
Allow AS-PATH attribute from any neighbor imposing a limit on number of ASes
+
Please refer vendor documentation for valid values
+
+
+ maxcommunity_limit + +
+ integer +
+
+ +
Allow COMMUNITY attribute from any neighbor imposing a limit on number of communities
+
Please refer vendor documentation for valid values
+
+
+ maxextcommunity_limit + +
+ integer +
+
+ +
Allow EXTENDED COMMUNITY attribute from any neighbor imposing a limit on number of extended communities
+
Please refer vendor documentation for valid values
+
+
+ nexthop + +
+ dictionary +
+
+ +
Nexthop tracking commands
+
+
+ route_map + +
+ string +
+
+ +
Route map for valid nexthops
+
+
+ trigger + +
+ dictionary +
+
+ +
nexthop trackings
+
+
+ delay + +
+ integer +
+
+ +
Set the delay to tigger nexthop tracking
+
Please refer vendor documentation for valid values
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable nexthop tracking
+
+
+ nopeerup_delay + +
+ list + / elements=dictionary +
+
+ +
Set how long BGP will wait for the first peer to come up before beginning the update delay or graceful restart timers (in seconds)
+
+
+ cold_boot + +
+ integer +
+
+ +
How long to wait for the first peer to come up upon a cold boot
+
Please refer vendor documentation for valid values
+
+
+ nsf_switchover + +
+ integer +
+
+ +
How long to wait for the first peer, post NSF switchover
+
Please refer vendor documentation for valid values
+
+
+ post_boot + +
+ integer +
+
+ +
How long to wait for the first peer to come up once the system is already booted and all peers go down
+
Please refer vendor documentation for valid values
+
+
+ user_initiated + +
+ integer +
+
+ +
How long to wait for the first peer, post a manual clear of BGP peers by the admin user
+
Please refer vendor documentation for valid values
+
+
+ recursion + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
recursion rule for the nexthops
+
recursion via host for the nexthops
+
+
+ redistribute_internal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Allow redistribution of iBGP into IGPs (dangerous)
+
+
+ refresh + +
+ dictionary +
+
+ +
refresh
+
+
+ max_eor_time + +
+ integer +
+
+ +
Configure refresh max-eor time
+
Please refer vendor documentation for valid values
+
+
+ stalepath_time + +
+ integer +
+
+ +
Configure refresh stale-path time
+
Please refer vendor documentation for valid values
+
+
+ regexp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select regular expression engine
+
Enable bounded-execution-time regular expression engine
+
+
+ route_map + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
route-map control commands
+
Have route-map set commands take priority over BGP commands such as next-hop unchanged
+
+
+ router_id + +
+ dictionary +
+
+ +
Override configured router identifier (peers will reset)
+
+
+ address + +
+ string +
+
+ +
Manually configured router identifier(A.B.C.D)
+
+
+ interface + +
+ string +
+
+ +
Use IPv4 address on interface
+
+
+ vrf + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
vrf-specific router id configuration
+
Automatically assign per-vrf bgp router id
+
+
+ scan_time + +
+ integer +
+
+ +
Configure background scanner interval
+
Please refer vendor documentation for valid values
+
+
+ slow_peer + +
+ dictionary +
+
+ +
Configure slow-peer
+
+
+ detection + +
+ dictionary +
+
+ +
Slow-peer detection
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Slow-peer detection
+
+
+ threshold + +
+ integer +
+
+ +
Set the slow-peer detection threshold
+
Please refer vendor documentation for valid values
+
+
+ split_update_group + +
+ dictionary +
+
+ +
Configure slow-peer split-update-group
+
+
+ dynamic + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Dynamically split the slow peer to slow-update group
+
+
+ permanent + +
+ integer +
+
+ +
Keep the slow-peer permanently in slow-update group
+
+
+ snmp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
BGP SNMP options
+
BGP SNMP trap options
+
Use cbgpPeer2Type as part of index for traps
+
+
+ soft_reconfig_backup + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use soft-reconfiguration inbound only when route-refresh is not negotiated
+
+
+ sso + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Stateful Switchover
+
Enable SSO only for Route-Refresh capable peers
+
+
+ suppress_inactive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Suppress routes that are not in the routing table
+
+
+ transport + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Global enable/disable transport session parameters
+
Transport path MTU discovery
+
+
+ update_delay + +
+ integer +
+
+ +
Set the max initial delay for sending update
+
Please refer vendor documentation for valid values
+
+
+ update_group + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Manage peers in bgp update groups
+
Split update groups based on Policy
+
Keep peers with as-override in different update groups
+
+
+ upgrade_cli + +
+ dictionary +
+
+ +
Upgrade to hierarchical AFI mode
+
+
+ af_mode + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Upgrade to AFI mode
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
enable upgrade to hierarchical AFI mode
+
+
+ bmp + +
+ dictionary +
+
+ +
BGP Monitoring Protocol)
+
+
+ buffer_size + +
+ integer +
+
+ +
BMP Buffer Size
+
Please refer vendor documentation for valid values
+
+
+ initial_refresh + +
+ dictionary +
+
+ +
Initial Refresh options
+
+
+ delay + +
+ integer +
+
+ +
Delay before Initial Refresh
+
+
+ skip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
skip all refreshes
+
+
+ server + +
+ integer +
+
+ +
Server Information
+
Please refer vendor documentation for valid values
+
+
+ default_information + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Control distribution of default information
+
Distribute a default route
+
+
+ default_metric + +
+ integer +
+
+ +
Set metric of redistributed routes
+
Please refer vendor documentation for valid values
+
+
+ distance + +
+ dictionary +
+
+ +
Define an administrative distance
+
+
+ admin + +
+ dictionary +
+
+ +
Administrative distance
+
+
+ acl + +
+ string +
+
+ +
IP Standard access list number
+
IP Standard expanded access list number
+
Standard access-list name
+
+
+ address + +
+ string +
+
+ +
IP Source address (A.B.C.D)
+
+
+ distance + +
+ integer +
+
+ +
Administrative distance
+
Please refer vendor documentation for valid values
+
+
+ wildcard_bit + +
+ string +
+
+ +
Wildcard bits (A.B.C.D)
+
+
+ bgp + +
+ dictionary +
+
+ +
BGP distance
+
+
+ routes_external + +
+ integer +
+
+ +
Distance for routes external to the AS
+
Please refer vendor documentation for valid values
+
+
+ routes_internal + +
+ integer +
+
+ +
Distance for routes internal to the AS
+
Please refer vendor documentation for valid values
+
+
+ routes_local + +
+ integer +
+
+ +
Distance for local routes
+
Please refer vendor documentation for valid values
+
+
+ mbgp + +
+ dictionary +
+
+ +
MBGP distance
+
+
+ routes_external + +
+ integer +
+
+ +
Distance for routes external to the AS
+
Please refer vendor documentation for valid values
+
+
+ routes_internal + +
+ integer +
+
+ +
Distance for routes internal to the AS
+
Please refer vendor documentation for valid values
+
+
+ routes_local + +
+ integer +
+
+ +
Distance for local routes
+
Please refer vendor documentation for valid values
+
+
+ distribute_list + +
+ dictionary +
+
+ +
Filter networks in routing updates
+
+
+ acl + +
+ string +
+
+ +
IP access list number/name
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter incoming routing updates
+
+
+ interface + +
+ string +
+
+ +
interface details
+
+
+ out + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter outgoing routing updates
+
+
+ maximum_paths + +
+ dictionary +
+
+ +
Forward packets over multiple paths
+
+
+ eibgp + +
+ integer +
+
+ +
Both eBGP and iBGP paths as multipath
+
+
+ ibgp + +
+ integer +
+
+ +
iBGP-multipath
+
+
+ paths + +
+ integer +
+
+ +
Number of paths
+
+
+ maximum_secondary_paths + +
+ dictionary +
+
+ +
Maximum secondary paths
+
+
+ eibgp + +
+ integer +
+
+ +
Both eBGP and iBGP paths as secondary multipath
+
+
+ ibgp + +
+ integer +
+
+ +
iBGP-secondary-multipath
+
+
+ paths + +
+ integer +
+
+ +
Number of secondary paths
+
+
+ neighbor + +
+ list + / elements=dictionary +
+
+ +
Specify a neighbor router
+
+
+ activate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable the Address Family for this Neighbor
+
+
+ additional_paths + +
+ dictionary +
+
+ +
Negotiate additional paths capabilities with this neighbor
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable additional paths for this neighbor
+
+
+ receive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Receive additional paths from neighbors
+
+
+ send + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Send additional paths to neighbors
+
+
+ address + +
+ string +
+
+ +
Neighbor address (A.B.C.D)
+
+
+ advertise + +
+ dictionary +
+
+ +
Advertise to this neighbor
+
+
+ additional_paths + +
+ dictionary +
+
+ +
Advertise additional paths
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select all available paths
+
+
+ best + +
+ integer +
+
+ +
Select best N paths (2-3).
+
+
+ group_best + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select group-best path
+
+
+ best_external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise best-external (at RRs best-internal) path
+
+
+ diverse_path + +
+ dictionary +
+
+ +
Advertise additional paths
+
+
+ backup + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Diverse path can be backup path
+
+
+ mpath + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Diverse path can be multipath
+
+
+ advertise_map + +
+ dictionary +
+
+ +
specify route-map for conditional advertisement
+
+
+ exist_map + +
+ string +
+
+ +
advertise prefix only if prefix is in the condition exists
+
condition route-map name
+
+
+ name + +
+ string +
+
+ +
advertise route-map name
+
+
+ non_exist_map + +
+ string +
+
+ +
advertise prefix only if prefix in the condition does not exist
+
condition route-map name
+
+
+ advertisement_interval + +
+ integer +
+
+ +
Minimum interval between sending BGP routing updates
+
+
+ aigp + +
+ dictionary +
+
+ +
AIGP on neighbor
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable AIGP
+
+
+ send + +
+ dictionary +
+
+ +
Cost community or MED carrying AIGP VALUE
+
+
+ cost_community + +
+ dictionary +
+
+ +
Cost extended community carrying AIGP Value
+
+
+ id + +
+ integer +
+
+ +
Community ID
+
Please refer vendor documentation for valid values
+
+
+ poi + +
+ dictionary +
+
+ +
Point of Insertion
+
+
+ igp_cost + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Point of Insertion After IGP
+
+
+ pre_bestpath + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Point of Insertion At Beginning
+
+
+ transitive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Cost community is Transitive
+
+
+ med + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Med carrying AIGP Value
+
+
+ allow_policy + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable the policy support for this IBGP Neighbor
+
+
+ allowas_in + +
+ integer +
+
+ +
Accept as-path with my AS present in it
+
+
+ as_override + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Override matching AS-number while sending update
+
Maintain Split Horizon while sending update
+
+
+ bmp_activate + +
+ dictionary +
+
+ +
Activate the BMP monitoring for a BGP peer
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Activate BMP monitoring for all servers
+
+
+ server + +
+ integer +
+
+ +
Activate BMP for server
+
BMP Server Number
+
Please refer vendor documentation for valid values
+
+
+ capability + +
+ dictionary +
+
+ +
Advertise capability to the peer
+
Advertise ORF capability to the peer
+
Advertise prefixlist ORF capability to this neighbor
+
+
+ both + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Capability to SEND and RECEIVE the ORF to/from this neighbor
+
+
+ receive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Capability to RECEIVE the ORF from this neighbor
+
+
+ send + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Capability to SEND the ORF to this neighbor
+
+
+ cluster_id + +
+ string +
+
+ +
Configure Route-Reflector Cluster-id (peers may reset)
+
Route-Reflector Cluster-id as 32 bit quantity, or Route-Reflector Cluster-id in IP address format (A.B.C.D)
+
+
+ default_originate + +
+ dictionary +
+
+ +
Originate default route to this neighbor
+
+
+ route_map + +
+ string +
+
+ +
Route-map to specify criteria to originate default
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Originate default route to this neighbor
+
+
+ description + +
+ string +
+
+ +
Neighbor specific description
+
+
+ disable_connected_check + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
one-hop away EBGP peer using loopback address
+
+
+ distribute_list + +
+ dictionary +
+
+ +
Filter updates to/from this neighbor
+
+
+ acl + +
+ string +
+
+ +
IP access list number/name
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter incoming updates
+
+
+ out + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter outgoing updates
+
+
+ dmzlink_bw + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Propagate the DMZ link bandwidth
+
+
+ ebgp_multihop + +
+ dictionary +
+
+ +
Allow EBGP neighbors not on directly connected networks
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Allow EBGP neighbors not on directly connected networks
+
+
+ hop_count + +
+ integer +
+
+ +
Maximum hop count
+
Please refer vendor documentation for valid values
+
+
+ fall_over + +
+ dictionary +
+
+ +
Session fall on peer route lost
+
+
+ bfd + +
+ dictionary +
+
+ +
Use BFD to detect failure
+
+
+ multi_hop + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Force BFD multi-hop to detect failure
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
set bfd
+
+
+ single_hop + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Force BFD single-hop to detect failure
+
+
+ route_map + +
+ string +
+
+ +
Route map for peer route
+
+
+ filter_list + +
+ dictionary +
+
+ +
Establish BGP filters
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter incoming updates
+
+
+ out + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter outgoing updates
+
+
+ path_acl + +
+ string +
+
+ +
AS path access list
+
+
+ ha_mode + +
+ dictionary +
+
+ +
high availability mode
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable graceful-restart
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
set ha-mode and graceful-restart for this peer
+
+
+ inherit + +
+ string +
+
+ +
Inherit a template
+
Inherit a peer-session template and Template name
+
+
+ ipv6_adddress + +
+ string +
+
+ +
Neighbor ipv6 address (X:X:X:X::X)
+
+
+ local_as + +
+ dictionary +
+
+ +
Specify a local-as number
+
+
+ dual_as + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Accept either real AS or local AS from the ebgp peer
+
+
+ no_prepend + +
+ dictionary +
+
+ +
Do not prepend local-as to updates from ebgp peers
+
+
+ replace_as + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Replace real AS with local AS in the EBGP updates
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set prepend
+
+
+ number + +
+ integer +
+
+ +
AS number used as local AS
+
Please refer vendor documentation for valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
set local-as number
+
+
+ log_neighbor_changes + +
+ dictionary +
+
+ +
Log neighbor up/down and reset reason
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable Log neighbor up/down and reset
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
set Log neighbor up/down and reset
+
+
+ maximum_prefix + +
+ dictionary +
+
+ +
Maximum number of prefixes accepted from this peer
+
+
+ max_no + +
+ integer +
+
+ +
maximum no. of prefix limit
+
+
+ restart + +
+ integer +
+
+ +
Restart bgp connection after limit is exceeded
+
+
+ threshold_val + +
+ integer +
+
+ +
Threshold value (%) at which to generate a warning msg
+
+
+ warning_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Only give warning message when limit is exceeded
+
+
+ next_hop_self + +
+ dictionary +
+
+ +
Disable the next hop calculation for this neighbor
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable next-hop-self for both eBGP and iBGP received paths
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable next-hop-self
+
+
+ next_hop_unchanged + +
+ dictionary +
+
+ +
Propagate next hop unchanged for iBGP paths to this neighbor
+
Propagate next hop unchanged for all paths (iBGP and eBGP) to this neighbor
+
+
+ allpaths + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Propagate next hop unchanged for all paths (iBGP and eBGP) to this neighbor
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable next-hop-unchanged
+
+
+ password + +
+ string +
+
+ +
Set a password
+
+
+ path_attribute + +
+ dictionary +
+
+ +
BGP optional attribute filtering
+
+
+ discard + +
+ dictionary +
+
+ +
Discard matching path-attribute for this neighbor
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Perform inbound path-attribute filtering
+
+
+ range + +
+ dictionary +
+
+ +
path attribute range
+
+
+ end + +
+ integer +
+
+ +
path attribute range end value
+
Please refer vendor documentation for valid values
+
+
+ start + +
+ integer +
+
+ +
path attribute range start value
+
Please refer vendor documentation for valid values
+
+
+ type + +
+ integer +
+
+ +
path attribute type
+
Please refer vendor documentation for valid values
+
+
+ treat_as_withdraw + +
+ dictionary +
+
+ +
Treat-as-withdraw matching path-attribute for this neighbor
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Perform inbound path-attribute filtering
+
+
+ range + +
+ dictionary +
+
+ +
path attribute range
+
+
+ end + +
+ integer +
+
+ +
path attribute range end value
+
Please refer vendor documentation for valid values
+
+
+ start + +
+ integer +
+
+ +
path attribute range start value
+
Please refer vendor documentation for valid values
+
+
+ type + +
+ integer +
+
+ +
path attribute type
+
Please refer vendor documentation for valid values
+
+
+ peer_group + +
+ string +
+
+ +
Member of the peer-group
+
+
+ remote_as + +
+ integer +
+
+ +
Specify a BGP neighbor
+
AS of remote neighbor
+
+
+ remove_private_as + +
+ dictionary +
+
+ +
Remove private AS number from outbound updates
+
+
+ all + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Remove all private AS numbers
+
+
+ replace_as + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Replace all private AS numbers with local AS
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Remove private AS number
+
+
+ route_map + +
+ dictionary +
+
+ +
Apply route map to neighbor
+
+
+ in + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Apply map to incoming routes
+
+
+ name + +
+ string +
+
+ +
Replace all private AS numbers with local AS
+
+
+ out + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Apply map to outbound routes
+
+
+ route_reflector_client + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configure a neighbor as Route Reflector client
+
+
+ route_server_client + +
+ dictionary +
+
+ +
Configure a neighbor as Route Server client
+
+
+ context + +
+ string +
+
+ +
Specify Route Server context for neighbor
+
Route Server context name
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set Route Server client
+
+
+ send_community + +
+ dictionary +
+
+ +
Send Community attribute to this neighbor
+
+
+ both + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Send Standard and Extended Community attributes
+
+
+ extended + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Send Extended Community attribute
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set send Community attribute to this neighbor
+
+
+ standard + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Send Standard Community attribute
+
+
+ send_label + +
+ dictionary +
+
+ +
Send NLRI + MPLS Label to this peer
+
+
+ explicit_null + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise Explicit Null label in place of Implicit Null
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set send NLRI + MPLS Label to this peer
+
+
+ shutdown + +
+ dictionary +
+
+ +
Administratively shut down this neighbor
+
+
+ graceful + +
+ integer +
+
+ +
Gracefully shut down this neighbor
+
time in seconds
+
Please refer vendor documentation for valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
shut down
+
+
+ slow_peer + +
+ dictionary +
+
+ +
Configure slow-peer
+
+
+ detection + +
+ dictionary +
+
+ +
Configure slow-peer
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable slow-peer detection
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable slow-peer detection
+
+
+ threshold + +
+ integer +
+
+ +
Set the slow-peer detection threshold
+
+
+ split_update_group + +
+ dictionary +
+
+ +
Configure slow-peer split-update-group
+
+
+ dynamic + +
+ dictionary +
+
+ +
Dynamically split the slow peer to slow-update group
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable slow-peer detection
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable slow-peer detection
+
+
+ permanent + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Keep the slow-peer permanently in slow-update group
+
+
+ static + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Static slow-peer
+
+
+ soft_reconfiguration + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Per neighbor soft reconfiguration
+
Allow inbound soft reconfiguration for this neighbor
+
+
+ tag + +
+ string +
+
+ +
Neighbor tag
+
+
+ timers + +
+ dictionary +
+
+ +
BGP per neighbor timers
+
+
+ holdtime + +
+ integer +
+
+ +
Holdtime
+
+
+ interval + +
+ integer +
+
+ +
Keepalive interval
+
+
+ min_holdtime + +
+ integer +
+
+ +
Minimum hold time from neighbor
+
+
+ translate_update + +
+ dictionary +
+
+ +
Translate Update to MBGP format
+
+
+ nlri + +
+ dictionary +
+
+ +
Specify type of nlri to translate to
+
+
+ multicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Translate Update to multicast nlri
+
+
+ unicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Process Update as unicast nlri
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set Translate Update
+
+
+ transport + +
+ dictionary +
+
+ +
Transport options
+
+
+ connection_mode + +
+ dictionary +
+
+ +
Specify passive or active connection
+
+
+ active + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Actively establish the TCP session
+
+
+ passive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Passively establish the TCP session
+
+
+ multi_session + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use Multi-session for transport
+
+
+ path_mtu_discovery + +
+ dictionary +
+
+ +
Use transport path MTU discovery
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use path MTU discovery
+
+
+ ttl_security + +
+ integer +
+
+ +
BGP ttl security check
+
maximum number of hops
+
Please refer vendor documentation for valid values
+
+
+ unsuppress_map + +
+ string +
+
+ +
Route-map to selectively unsuppress suppressed routes
+
Name of route map
+
+
+ version + +
+ integer +
+
+ +
Set the BGP version to match a neighbor
+
Neighbor's BGP version
+
Please refer vendor documentation for valid values
+
+
+ weight + +
+ integer +
+
+ +
Set default weight for routes from this neighbor
+
+
+ redistribute + +
+ list + / elements=dictionary +
+
+ +
Redistribute information from another routing protocol
+
+
+ application + +
+ dictionary +
+
+ +
Application
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ name + +
+ string +
+
+ +
Application name
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ bgp + +
+ dictionary +
+
+ +
Border Gateway Protocol (BGP)
+
+
+ as_number + +
+ string +
+
+ +
Autonomous system number
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ connected + +
+ dictionary +
+
+ +
Connected
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ eigrp + +
+ dictionary +
+
+ +
Enhanced Interior Gateway Routing Protocol (EIGRP)
+
+
+ as_number + +
+ string +
+
+ +
Autonomous system number
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ isis + +
+ dictionary +
+
+ +
ISO IS-IS
+
+
+ area_tag + +
+ string +
+
+ +
ISO routing area tag
+
+
+ clns + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribution of OSI dynamic routes
+
+
+ ip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribution of IP dynamic routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ iso_igrp + +
+ dictionary +
+
+ +
IGRP for OSI networks
+
+
+ area_tag + +
+ string +
+
+ +
ISO routing area tag
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ lisp + +
+ dictionary +
+
+ +
Locator ID Separation Protocol (LISP)
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ mobile + +
+ dictionary +
+
+ +
Mobile routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ odr + +
+ dictionary +
+
+ +
On Demand stub Routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ ospf + +
+ dictionary +
+
+ +
Open Shortest Path First (OSPF)
+
+
+ match + +
+ dictionary +
+
+ +
On Demand stub Routes
+
+
+ external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF external routes
+
+
+ internal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF internal routes
+
+
+ nssa_external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF NSSA external routes
+
+
+ type_1 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute NSSA external type 1 routes
+
+
+ type_2 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute NSSA external type 2 routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ process_id + +
+ integer +
+
+ +
Process ID
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ vrf + +
+ string +
+
+ +
VPN Routing/Forwarding Instance
+
+
+ ospfv3 + +
+ dictionary +
+
+ +
OSPFv3
+
+
+ match + +
+ dictionary +
+
+ +
On Demand stub Routes
+
+
+ external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF external routes
+
+
+ internal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF internal routes
+
+
+ nssa_external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute OSPF NSSA external routes
+
+
+ type_1 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute NSSA external type 1 routes
+
+
+ type_2 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribute NSSA external type 2 routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ process_id + +
+ integer +
+
+ +
Process ID
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ rip + +
+ dictionary +
+
+ +
Routing Information Protocol (RIP)
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ static + +
+ dictionary +
+
+ +
Static routes
+
+
+ clns + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribution of OSI static routes
+
+
+ ip + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Redistribution of IP static routes
+
+
+ metric + +
+ integer +
+
+ +
Metric for redistributed routes
+
+
+ route_map + +
+ string +
+
+ +
Route map reference
+
+
+ vrf + +
+ dictionary +
+
+ +
Specify a source VRF
+
+
+ global + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
global VRF
+
+
+ name + +
+ string +
+
+ +
Source VRF name
+
+
+ route_server_context + +
+ dictionary +
+
+ +
Enter route server context command mode
+
+
+ address_family + +
+ dictionary +
+
+ +
Enter address family command mode
+
+
+ afi + +
+ string +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Address family
+
+
+ import_map + +
+ string +
+
+ +
Import matching routes using a route map
+
Name of route map
+
+
+ modifier + +
+ string +
+
+
    Choices: +
  • multicast
  • +
  • unicast
  • +
+
+
Address Family modifier
+
+
+ description + +
+ string +
+
+ +
Textual description of the router server context
+
+
+ name + +
+ string +
+
+ +
Name of route server context
+
+
+ scope + +
+ dictionary +
+
+ +
Enter scope command mode
+
+
+ global + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Global scope
+
+
+ vrf + +
+ string +
+
+ +
VRF scope
+
VPN Routing/Forwarding instance name
+
+
+ synchronization + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Perform IGP synchronization
+
+
+ table_map + +
+ dictionary +
+
+ +
Map external entry attributes into routing table
+
+
+ filter + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Selective route download
+
+
+ name + +
+ string +
+
+ +
route-map name
+
+
+ template + +
+ dictionary +
+
+ +
Enter template command mode
+
+
+ peer_policy + +
+ string +
+
+ +
Template configuration for policy parameters
+
+
+ peer_session + +
+ string +
+
+ +
Template configuration for session parameters
+
+
+ timers + +
+ dictionary +
+
+ +
Adjust routing timers
+
BGP timers
+
+
+ holdtime + +
+ integer +
+
+ +
Holdtime
+
+
+ keepalive + +
+ integer +
+
+ +
Keepalive interval
+
+
+ min_holdtime + +
+ integer +
+
+ +
Minimum hold time from neighbor
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh running-config | section ^router bgp.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • purged
  • +
  • gathered
  • +
  • rendered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + + - name: Merge provided configuration with device configuration + cisco.ios.ios_bgp_global: + config: + as_number: 65000 + bgp: + advertise_best_external: true + bestpath: + - compare_routerid: true + nopeerup_delay: + - post_boot: 10 + dampening: + penalty_half_time: 1 + reuse_route_val: 1 + suppress_route_val: 1 + max_suppress: 1 + graceful_shutdown: + neighbors: + time: 50 + community: 100 + local_preference: 100 + neighbor: + - address: 198.51.100.1 + description: merge neighbor + remote_as: 100 + aigp: + send: + cost_community: + id: 100 + poi: + igp_cost: true + transitive: true + route_map: + name: test-route + out: true + state: merged + + # Commands fired: + # --------------- + # + # "commands": [ + # "router bgp 65000", + # "bgp dampening 1 1 1 1", + # "bgp graceful-shutdown all neighbors 50 community 100 local-preference 100", + # "bgp advertise-best-external", + # "bgp nopeerup-delay post-boot 10", + # "bgp bestpath compare-routerid", + # "neighbor 198.51.100.1 remote-as 100", + # "neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive", + # "neighbor 198.51.100.1 description merge neighbor", + # "neighbor 198.51.100.1 route-map test-route out" + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + + # Using replaced + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + + - name: Replaces device configuration of listed global BGP with provided configuration + cisco.ios.ios_bgp_global: + config: + as_number: 65000 + bgp: + advertise_best_external: true + bestpath: + - med: + confed: true + log_neighbor_changes: true + nopeerup_delay: + - post_boot: 10 + cold_boot: 20 + neighbor: + - address: 192.0.2.1 + description: replace neighbor + remote_as: 100 + slow_peer: + detection: + disable: true + state: replaced + + # Commands fired: + # --------------- + # + # "commands": [ + # "router bgp 65000" + # "no bgp dampening 1 1 1 1" + # "no timers bgp 100 200 150" + # "no bgp bestpath compare-routerid" + # "bgp bestpath med confed" + # "bgp nopeerup-delay cold-boot 20" + # "no neighbor 198.51.100.1 remote-as 100" + # "neighbor 192.0.2.1 remote-as 100" + # "no bgp graceful-shutdown all neighbors 50 local-preference 100 community 100" + # "no neighbor 198.51.100.1 route-map test-route out" + # "no neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive" + # "no neighbor 198.51.100.1 description merge neighbor" + # "neighbor 192.0.2.1 slow-peer detection disable" + # "neighbor 192.0.2.1 description replace neighbor" + # ] + + + # After state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp log-neighbor-changes + # bgp nopeerup-delay cold-boot 20 + # bgp nopeerup-delay post-boot 10 + # bgp bestpath med confed + # bgp advertise-best-external + # redistribute connected metric 10 + # neighbor 192.0.2.1 remote-as 100 + # neighbor 192.0.2.1 description replace neighbor + # neighbor 192.0.2.1 slow-peer detection disable + + # Using Deleted + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + - name: "Delete global BGP (Note: This won't delete the configured global BGP)" + cisco.ios.ios_bgp_global: + config: + as_number: 65000 + state: deleted + + # Commands fired: + # --------------- + # "commands": [ + # "router bgp 65000", + # "no bgp dampening 1 1 1 1", + # "no bgp graceful-shutdown all neighbors 50 community 100 local-preference 100", + # "no bgp advertise-best-external", + # "no bgp bestpath compare-routerid", + # "no bgp nopeerup-delay post-boot 10", + # "no neighbor 198.51.100.1 remote-as 100", + # "no neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive", + # "no neighbor 198.51.100.1 description merge neighbor", + # "no neighbor 198.51.100.1 route-map test-route out" + # ] + + + # After state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured global BGP)" + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + + - name: "Delete global BGP without config" + cisco.ios.ios_bgp_global: + state: deleted + + # Commands fired: + # --------------- + # "commands": [ + # "router bgp 65000", + # "no bgp dampening 1 1 1 1", + # "no bgp graceful-shutdown all neighbors 50 community 100 local-preference 100", + # "no bgp advertise-best-external", + # "no bgp bestpath compare-routerid", + # "no bgp nopeerup-delay post-boot 10", + # "no neighbor 198.51.100.1 remote-as 100", + # "no neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive", + # "no neighbor 198.51.100.1 description merge neighbor", + # "no neighbor 198.51.100.1 route-map test-route out" + # ] + + + # After state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + + # Using Purged + #"(NOTE: This WILL delete the configured global BGP)" + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + + - name: 'Delete the configured global BGP (Note: This WILL delete the the configured + global BGP)' + cisco.ios.ios_bgp_global: + state: purged + + # Commands fired: + # --------------- + # "commands": [ + # "no router bgp 65000", + # ] + + # After state: + # ------------- + # + # vios#sh running-config | section ^router bgp + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^router bgp + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + + - name: Gather listed global BGP with provided configurations + cisco.ios.ios_bgp_global: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": { + # "as_number": "65000", + # "bgp": { + # "advertise_best_external": true, + # "bestpath": [ + # { + # "compare_routerid": true + # } + # ], + # "dampening": { + # "max_suppress": 1, + # "penalty_half_time": 1, + # "reuse_route_val": 1, + # "suppress_route_val": 1 + # }, + # "graceful_shutdown": { + # "community": "100", + # "local_preference": 100, + # "neighbors": { + # "time": 50 + # } + # }, + # "nopeerup_delay": [ + # { + # "post_boot": 10 + # } + # ] + # }, + # "neighbor": [ + # { + # "address": "198.51.100.1", + # "aigp": { + # "send": { + # "cost_community": { + # "id": 100, + # "poi": { + # "igp_cost": true, + # "transitive": true + # } + # } + # } + # }, + # "description": "merge neighbor", + # "remote_as": 100, + # "route_map": { + # "name": "test-route", + # "out": true + # } + # } + # ] + # } + + # Using Rendered + + - name: Rendered the provided configuration with the exisiting running configuration + cisco.ios.ios_bgp_global: + config: + as_number: 65000 + bgp: + advertise_best_external: true + bestpath: + - compare_routerid: true + nopeerup_delay: + - post_boot: 10 + dampening: + penalty_half_time: 1 + reuse_route_val: 1 + suppress_route_val: 1 + max_suppress: 1 + graceful_shutdown: + neighbors: + time: 50 + community: 100 + local_preference: 100 + neighbor: + - address: 198.51.100.1 + description: merge neighbor + remote_as: 100 + aigp: + send: + cost_community: + id: 100 + poi: + igp_cost: true + transitive: true + route_map: + name: test-route + out: true + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "router bgp 65000", + # "bgp dampening 1 1 1 1", + # "bgp graceful-shutdown all neighbors 50 community 100 local-preference 100", + # "bgp advertise-best-external", + # "bgp nopeerup-delay post-boot 10", + # "bgp bestpath compare-routerid", + # "neighbor 198.51.100.1 remote-as 100", + # "neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive", + # "neighbor 198.51.100.1 description merge neighbor", + # "neighbor 198.51.100.1 route-map test-route out" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # router bgp 65000 + # bgp nopeerup-delay post-boot 10 + # bgp graceful-shutdown all neighbors 50 local-preference 100 community 100 + # bgp bestpath compare-routerid + # bgp dampening 1 1 1 1 + # bgp advertise-best-external + # neighbor 198.51.100.1 remote-as 100 + # neighbor 198.51.100.1 description merge neighbor + # neighbor 198.51.100.1 aigp send cost-community 100 poi igp-cost transitive + # neighbor 198.51.100.1 route-map test-route out + + - name: Parse the commands for provided configuration + cisco.ios.ios_bgp_global: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": { + # "as_number": "65000", + # "bgp": { + # "advertise_best_external": true, + # "bestpath": [ + # { + # "compare_routerid": true + # } + # ], + # "dampening": { + # "max_suppress": 1, + # "penalty_half_time": 1, + # "reuse_route_val": 1, + # "suppress_route_val": 1 + # }, + # "graceful_shutdown": { + # "community": "100", + # "local_preference": 100, + # "neighbors": { + # "time": 50 + # } + # }, + # "nopeerup_delay": [ + # { + # "post_boot": 10 + # } + # ] + # }, + # "neighbor": [ + # { + # "address": "198.51.100.1", + # "aigp": { + # "send": { + # "cost_community": { + # "id": 100, + # "poi": { + # "igp_cost": true, + # "transitive": true + # } + # } + # } + # }, + # "description": "merge neighbor", + # "remote_as": 100, + # "route_map": { + # "name": "test-route", + # "out": true + # } + # } + # ] + # } + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['router bgp 65000', 'bgp nopeerup-delay post-boot 10', 'bgp advertise-best-external']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_module.rst new file mode 100644 index 00000000..ecab4da5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_bgp_module.rst @@ -0,0 +1,1131 @@ +.. _cisco.ios.ios_bgp_module: + + +***************** +cisco.ios.ios_bgp +***************** + +**Configure global BGP protocol settings on Cisco IOS.** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides configuration management of global BGP parameters on devices running Cisco IOS + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
Specifies the BGP related configuration.
+
+
+ address_family + +
+ list + / elements=dictionary +
+
+ +
Specifies BGP address family related configurations.
+
+
+ afi + +
+ string + / required +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Type of address family to configure.
+
+
+ auto_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable/disable automatic network number summarization.
+
+
+ neighbors + +
+ list + / elements=dictionary +
+
+ +
Specifies BGP neighbor related configurations in Address Family configuration mode.
+
+
+ activate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable the Address Family for this Neighbor.
+
+
+ advertisement_interval + +
+ integer +
+
+ +
Minimum interval between sending BGP routing updates for this neighbor.
+
+
+ maximum_prefix + +
+ integer +
+
+ +
Maximum number of prefixes to accept from this peer.
+
The range is from 1 to 2147483647.
+
+
+ neighbor + +
+ string + / required +
+
+ +
Neighbor router address.
+
+
+ next_hop_self + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable/disable the next hop calculation for this neighbor.
+
+
+ next_hop_unchanged + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Propagate next hop unchanged for iBGP paths to this neighbor.
+
+
+ prefix_list_in + +
+ string +
+
+ +
Name of ip prefix-list to apply to incoming prefixes.
+
+
+ prefix_list_out + +
+ string +
+
+ +
Name of ip prefix-list to apply to outgoing prefixes.
+
+
+ remove_private_as + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Remove the private AS number from outbound updates.
+
+
+ route_reflector_client + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify a neighbor as a route reflector client.
+
+
+ route_server_client + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify a neighbor as a route server client.
+
+
+ networks + +
+ list + / elements=dictionary +
+
+ +
Specify Networks to announce via BGP.
+
For operation replace, this option is mutually exclusive with root level networks option.
+
+
+ masklen + +
+ integer +
+
+ +
Subnet mask length for the Network to announce(e.g, 8, 16, 24, etc.).
+
+
+ prefix + +
+ string + / required +
+
+ +
Network ID to announce via BGP.
+
+
+ route_map + +
+ string +
+
+ +
Route map to modify the attributes.
+
+
+ redistribute + +
+ list + / elements=dictionary +
+
+ +
Specifies the redistribute information from another routing protocol.
+
+
+ id + +
+ string +
+
+ +
Identifier for the routing protocol for configuring redistribute information.
+
Valid for protocols 'ospf', 'ospfv3' and 'eigrp'.
+
+
+ metric + +
+ integer +
+
+ +
Specifies the metric for redistributed routes.
+
+
+ protocol + +
+ string + / required +
+
+
    Choices: +
  • ospf
  • +
  • ospfv3
  • +
  • eigrp
  • +
  • isis
  • +
  • static
  • +
  • connected
  • +
  • odr
  • +
  • lisp
  • +
  • mobile
  • +
  • rip
  • +
+
+
Specifies the protocol for configuring redistribute information.
+
+
+ route_map + +
+ string +
+
+ +
Specifies the route map reference.
+
+
+ safi + +
+ string +
+
+
    Choices: +
  • flowspec
  • +
  • unicast ←
  • +
  • multicast
  • +
  • labeled-unicast
  • +
+
+
Specifies the type of cast for the address family.
+
+
+ synchronization + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable/disable IGP synchronization.
+
+
+ bgp_as + +
+ integer + / required +
+
+ +
Specifies the BGP Autonomous System (AS) number to configure on the device.
+
+
+ log_neighbor_changes + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable/disable logging neighbor up/down and reset reason.
+
+
+ neighbors + +
+ list + / elements=dictionary +
+
+ +
Specifies BGP neighbor related configurations.
+
+
+ description + +
+ string +
+
+ +
Neighbor specific description.
+
+
+ ebgp_multihop + +
+ integer +
+
+ +
Specifies the maximum hop count for EBGP neighbors not on directly connected networks.
+
The range is from 1 to 255.
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Administratively shutdown or enable a neighbor.
+
+
+ local_as + +
+ integer +
+
+ +
The local AS number for the neighbor.
+
+
+ neighbor + +
+ string + / required +
+
+ +
Neighbor router address.
+
+
+ password + +
+ string +
+
+ +
Password to authenticate the BGP peer connection.
+
+
+ peer_group + +
+ string +
+
+ +
Name of the peer group that the neighbor is a member of.
+
+
+ remote_as + +
+ integer + / required +
+
+ +
Remote AS of the BGP neighbor to configure.
+
+
+ timers + +
+ dictionary +
+
+ +
Specifies BGP neighbor timer related configurations.
+
+
+ holdtime + +
+ integer + / required +
+
+ +
Interval (in seconds) after not receiving a keepalive message that IOS declares a peer dead.
+
The range is from 0 to 65535.
+
+
+ keepalive + +
+ integer + / required +
+
+ +
Frequency (in seconds) with which the device sends keepalive messages to its peer.
+
The range is from 0 to 65535.
+
+
+ min_neighbor_holdtime + +
+ integer +
+
+ +
Interval (in seconds) 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 0 to 65535.
+
+
+ update_source + +
+ string +
+
+ +
Source of the routing updates.
+
+
+ networks + +
+ list + / elements=dictionary +
+
+ +
Specify Networks to announce via BGP.
+
For operation replace, this option is mutually exclusive with networks option under address_family.
+
For operation replace, if the device already has an address family activated, this option is not allowed.
+
+
+ masklen + +
+ integer +
+
+ +
Subnet mask length for the Network to announce(e.g, 8, 16, 24, etc.).
+
+
+ prefix + +
+ string + / required +
+
+ +
Network ID to announce via BGP.
+
+
+ route_map + +
+ string +
+
+ +
Route map to modify the attributes.
+
+
+ router_id + +
+ string +
+
+ Default:
null
+
+
Configures the BGP routing process router-id value.
+
+
+ operation + +
+ string +
+
+
    Choices: +
  • merge ←
  • +
  • replace
  • +
  • override
  • +
  • delete
  • +
+
+
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.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOS Version 15.6(3)M2 + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure global bgp as 64496 + cisco.ios.ios_bgp: + config: + bgp_as: 64496 + router_id: 192.0.2.1 + log_neighbor_changes: true + neighbors: + - neighbor: 203.0.113.5 + remote_as: 64511 + timers: + keepalive: 300 + holdtime: 360 + min_neighbor_holdtime: 360 + - neighbor: 198.51.100.2 + remote_as: 64498 + networks: + - prefix: 198.51.100.0 + route_map: RMAP_1 + - prefix: 192.0.2.0 + masklen: 23 + address_family: + - afi: ipv4 + safi: unicast + redistribute: + - protocol: ospf + id: 223 + metric: 10 + operation: merge + + - name: Configure BGP neighbors + cisco.ios.ios_bgp: + config: + bgp_as: 64496 + neighbors: + - neighbor: 192.0.2.10 + remote_as: 64496 + password: ansible + description: IBGP_NBR_1 + ebgp_multihop: 100 + timers: + keepalive: 300 + holdtime: 360 + min_neighbor_holdtime: 360 + - neighbor: 192.0.2.15 + remote_as: 64496 + description: IBGP_NBR_2 + ebgp_multihop: 150 + operation: merge + + - name: Configure root-level networks for BGP + cisco.ios.ios_bgp: + config: + bgp_as: 64496 + networks: + - prefix: 203.0.113.0 + masklen: 27 + route_map: RMAP_1 + - prefix: 203.0.113.32 + masklen: 27 + route_map: RMAP_2 + operation: merge + + - name: Configure BGP neighbors under address family mode + cisco.ios.ios_bgp: + config: + bgp_as: 64496 + address_family: + - afi: ipv4 + safi: unicast + neighbors: + - neighbor: 203.0.113.10 + activate: yes + maximum_prefix: 250 + advertisement_interval: 120 + - neighbor: 192.0.2.15 + activate: yes + route_reflector_client: true + operation: merge + + - name: remove bgp as 64496 from config + cisco.ios.ios_bgp: + config: + bgp_as: 64496 + operation: delete + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['router bgp 64496', 'bgp router-id 192.0.2.1', 'bgp log-neighbor-changes', 'neighbor 203.0.113.5 remote-as 64511', 'neighbor 203.0.113.5 timers 300 360 360', 'neighbor 198.51.100.2 remote-as 64498', 'network 198.51.100.0 route-map RMAP_1', 'network 192.0.2.0 mask 255.255.254.0', 'address-family ipv4', 'redistribute ospf 223 metric 70', 'exit-address-family']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Nilashish Chakraborty (@NilashishC) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_cliconf.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_cliconf.rst new file mode 100644 index 00000000..0b9ed642 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_cliconf.rst @@ -0,0 +1,43 @@ +.. _cisco.ios.ios_cliconf: + + +************* +cisco.ios.ios +************* + +**Use ios cliconf to run command on Cisco IOS platform** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This ios plugin provides low level abstraction apis for sending and receiving CLI commands from Cisco IOS network devices. + + + + + + + + + + + +Status +------ + + +Authors +~~~~~~~ + +- Ansible Networking Team + + +.. hint:: + Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up. diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst new file mode 100644 index 00000000..87d3acd4 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_command_module.rst @@ -0,0 +1,404 @@ +.. _cisco.ios.ios_command_module: + + +********************* +cisco.ios.ios_command +********************* + +**Run commands on remote devices running Cisco IOS** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- Sends arbitrary commands to an ios node and returns the results read from the device. This module includes an argument that will cause the module to wait for a specific condition before returning or timing out if the condition is not met. +- This module does not support running commands in configuration mode. Please use :ref:`ios_config ` to configure IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ commands + +
+ list + / elements=raw + / required +
+
+ +
List of commands to send to the remote ios device over the configured provider. The resulting output from the command is returned. If the wait_for argument is provided, the module is not returned until the condition is satisfied or the number of retries has expired. If a command sent to the device requires answering a prompt, it is possible to pass a dict containing command, answer and prompt. Common answers are 'y' or "\r" (carriage return, must be double quotes). See examples.
+
+
+ interval + +
+ integer +
+
+ Default:
1
+
+
Configures the interval in seconds to wait between retries of the command. If the command does not pass the specified conditions, the interval indicates how long to wait before trying the command again.
+
+
+ match + +
+ string +
+
+
    Choices: +
  • any
  • +
  • all ←
  • +
+
+
The match argument is used in conjunction with the wait_for argument to specify the match policy. Valid values are all or any. If the value is set to all then all conditionals in the wait_for must be satisfied. If the value is set to any then only one of the values must be satisfied.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ retries + +
+ integer +
+
+ Default:
10
+
+
Specifies the number of retries a command should by tried before it is considered failed. The command is run on the target device every retry and evaluated against the wait_for conditions.
+
+
+ wait_for + +
+ list + / elements=string +
+
+ +
List of conditions to evaluate against the output of the command. The task will wait for each condition to be true before moving forward. If the conditional is not true within the configured number of retries, the task fails. See examples.
+

aliases: waitfor
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: run show version on remote devices + cisco.ios.ios_command: + commands: show version + + - name: run show version and check to see if output contains IOS + cisco.ios.ios_command: + commands: show version + wait_for: result[0] contains IOS + + - name: run multiple commands on remote nodes + cisco.ios.ios_command: + commands: + - show version + - show interfaces + + - name: run multiple commands and evaluate the output + cisco.ios.ios_command: + commands: + - show version + - show interfaces + wait_for: + - result[0] contains IOS + - result[1] contains Loopback0 + + - name: run commands that require answering a prompt + cisco.ios.ios_command: + commands: + - command: clear counters GigabitEthernet0/1 + prompt: Clear "show interface" counters on this interface [confirm] + answer: y + - command: clear counters GigabitEthernet0/2 + prompt: '[confirm]' + answer: ' + ' + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ failed_conditions + +
+ list +
+
failed +
The list of conditionals that have failed
+
+
Sample:
+
['...', '...']
+
+
+ stdout + +
+ list +
+
always apart from low level errors (such as action plugin) +
The set of responses from the commands
+
+
Sample:
+
['...', '...']
+
+
+ stdout_lines + +
+ list +
+
always apart from low level errors (such as action plugin) +
The value of stdout split into a list
+
+
Sample:
+
[['...', '...'], ['...'], ['...']]
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Peter Sprygada (@privateip) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_config_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_config_module.rst new file mode 100644 index 00000000..13e89caf --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_config_module.rst @@ -0,0 +1,755 @@ +.. _cisco.ios.ios_config_module: + + +******************** +cisco.ios.ios_config +******************** + +**Manage Cisco IOS configuration sections** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- Cisco IOS configurations use a simple block indent file syntax for segmenting configuration into sections. This module provides an implementation for working with IOS configuration sections in a deterministic way. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ after + +
+ list + / elements=string +
+
+ +
The ordered set of commands to append to the end of the command stack if a change needs to be made. Just like with before this allows the playbook designer to append a set of commands to be executed after the command set.
+
+
+ backup + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
This argument will cause the module to create a full backup of the current running-config from the remote device before any changes are made. If the backup_options value is not given, the backup file is written to the backup folder in the playbook root directory or role root directory, if playbook is part of an ansible role. If the directory does not exist, it is created.
+
+
+ backup_options + +
+ dictionary +
+
+ +
This is a dict object containing configurable options related to backup file path. The value of this option is read only when backup is set to yes, if backup is set to no this option will be silently ignored.
+
+
+ dir_path + +
+ path +
+
+ +
This option provides the path ending with directory name in which the backup configuration file will be stored. If the directory does not exist it will be first created and the filename is either the value of filename or default filename as described in filename options description. If the path value is not given in that case a backup directory will be created in the current working directory and backup configuration will be copied in filename within backup directory.
+
+
+ filename + +
+ string +
+
+ +
The filename to be used to store the backup configuration. If the filename is not given it will be generated based on the hostname, current time and date in format defined by <hostname>_config.<current-date>@<current-time>
+
+
+ before + +
+ list + / elements=string +
+
+ +
The ordered set of commands to push on to the command stack if a change needs to be made. This allows the playbook designer the opportunity to perform configuration commands prior to pushing any changes without affecting how the set of commands are matched against the system.
+
+
+ defaults + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
This argument specifies whether or not to collect all defaults when getting the remote device running config. When enabled, the module will get the current config by issuing the command show running-config all.
+
+
+ diff_against + +
+ string +
+
+
    Choices: +
  • running
  • +
  • startup
  • +
  • intended
  • +
+
+
When using the ansible-playbook --diff command line argument the module can generate diffs against different sources.
+
When this option is configure as startup, the module will return the diff of the running-config against the startup-config.
+
When this option is configured as intended, the module will return the diff of the running-config against the configuration provided in the intended_config argument.
+
When this option is configured as running, the module will return the before and after diff of the running-config with respect to any changes made to the device configuration.
+
+
+ diff_ignore_lines + +
+ list + / elements=string +
+
+ +
Use this argument to specify one or more lines that should be ignored during the diff. This is used for lines in the configuration that are automatically updated by the system. This argument takes a list of regular expressions or exact line matches.
+
+
+ intended_config + +
+ string +
+
+ +
The intended_config provides the master configuration that the node should conform to and is used to check the final running-config against. This argument will not modify any settings on the remote device and is strictly used to check the compliance of the current device's configuration against. When specifying this argument, the task should also modify the diff_against value and set it to intended. The configuration lines for this value should be similar to how it will appear if present in the running-configuration of the device including the indentation to ensure correct diff.
+
+
+ lines + +
+ list + / elements=string +
+
+ +
The ordered set of commands that should be configured in the section. The commands must be the exact same commands as found in the device running-config to ensure idempotency and correct diff. Be sure to note the configuration command syntax as some commands are automatically modified by the device config parser.
+

aliases: commands
+
+
+ match + +
+ string +
+
+
    Choices: +
  • line ←
  • +
  • strict
  • +
  • exact
  • +
  • none
  • +
+
+
Instructs the module on the way to perform the matching of the set of commands against the current device config. If match is set to line, commands are matched line by line. If match is set to strict, command lines are matched with respect to position. If match is set to exact, command lines must be an equal match. Finally, if match is set to none, the module will not attempt to compare the source configuration with the running configuration on the remote device.
+
+
+ multiline_delimiter + +
+ string +
+
+ Default:
"@"
+
+
This argument is used when pushing a multiline configuration element to the IOS device. It specifies the character to use as the delimiting character. This only applies to the configuration action.
+
+
+ parents + +
+ list + / elements=string +
+
+ +
The ordered set of parents that uniquely identify the section or hierarchy the commands should be checked against. If the parents argument is omitted, the commands are checked against the set of top level or global commands.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ replace + +
+ string +
+
+
    Choices: +
  • line ←
  • +
  • block
  • +
+
+
Instructs the module on the way to perform the configuration on the device. If the replace argument is set to line then the modified lines are pushed to the device in configuration mode. If the replace argument is set to block then the entire command block is pushed to the device in configuration mode if any line is not correct.
+
+
+ running_config + +
+ string +
+
+ +
The module, by default, will connect to the remote device and retrieve the current running-config to use as a base for comparing against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The running_config argument allows the implementer to pass in the configuration to use as the base config for comparison. The configuration lines for this option should be similar to how it will appear if present in the running-configuration of the device including the indentation to ensure idempotency and correct diff.
+

aliases: config
+
+
+ save_when + +
+ string +
+
+
    Choices: +
  • always
  • +
  • never ←
  • +
  • modified
  • +
  • changed
  • +
+
+
When changes are made to the device running-configuration, the changes are not copied to non-volatile storage by default. Using this argument will change that before. If the argument is set to always, then the running-config will always be copied to the startup-config and the modified flag will always be set to True. If the argument is set to modified, then the running-config will only be copied to the startup-config if it has changed since the last save to startup-config. If the argument is set to never, the running-config will never be copied to the startup-config. If the argument is set to changed, then the running-config will only be copied to the startup-config if the task has made a change. changed was added in Ansible 2.5.
+
+
+ src + +
+ string +
+
+ +
Specifies the source path to the file that contains the configuration or configuration template to load. The path to the source file can either be the full path on the Ansible control host or a relative path from the playbook or role root directory. This argument is mutually exclusive with lines, parents. The configuration lines in the source file should be similar to how it will appear if present in the running-configuration of the device including the indentation to ensure idempotency and correct diff.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - 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). + - 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. + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure top level configuration + cisco.ios.ios_config: + lines: hostname {{ inventory_hostname }} + + - name: configure interface settings + cisco.ios.ios_config: + lines: + - description test interface + - ip address 172.31.1.1 255.255.255.0 + parents: interface Ethernet1 + + - name: configure ip helpers on multiple interfaces + cisco.ios.ios_config: + lines: + - ip helper-address 172.26.1.10 + - ip helper-address 172.26.3.8 + parents: '{{ item }}' + with_items: + - interface Ethernet1 + - interface Ethernet2 + - interface GigabitEthernet1 + + - name: configure policer in Scavenger class + cisco.ios.ios_config: + lines: + - conform-action transmit + - exceed-action drop + parents: + - policy-map Foo + - class Scavenger + - police cir 64000 + + - name: load new acl into device + cisco.ios.ios_config: + lines: + - 10 permit ip host 192.0.2.1 any log + - 20 permit ip host 192.0.2.2 any log + - 30 permit ip host 192.0.2.3 any log + - 40 permit ip host 192.0.2.4 any log + - 50 permit ip host 192.0.2.5 any log + parents: ip access-list extended test + before: no ip access-list extended test + match: exact + + - name: check the running-config against master config + cisco.ios.ios_config: + diff_against: intended + intended_config: "{{ lookup('file', 'master.cfg') }}" + + - name: check the startup-config against the running-config + cisco.ios.ios_config: + diff_against: startup + diff_ignore_lines: + - ntp clock .* + + - name: save running to startup when modified + cisco.ios.ios_config: + save_when: modified + + - name: for idempotency, use full-form commands + cisco.ios.ios_config: + lines: + # - shut + - shutdown + # parents: int gig1/0/11 + parents: interface GigabitEthernet1/0/11 + + # Set boot image based on comparison to a group_var (version) and the version + # that is returned from the `ios_facts` module + - name: SETTING BOOT IMAGE + cisco.ios.ios_config: + lines: + - no boot system + - boot system flash bootflash:{{new_image}} + host: '{{ inventory_hostname }}' + when: ansible_net_version != version + - name: render a Jinja2 template onto an IOS device + cisco.ios.ios_config: + backup: yes + src: ios_template.j2 + + - name: configurable backup path + cisco.ios.ios_config: + src: ios_template.j2 + backup: yes + backup_options: + filename: backup.cfg + dir_path: /home/user + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ backup_path + +
+ string +
+
when backup is yes +
The full path to the backup file
+
+
Sample:
+
/playbooks/ansible/backup/ios_config.2016-07-16@22:28:34
+
+
+ commands + +
+ list +
+
always +
The set of commands that will be pushed to the remote device
+
+
Sample:
+
['hostname foo', 'router ospf 1', 'router-id 192.0.2.1']
+
+
+ date + +
+ string +
+
when backup is yes +
The date extracted from the backup file name
+
+
Sample:
+
2016-07-16
+
+
+ filename + +
+ string +
+
when backup is yes and filename is not specified in backup options +
The name of the backup file
+
+
Sample:
+
ios_config.2016-07-16@22:28:34
+
+
+ shortname + +
+ string +
+
when backup is yes and filename is not specified in backup options +
The full path to the backup file excluding the timestamp
+
+
Sample:
+
/playbooks/ansible/backup/ios_config
+
+
+ time + +
+ string +
+
when backup is yes +
The time extracted from the backup file name
+
+
Sample:
+
22:28:34
+
+
+ updates + +
+ list +
+
always +
The set of commands that will be pushed to the remote device
+
+
Sample:
+
['hostname foo', 'router ospf 1', 'router-id 192.0.2.1']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Peter Sprygada (@privateip) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst new file mode 100644 index 00000000..9722bf18 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_facts_module.rst @@ -0,0 +1,626 @@ +.. _cisco.ios.ios_facts_module: + + +******************* +cisco.ios.ios_facts +******************* + +**Collect facts from remote devices running Cisco IOS** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- Collects a base set of device facts from a remote device that is running IOS. This module prepends all of the base network fact keys with ``ansible_net_``. The facts module will always collect a base set of facts from the device and can enable or disable collection of additional facts. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ gather_network_resources + +
+ list + / elements=string +
+
+ +
When supplied, this argument will restrict the facts collected to a given subset. Possible values for this argument include all and the resources like interfaces, vlans etc. Can specify a list of values to include a larger subset. Values can also be used with an initial ! to specify that a specific subset should not be collected. Valid subsets are 'all', 'interfaces', 'l2_interfaces', 'vlans', 'lag_interfaces', 'lacp', 'lacp_interfaces', 'lldp_global', 'lldp_interfaces', 'l3_interfaces', 'acl_interfaces', 'static_routes', 'acls'.
+
+
+ gather_subset + +
+ list + / elements=string +
+
+ Default:
"!config"
+
+
When supplied, this argument restricts the facts collected to a given subset.
+
Possible values for this argument include all, min, hardware, config, and interfaces.
+
Specify a list of values to include a larger subset.
+
Use a value with an initial ! to collect all facts except that subset.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Gather all legacy facts + cisco.ios.ios_facts: + gather_subset: all + + - name: Gather only the config and default facts + cisco.ios.ios_facts: + gather_subset: + - config + + - name: Do not gather hardware facts + cisco.ios.ios_facts: + gather_subset: + - '!hardware' + + - name: Gather legacy and resource facts + cisco.ios.ios_facts: + gather_subset: all + gather_network_resources: all + + - name: Gather only the interfaces resource facts and no legacy facts + cisco.ios.ios_facts: + gather_subset: + - '!all' + - '!min' + gather_network_resources: + - interfaces + + - name: Gather interfaces resource and minimal legacy facts + cisco.ios.ios_facts: + gather_subset: min + gather_network_resources: interfaces + + - name: Gather L2 interfaces resource and minimal legacy facts + cisco.ios.ios_facts: + gather_subset: min + gather_network_resources: l2_interfaces + + - name: Gather L3 interfaces resource and minimal legacy facts + cisco.ios.ios_facts: + gather_subset: min + gather_network_resources: l3_interfaces + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ ansible_net_all_ipv4_addresses + +
+ list +
+
when interfaces is configured +
All IPv4 addresses configured on the device
+
+
+
+ ansible_net_all_ipv6_addresses + +
+ list +
+
when interfaces is configured +
All IPv6 addresses configured on the device
+
+
+
+ ansible_net_api + +
+ string +
+
always +
The name of the transport
+
+
+
+ ansible_net_config + +
+ string +
+
when config is configured +
The current active config from the device
+
+
+
+ ansible_net_filesystems + +
+ list +
+
when hardware is configured +
All file system names available on the device
+
+
+
+ ansible_net_filesystems_info + +
+ dictionary +
+
when hardware is configured +
A hash of all file systems containing info about each file system (e.g. free and total space)
+
+
+
+ ansible_net_gather_network_resources + +
+ list +
+
when the resource is configured +
The list of fact for network resource subsets collected from the device
+
+
+
+ ansible_net_gather_subset + +
+ list +
+
always +
The list of fact subsets collected from the device
+
+
+
+ ansible_net_hostname + +
+ string +
+
always +
The configured hostname of the device
+
+
+
+ ansible_net_image + +
+ string +
+
always +
The image file the device is running
+
+
+
+ ansible_net_interfaces + +
+ dictionary +
+
when interfaces is configured +
A hash of all interfaces running on the system
+
+
+
+ ansible_net_iostype + +
+ string +
+
always +
The operating system type (IOS or IOS-XE) running on the remote device
+
+
+
+ ansible_net_memfree_mb + +
+ integer +
+
when hardware is configured +
The available free memory on the remote device in Mb
+
+
+
+ ansible_net_memtotal_mb + +
+ integer +
+
when hardware is configured +
The total memory on the remote device in Mb
+
+
+
+ ansible_net_model + +
+ string +
+
always +
The model name returned from the device
+
+
+
+ ansible_net_neighbors + +
+ dictionary +
+
when interfaces is configured +
The list of CDP and LLDP neighbors from the remote device. If both, CDP and LLDP neighbor data is present on one port, CDP is preferred.
+
+
+
+ ansible_net_python_version + +
+ string +
+
always +
The Python version Ansible controller is using
+
+
+
+ ansible_net_serialnum + +
+ string +
+
always +
The serial number of the remote device
+
+
+
+ ansible_net_stacked_models + +
+ list +
+
when multiple devices are configured in a stack +
The model names of each device in the stack
+
+
+
+ ansible_net_stacked_serialnums + +
+ list +
+
when multiple devices are configured in a stack +
The serial numbers of each device in the stack
+
+
+
+ ansible_net_version + +
+ string +
+
always +
The operating system version running on the remote device
+
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Peter Sprygada (@privateip) +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interface_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interface_module.rst new file mode 100644 index 00000000..66417786 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interface_module.rst @@ -0,0 +1,789 @@ +.. _cisco.ios.ios_interface_module: + + +*********************** +cisco.ios.ios_interface +*********************** + +**(deprecated, removed after 2022-06-01) Manage Interface on Cisco IOS network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + +DEPRECATED +---------- +:Removed in collection release after 2022-06-01 +:Why: Newer and updated modules released with more functionality in Ansible 2.9 +:Alternative: ios_interfaces + + + +Synopsis +-------- +- This module provides declarative management of Interfaces on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of Interfaces definitions.
+
+
+ delay + +
+ integer +
+
+ +
Time in seconds to wait before checking for the operational state on remote device. This wait is applicable for operational state argument which are state with values up/down, tx_rate and rx_rate.
+
+
+ description + +
+ string +
+
+ +
Description of Interface.
+
+
+ duplex + +
+ string +
+
+
    Choices: +
  • full
  • +
  • half
  • +
  • auto
  • +
+
+
Interface link status
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Interface link status.
+
+
+ mtu + +
+ string +
+
+ +
Maximum size of transmit packet.
+
+
+ name + +
+ string + / required +
+
+ +
Name of the Interface.
+
+
+ neighbors + +
+ list + / elements=dictionary +
+
+ +
Check the operational state of given interface name for CDP/LLDP neighbor.
+
The following suboptions are available.
+
+
+ host + +
+ string +
+
+ +
CDP/LLDP neighbor host for given interface name.
+
+
+ port + +
+ string +
+
+ +
CDP/LLDP neighbor port to which given interface name is connected.
+
+
+ rx_rate + +
+ string +
+
+ +
Receiver rate in bits per second (bps).
+
This is state check parameter only.
+
Supports conditionals, see Conditionals in Networking Modules
+
+
+ speed + +
+ string +
+
+ +
Interface link speed.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
  • up
  • +
  • down
  • +
+
+
State of the Interface configuration, up means present and operationally up and down means present and operationally down
+
+
+ tx_rate + +
+ string +
+
+ +
Transmit rate in bits per second (bps).
+
This is state check parameter only.
+
Supports conditionals, see Conditionals in Networking Modules
+
+
+ delay + +
+ integer +
+
+ Default:
10
+
+
Time in seconds to wait before checking for the operational state on remote device. This wait is applicable for operational state argument which are state with values up/down, tx_rate and rx_rate.
+
+
+ description + +
+ string +
+
+ +
Description of Interface.
+
+
+ duplex + +
+ string +
+
+
    Choices: +
  • full
  • +
  • half
  • +
  • auto
  • +
+
+
Interface link status
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes ←
  • +
+
+
Interface link status.
+
+
+ mtu + +
+ string +
+
+ +
Maximum size of transmit packet.
+
+
+ name + +
+ string +
+
+ +
Name of the Interface.
+
+
+ neighbors + +
+ list + / elements=dictionary +
+
+ +
Check the operational state of given interface name for CDP/LLDP neighbor.
+
The following suboptions are available.
+
+
+ host + +
+ string +
+
+ +
CDP/LLDP neighbor host for given interface name.
+
+
+ port + +
+ string +
+
+ +
CDP/LLDP neighbor port to which given interface name is connected.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ rx_rate + +
+ string +
+
+ +
Receiver rate in bits per second (bps).
+
This is state check parameter only.
+
Supports conditionals, see Conditionals in Networking Modules
+
+
+ speed + +
+ string +
+
+ +
Interface link speed.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
  • up
  • +
  • down
  • +
+
+
State of the Interface configuration, up means present and operationally up and down means present and operationally down
+
+
+ tx_rate + +
+ string +
+
+ +
Transmit rate in bits per second (bps).
+
This is state check parameter only.
+
Supports conditionals, see Conditionals in Networking Modules
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure interface + cisco.ios.ios_interface: + name: GigabitEthernet0/2 + description: test-interface + speed: 100 + duplex: half + mtu: 512 + + - name: remove interface + cisco.ios.ios_interface: + name: Loopback9 + state: absent + + - name: make interface up + cisco.ios.ios_interface: + name: GigabitEthernet0/2 + enabled: true + + - name: make interface down + cisco.ios.ios_interface: + name: GigabitEthernet0/2 + enabled: false + + - name: Check intent arguments + cisco.ios.ios_interface: + name: GigabitEthernet0/2 + state: up + tx_rate: ge(0) + rx_rate: le(0) + + - name: Check neighbors intent arguments + cisco.ios.ios_interface: + name: Gi0/0 + neighbors: + - port: eth0 + host: netdev + + - name: Config + intent + cisco.ios.ios_interface: + name: GigabitEthernet0/2 + enabled: false + state: down + + - name: Add interface using aggregate + cisco.ios.ios_interface: + aggregate: + - {name: GigabitEthernet0/1, mtu: 256, description: test-interface-1} + - {name: GigabitEthernet0/2, mtu: 516, description: test-interface-2} + duplex: full + speed: 100 + state: present + + - name: Delete interface using aggregate + cisco.ios.ios_interface: + aggregate: + - name: Loopback9 + - name: Loopback10 + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always, except for the platforms that use Netconf transport to manage the device. +
The list of configuration mode commands to send to the device.
+
+
Sample:
+
['interface GigabitEthernet0/2', 'description test-interface', 'duplex half', 'mtu 512']
+
+

+ + +Status +------ + + +- This module will be removed in version . *[deprecated]* +- For more information see `DEPRECATED`_. + + +Authors +~~~~~~~ + +- Ganesh Nalawade (@ganeshrn) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interfaces_module.rst new file mode 100644 index 00000000..afe59318 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_interfaces_module.rst @@ -0,0 +1,700 @@ +.. _cisco.ios.ios_interfaces_module: + + +************************ +cisco.ios.ios_interfaces +************************ + +**Interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module manages the interface attributes of Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of interface options
+
+
+ description + +
+ string +
+
+ +
Interface description.
+
+
+ duplex + +
+ string +
+
+
    Choices: +
  • full
  • +
  • half
  • +
  • auto
  • +
+
+
Interface link status. Applicable for Ethernet interfaces only, either in half duplex, full duplex or in automatic state which negotiates the duplex automatically.
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes ←
  • +
+
+
Administrative state of the interface.
+
Set the value to true to administratively enable the interface or false to disable it.
+
+
+ mtu + +
+ integer +
+
+ +
MTU for a specific interface. Applicable for Ethernet interfaces only.
+
Refer to vendor documentation for valid values.
+
+
+ name + +
+ string + / required +
+
+ +
Full name of interface, e.g. GigabitEthernet0/2, loopback999.
+
+
+ speed + +
+ string +
+
+ +
Interface link speed. Applicable for Ethernet interfaces only.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # no ip address + # duplex auto + # speed auto + + - name: Merge provided configuration with device configuration + cisco.ios.ios_interfaces: + config: + - name: GigabitEthernet0/2 + description: Configured and Merged by Ansible Network + enabled: true + - name: GigabitEthernet0/3 + description: Configured and Merged by Ansible Network + mtu: 2800 + enabled: false + speed: 100 + duplex: full + state: merged + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured and Merged by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured and Merged by Ansible Network + # mtu 2800 + # no ip address + # shutdown + # duplex full + # speed 100 + + # Using replaced + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # mtu 2000 + # no ip address + # shutdown + # duplex full + # speed 100 + + - name: Replaces device configuration of listed interfaces with provided configuration + cisco.ios.ios_interfaces: + config: + - name: GigabitEthernet0/3 + description: Configured and Replaced by Ansible Network + enabled: false + duplex: auto + mtu: 2500 + speed: 1000 + state: replaced + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured and Replaced by Ansible Network + # mtu 2500 + # no ip address + # shutdown + # duplex full + # speed 1000 + + # Using overridden + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface# + # interface GigabitEthernet0/1 + # description Configured by Ansible + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible + # mtu 2800 + # no ip address + # shutdown + # duplex full + # speed 100 + + - name: Override device configuration of all interfaces with provided configuration + cisco.ios.ios_interfaces: + config: + - name: GigabitEthernet0/2 + description: Configured and Overridden by Ansible Network + speed: 1000 + - name: GigabitEthernet0/3 + description: Configured and Overridden by Ansible Network + enabled: false + duplex: full + mtu: 2000 + state: overridden + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured and Overridden by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured and Overridden by Ansible Network + # mtu 2000 + # no ip address + # shutdown + # duplex full + # speed 100 + + # Using Deleted + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # mtu 2500 + # no ip address + # shutdown + # duplex full + # speed 1000 + + - name: "Delete module attributes of given interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_interfaces: + config: + - name: GigabitEthernet0/2 + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # mtu 2500 + # no ip address + # shutdown + # duplex full + # speed 1000 + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured resource module attributes from each configured interface)" + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # mtu 2500 + # no ip address + # shutdown + # duplex full + # speed 1000 + + - name: "Delete module attributes of all interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_interfaces: + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/3 + # no ip address + # duplex auto + # speed auto + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # description this is interface1 + # mtu 65 + # duplex auto + # speed 10 + # interface GigabitEthernet0/2 + # description this is interface2 + # mtu 110 + # shutdown + # duplex auto + # speed 100 + + - name: Gather listed interfaces with provided configurations + cisco.ios.ios_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "description": "this is interface1", + # "duplex": "auto", + # "enabled": true, + # "mtu": 65, + # "name": "GigabitEthernet0/1", + # "speed": "10" + # }, + # { + # "description": "this is interface2", + # "duplex": "auto", + # "enabled": false, + # "mtu": 110, + # "name": "GigabitEthernet0/2", + # "speed": "100" + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # description this is interface1 + # mtu 65 + # duplex auto + # speed 10 + # interface GigabitEthernet0/2 + # description this is interface2 + # mtu 110 + # shutdown + # duplex auto + # speed 100 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_interfaces: + config: + - name: GigabitEthernet0/1 + description: Configured by Ansible-Network + mtu: 110 + enabled: true + duplex: half + - name: GigabitEthernet0/2 + description: Configured by Ansible-Network + mtu: 2800 + enabled: false + speed: 100 + duplex: full + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "description Configured by Ansible-Network", + # "mtu 110", + # "duplex half", + # "no shutdown", + # "interface GigabitEthernet0/2", + # "description Configured by Ansible-Network", + # "mtu 2800", + # "speed 100", + # "duplex full", + # "shutdown" + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # description interfaces 0/1 + # mtu 110 + # duplex half + # no shutdown + # interface GigabitEthernet0/2 + # description interfaces 0/2 + # mtu 2800 + # speed 100 + # duplex full + # shutdown + + - name: Parse the commands for provided configuration + cisco.ios.ios_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "description": "interfaces 0/1", + # "duplex": "half", + # "enabled": true, + # "mtu": 110, + # "name": "GigabitEthernet0/1" + # }, + # { + # "description": "interfaces 0/2", + # "duplex": "full", + # "enabled": true, + # "mtu": 2800, + # "name": "GigabitEthernet0/2", + # "speed": "100" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['interface GigabitEthernet 0/1', 'description This is test', 'speed 100']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interface_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interface_module.rst new file mode 100644 index 00000000..af23ae1c --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interface_module.rst @@ -0,0 +1,542 @@ +.. _cisco.ios.ios_l2_interface_module: + + +************************** +cisco.ios.ios_l2_interface +************************** + +**(deprecated, removed after 2022-06-01) Manage Layer-2 interface on Cisco IOS devices.** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + +DEPRECATED +---------- +:Removed in collection release after 2022-06-01 +:Why: Newer and updated modules released with more functionality in Ansible 2.9 +:Alternative: ios_l2_interfaces + + + +Synopsis +-------- +- This module provides declarative management of Layer-2 interfaces on Cisco IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ access_vlan + +
+ string +
+
+ +
Configure given VLAN in access port. If mode=access, used as the access VLAN ID.
+
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of Layer-2 interface definitions.
+
+
+ access_vlan + +
+ string +
+
+ +
Configure given VLAN in access port. If mode=access, used as the access VLAN ID.
+
+
+ mode + +
+ string +
+
+
    Choices: +
  • access
  • +
  • trunk
  • +
+
+
Mode in which interface needs to be configured.
+
+
+ name + +
+ string +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+

aliases: interface
+
+
+ native_vlan + +
+ string +
+
+ +
Native VLAN to be configured in trunk port. If mode=trunk, used as the trunk native VLAN ID.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
  • unconfigured
  • +
+
+
Manage the state of the Layer-2 Interface configuration.
+
+
+ trunk_allowed_vlans + +
+ string +
+
+ +
List of allowed VLANs in a given trunk port. If mode=trunk, these are the only VLANs that will be configured on the trunk, i.e. "2-10,15".
+
+
+ trunk_vlans + +
+ string +
+
+ +
List of VLANs to be configured in trunk port. If mode=trunk, used as the VLAN range to ADD or REMOVE from the trunk.
+
+
+ mode + +
+ string +
+
+
    Choices: +
  • access
  • +
  • trunk
  • +
+
+
Mode in which interface needs to be configured.
+
+
+ name + +
+ string +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+

aliases: interface
+
+
+ native_vlan + +
+ string +
+
+ +
Native VLAN to be configured in trunk port. If mode=trunk, used as the trunk native VLAN ID.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
  • unconfigured
  • +
+
+
Manage the state of the Layer-2 Interface configuration.
+
+
+ trunk_allowed_vlans + +
+ string +
+
+ +
List of allowed VLANs in a given trunk port. If mode=trunk, these are the only VLANs that will be configured on the trunk, i.e. "2-10,15".
+
+
+ trunk_vlans + +
+ string +
+
+ +
List of VLANs to be configured in trunk port. If mode=trunk, used as the VLAN range to ADD or REMOVE from the trunk.
+
+
+ + +Notes +----- + +.. note:: + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Ensure GigabitEthernet0/5 is in its default l2 interface state + ios.ios_l2_interface: + name: GigabitEthernet0/5 + state: unconfigured + - name: Ensure GigabitEthernet0/5 is configured for access vlan 20 + ios.ios_l2_interface: + name: GigabitEthernet0/5 + mode: access + access_vlan: 20 + - name: Ensure GigabitEthernet0/5 only has vlans 5-10 as trunk vlans + ios.ios_l2_interface: + name: GigabitEthernet0/5 + mode: trunk + native_vlan: 10 + trunk_allowed_vlans: 5-10 + - name: Ensure GigabitEthernet0/5 is a trunk port and ensure 2-50 are being tagged + (doesn't mean others aren't also being tagged) + ios.ios_l2_interface: + name: GigabitEthernet0/5 + mode: trunk + native_vlan: 10 + trunk_vlans: 2-50 + - name: Ensure these VLANs are not being tagged on the trunk + ios.ios_l2_interface: + name: GigabitEthernet0/5 + mode: trunk + trunk_vlans: 51-4094 + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always, except for the platforms that use Netconf transport to manage the device. +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['interface GigabitEthernet0/5', 'switchport access vlan 20']
+
+

+ + +Status +------ + + +- This module will be removed in version . *[deprecated]* +- For more information see `DEPRECATED`_. + + +Authors +~~~~~~~ + +- Nathaniel Case (@Qalthos) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interfaces_module.rst new file mode 100644 index 00000000..1472ff3d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l2_interfaces_module.rst @@ -0,0 +1,750 @@ +.. _cisco.ios.ios_l2_interfaces_module: + + +*************************** +cisco.ios.ios_l2_interfaces +*************************** + +**L2 interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of Layer-2 interface on Cisco IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of Layer-2 interface options
+
+
+ access + +
+ dictionary +
+
+ +
Switchport mode access command to configure the interface as a layer 2 access.
+
+
+ vlan + +
+ integer +
+
+ +
Configure given VLAN in access port. It's used as the access VLAN ID.
+
+
+ mode + +
+ string +
+
+
    Choices: +
  • access
  • +
  • trunk
  • +
+
+
Mode in which interface needs to be configured.
+
An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.
+
+
+ name + +
+ string + / required +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+
+
+ trunk + +
+ dictionary +
+
+ +
Switchport mode trunk command to configure the interface as a Layer 2 trunk. Note The encapsulation is always set to dot1q.
+
+
+ allowed_vlans + +
+ list + / elements=string +
+
+ +
List of allowed VLANs in a given trunk port. These are the only VLANs that will be configured on the trunk.
+
+
+ encapsulation + +
+ string +
+
+
    Choices: +
  • dot1q
  • +
  • isl
  • +
  • negotiate
  • +
+
+
Trunking encapsulation when interface is in trunking mode.
+
+
+ native_vlan + +
+ integer +
+
+ +
Native VLAN to be configured in trunk port. It's used as the trunk native VLAN ID.
+
+
+ pruning_vlans + +
+ list + / elements=string +
+
+ +
Pruning VLAN to be configured in trunk port. It's used as the trunk pruning VLAN ID.
+
+
+ voice + +
+ dictionary +
+
+ +
Switchport mode voice command to configure the interface with a voice vlan.
+
+
+ vlan + +
+ integer +
+
+ +
Configure given voice VLAN on access port. It's used as the voice VLAN ID.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # media-type rj45 + # negotiation auto + + - name: Merge provided configuration with device configuration + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/1 + mode: access + access: + vlan: 10 + voice: + vlan: 40 + - name: GigabitEthernet0/2 + mode: trunk + trunk: + allowed_vlans: 10-20,40 + native_vlan: 20 + pruning_vlans: 10,20 + encapsulation: dot1q + state: merged + + # After state: + # ------------ + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport access vlan 10 + # switchport voice vlan 40 + # switchport mode access + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport trunk allowed vlan 10-20,40 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 20 + # switchport trunk pruning vlan 10,20 + # switchport mode trunk + # media-type rj45 + # negotiation auto + + # Using replaced + + # Before state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport access vlan 20 + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # media-type rj45 + # negotiation auto + + - name: Replaces device configuration of listed l2 interfaces with provided configuration + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/2 + trunk: + allowed_vlans: 20-25,40 + native_vlan: 20 + pruning_vlans: 10 + encapsulation: isl + state: replaced + + # After state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport access vlan 20 + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport trunk allowed vlan 20-25,40 + # switchport trunk encapsulation isl + # switchport trunk native vlan 20 + # switchport trunk pruning vlan 10 + # media-type rj45 + # negotiation auto + + # Using overridden + + # Before state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 20 + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 20 + # media-type rj45 + # negotiation auto + + - name: Override device configuration of all l2 interfaces with provided configuration + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/2 + access: + vlan: 20 + voice: + vlan: 40 + state: overridden + + # After state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # switchport voice vlan 40 + # media-type rj45 + # negotiation auto + + # Using Deleted + + # Before state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport access vlan 20 + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # switchport trunk allowed vlan 20-40,60,80 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 10 + # switchport trunk pruning vlan 10 + # media-type rj45 + # negotiation auto + + - name: Delete IOS L2 interfaces as in given arguments + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/1 + state: deleted + + # After state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # switchport trunk allowed vlan 20-40,60,80 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 10 + # switchport trunk pruning vlan 10 + # media-type rj45 + # negotiation auto + + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured resource module attributes from each configured interface)" + + # Before state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # switchport access vlan 20 + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # switchport access vlan 20 + # switchport trunk allowed vlan 20-40,60,80 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 10 + # switchport trunk pruning vlan 10 + # media-type rj45 + # negotiation auto + + - name: Delete IOS L2 interfaces as in given arguments + cisco.ios.ios_l2_interfaces: + state: deleted + + # After state: + # ------------- + # + # viosl2#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # negotiation auto + # interface GigabitEthernet0/2 + # description This is test + # media-type rj45 + # negotiation auto + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # switchport access vlan 10 + # interface GigabitEthernet0/2 + # switchport trunk allowed vlan 10-20,40 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 10 + # switchport trunk pruning vlan 10,20 + # switchport mode trunk + + - name: Gather listed l2 interfaces with provided configurations + cisco.ios.ios_l2_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "name": "GigabitEthernet0/0" + # }, + # { + # "access": { + # "vlan": 10 + # }, + # "name": "GigabitEthernet0/1" + # }, + # { + # "mode": "trunk", + # "name": "GigabitEthernet0/2", + # "trunk": { + # "allowed_vlans": [ + # "10-20", + # "40" + # ], + # "encapsulation": "dot1q", + # "native_vlan": 10, + # "pruning_vlans": [ + # "10", + # "20" + # ] + # } + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # switchport access vlan 10 + # interface GigabitEthernet0/2 + # switchport trunk allowed vlan 10-20,40 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 10 + # switchport trunk pruning vlan 10,20 + # switchport mode trunk + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_l2_interfaces: + config: + - name: GigabitEthernet0/1 + access: + vlan: 30 + - name: GigabitEthernet0/2 + trunk: + allowed_vlans: 10-20,40 + native_vlan: 20 + pruning_vlans: 10,20 + encapsulation: dot1q + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "switchport access vlan 30", + # "interface GigabitEthernet0/2", + # "switchport trunk encapsulation dot1q", + # "switchport trunk native vlan 20", + # "switchport trunk allowed vlan 10-20,40", + # "switchport trunk pruning vlan 10,20" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # switchport mode access + # switchport access vlan 30 + # interface GigabitEthernet0/2 + # switchport trunk allowed vlan 15-20,40 + # switchport trunk encapsulation dot1q + # switchport trunk native vlan 20 + # switchport trunk pruning vlan 10,20 + + - name: Parse the commands for provided configuration + cisco.ios.ios_l2_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "access": { + # "vlan": 30 + # }, + # "mode": "access", + # "name": "GigabitEthernet0/1" + # }, + # { + # "name": "GigabitEthernet0/2", + # "trunk": { + # "allowed_vlans": [ + # "15-20", + # "40" + # ], + # "encapsulation": "dot1q", + # "native_vlan": 20, + # "pruning_vlans": [ + # "10", + # "20" + # ] + # } + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['interface GigabitEthernet0/1', 'switchport access vlan 20']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interface_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interface_module.rst new file mode 100644 index 00000000..c0e4a9cf --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interface_module.rst @@ -0,0 +1,449 @@ +.. _cisco.ios.ios_l3_interface_module: + + +************************** +cisco.ios.ios_l3_interface +************************** + +**(deprecated, removed after 2022-06-01) Manage Layer-3 interfaces on Cisco IOS network devices.** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + +DEPRECATED +---------- +:Removed in collection release after 2022-06-01 +:Why: Newer and updated modules released with more functionality in Ansible 2.9 +:Alternative: ios_l3_interfaces + + + +Synopsis +-------- +- This module provides declarative management of Layer-3 interfaces on IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of Layer-3 interfaces definitions. Each of the entry in aggregate list should define name of interface name and a optional ipv4 or ipv6 address.
+
+
+ ipv4 + +
+ string +
+
+ +
IPv4 address to be set for the Layer-3 interface mentioned in name option. The address format is <ipv4 address>/<mask>, the mask is number in range 0-32 eg. 192.168.0.1/24
+
+
+ ipv6 + +
+ string +
+
+ +
IPv6 address to be set for the Layer-3 interface mentioned in name option. The address format is <ipv6 address>/<mask>, the mask is number in range 0-128 eg. fd5d:12c9:2201:1::1/64
+
+
+ name + +
+ string + / required +
+
+ +
Name of the Layer-3 interface to be configured eg. GigabitEthernet0/2
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
+
+
State of the Layer-3 interface configuration. It indicates if the configuration should be present or absent on remote device.
+
+
+ ipv4 + +
+ string +
+
+ +
IPv4 address to be set for the Layer-3 interface mentioned in name option. The address format is <ipv4 address>/<mask>, the mask is number in range 0-32 eg. 192.168.0.1/24
+
+
+ ipv6 + +
+ string +
+
+ +
IPv6 address to be set for the Layer-3 interface mentioned in name option. The address format is <ipv6 address>/<mask>, the mask is number in range 0-128 eg. fd5d:12c9:2201:1::1/64
+
+
+ name + +
+ string +
+
+ +
Name of the Layer-3 interface to be configured eg. GigabitEthernet0/2
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
State of the Layer-3 interface configuration. It indicates if the configuration should be present or absent on remote device.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.2 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Remove GigabitEthernet0/3 IPv4 and IPv6 address + cisco.ios.ios_l3_interface: + name: GigabitEthernet0/3 + state: absent + - name: Set GigabitEthernet0/3 IPv4 address + cisco.ios.ios_l3_interface: + name: GigabitEthernet0/3 + ipv4: 192.168.0.1/24 + - name: Set GigabitEthernet0/3 IPv6 address + cisco.ios.ios_l3_interface: + name: GigabitEthernet0/3 + ipv6: fd5d:12c9:2201:1::1/64 + - name: Set GigabitEthernet0/3 in dhcp + cisco.ios.ios_l3_interface: + name: GigabitEthernet0/3 + ipv4: dhcp + ipv6: dhcp + - name: Set interface Vlan1 (SVI) IPv4 address + cisco.ios.ios_l3_interface: + name: Vlan1 + ipv4: 192.168.0.5/24 + - name: Set IP addresses on aggregate + cisco.ios.ios_l3_interface: + aggregate: + - name: GigabitEthernet0/3 + ipv4: 192.168.2.10/24 + - name: GigabitEthernet0/3 + ipv4: 192.168.3.10/24 + ipv6: fd5d:12c9:2201:1::1/64 + - name: Remove IP addresses on aggregate + cisco.ios.ios_l3_interface: + aggregate: + - name: GigabitEthernet0/3 + ipv4: 192.168.2.10/24 + - name: GigabitEthernet0/3 + ipv4: 192.168.3.10/24 + ipv6: fd5d:12c9:2201:1::1/64 + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always, except for the platforms that use Netconf transport to manage the device. +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['interface GigabitEthernet0/2', 'ip address 192.168.0.1 255.255.255.0', 'ipv6 address fd5d:12c9:2201:1::1/64']
+
+

+ + +Status +------ + + +- This module will be removed in version . *[deprecated]* +- For more information see `DEPRECATED`_. + + +Authors +~~~~~~~ + +- Ganesh Nalawade (@ganeshrn) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interfaces_module.rst new file mode 100644 index 00000000..3b6e274a --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_l3_interfaces_module.rst @@ -0,0 +1,760 @@ +.. _cisco.ios.ios_l3_interfaces_module: + + +*************************** +cisco.ios.ios_l3_interfaces +*************************** + +**L3 interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of Layer-3 interface on Cisco IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of Layer-3 interface options
+
+
+ ipv4 + +
+ list + / elements=dictionary +
+
+ +
IPv4 address to be set for the Layer-3 interface mentioned in name option. The address format is <ipv4 address>/<mask>, the mask is number in range 0-32 eg. 192.168.0.1/24.
+
+
+ address + +
+ string +
+
+ +
Configures the IPv4 address for Interface.
+
+
+ dhcp_client + +
+ integer +
+
+ +
Configures and specifies client-id to use over DHCP ip. Note, This option shall work only when dhcp is configured as IP.
+
GigabitEthernet interface number
+
+
+ dhcp_hostname + +
+ string +
+
+ +
Configures and specifies value for hostname option over DHCP ip. Note, This option shall work only when dhcp is configured as IP.
+
+
+ secondary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configures the IP address as a secondary address.
+
+
+ ipv6 + +
+ list + / elements=dictionary +
+
+ +
IPv6 address to be set for the Layer-3 interface mentioned in name option.
+
The address format is <ipv6 address>/<mask>, the mask is number in range 0-128 eg. fd5d:12c9:2201:1::1/64
+
+
+ address + +
+ string +
+
+ +
Configures the IPv6 address for Interface.
+
+
+ name + +
+ string + / required +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | section ^interface executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # ip address 10.1.1.1 255.255.255.0 + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # no ip address + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + + - name: Merge provided configuration with device configuration + cisco.ios.ios_l3_interfaces: + config: + - name: GigabitEthernet0/1 + ipv4: + - address: 192.168.0.1/24 + secondary: true + - name: GigabitEthernet0/2 + ipv4: + - address: 192.168.0.2/24 + - name: GigabitEthernet0/3 + ipv6: + - address: fd5d:12c9:2201:1::1/64 + - name: GigabitEthernet0/3.100 + ipv4: + - address: 192.168.0.3/24 + state: merged + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # ip address 10.1.1.1 255.255.255.0 + # ip address 192.168.0.1 255.255.255.0 secondary + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # ip address 192.168.0.2 255.255.255.0 + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ipv6 address FD5D:12C9:2201:1::1/64 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.3 255.255.255.0 + + # Using replaced + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # ip address 10.1.1.1 255.255.255.0 + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # no ip address + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ip address 192.168.2.0 255.255.255.0 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.2 255.255.255.0 + + - name: Replaces device configuration of listed interfaces with provided configuration + cisco.ios.ios_l3_interfaces: + config: + - name: GigabitEthernet0/2 + ipv4: + - address: 192.168.2.0/24 + - name: GigabitEthernet0/3 + ipv4: + - address: dhcp + dhcp_client: 2 + dhcp_hostname: test.com + - name: GigabitEthernet0/3.100 + ipv4: + - address: 192.168.0.3/24 + secondary: true + state: replaced + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # ip address 10.1.1.1 255.255.255.0 + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # ip address 192.168.2.1 255.255.255.0 + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ip address dhcp client-id GigabitEthernet0/2 hostname test.com + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.2 255.255.255.0 + # ip address 192.168.0.3 255.255.255.0 secondary + + # Using overridden + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # ip address 10.1.1.1 255.255.255.0 + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # ip address 192.168.2.1 255.255.255.0 + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ipv6 address FD5D:12C9:2201:1::1/64 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.2 255.255.255.0 + + - name: Override device configuration of all interfaces with provided configuration + cisco.ios.ios_l3_interfaces: + config: + - name: GigabitEthernet0/2 + ipv4: + - address: 192.168.0.1/24 + - name: GigabitEthernet0/3.100 + ipv6: + - address: autoconfig + state: overridden + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # description Configured by Ansible + # no ip address + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description This is test + # ip address 192.168.0.1 255.255.255.0 + # duplex auto + # speed 1000 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ipv6 address autoconfig + + # Using Deleted + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # ip address 192.0.2.10 255.255.255.0 + # shutdown + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # ip address 192.168.1.0 255.255.255.0 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ip address 192.168.0.1 255.255.255.0 + # shutdown + # duplex full + # speed 10 + # ipv6 address FD5D:12C9:2201:1::1/64 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.2 255.255.255.0 + + - name: "Delete attributes of given interfaces (NOTE: This won't delete the interface sitself)" + cisco.ios.ios_l3_interfaces: + config: + - name: GigabitEthernet0/2 + - name: GigabitEthernet0/3.100 + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # shutdown + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ip address 192.168.0.1 255.255.255.0 + # shutdown + # duplex full + # speed 10 + # ipv6 address FD5D:12C9:2201:1::1/64 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured L3 resource module attributes from each configured interface)" + + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # ip address 192.0.2.10 255.255.255.0 + # shutdown + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # ip address 192.168.1.0 255.255.255.0 + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # ip address 192.168.0.1 255.255.255.0 + # shutdown + # duplex full + # speed 10 + # ipv6 address FD5D:12C9:2201:1::1/64 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + # ip address 192.168.0.2 255.255.255.0 + + - name: "Delete L3 attributes of ALL interfaces together (NOTE: This won't delete the interface itself)" + cisco.ios.ios_l3_interfaces: + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface GigabitEthernet0/1 + # no ip address + # shutdown + # duplex auto + # speed auto + # interface GigabitEthernet0/2 + # description Configured by Ansible Network + # no ip address + # interface GigabitEthernet0/3 + # description Configured by Ansible Network + # shutdown + # duplex full + # speed 10 + # interface GigabitEthernet0/3.100 + # encapsulation dot1Q 20 + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # ip address 203.0.113.27 255.255.255.0 + # interface GigabitEthernet0/2 + # ip address 192.0.2.1 255.255.255.0 secondary + # ip address 192.0.2.2 255.255.255.0 + # ipv6 address 2001:DB8:0:3::/64 + + - name: Gather listed l3 interfaces with provided configurations + cisco.ios.ios_l3_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "ipv4": [ + # { + # "address": "203.0.113.27 255.255.255.0" + # } + # ], + # "name": "GigabitEthernet0/1" + # }, + # { + # "ipv4": [ + # { + # "address": "192.0.2.1 255.255.255.0", + # "secondary": true + # }, + # { + # "address": "192.0.2.2 255.255.255.0" + # } + # ], + # "ipv6": [ + # { + # "address": "2001:db8:0:3::/64" + # } + # ], + # "name": "GigabitEthernet0/2" + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^interface + # interface GigabitEthernet0/1 + # ip address 203.0.113.27 255.255.255.0 + # interface GigabitEthernet0/2 + # ip address 192.0.2.1 255.255.255.0 secondary + # ip address 192.0.2.2 255.255.255.0 + # ipv6 address 2001:DB8:0:3::/64 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_l3_interfaces: + config: + - name: GigabitEthernet0/1 + ipv4: + - address: dhcp + dhcp_client: 0 + dhcp_hostname: test.com + - name: GigabitEthernet0/2 + ipv4: + - address: 198.51.100.1/24 + secondary: true + - address: 198.51.100.2/24 + ipv6: + - address: 2001:db8:0:3::/64 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "ip address dhcp client-id GigabitEthernet 0/0 hostname test.com", + # "interface GigabitEthernet0/2", + # "ip address 198.51.100.1 255.255.255.0 secondary", + # "ip address 198.51.100.2 255.255.255.0", + # "ipv6 address 2001:db8:0:3::/64" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # ip address dhcp client-id + # GigabitEthernet 0/0 hostname test.com + # interface GigabitEthernet0/2 + # ip address 198.51.100.1 255.255.255.0 + # secondary ip address 198.51.100.2 255.255.255.0 + # ipv6 address 2001:db8:0:3::/64 + + - name: Parse the commands for provided configuration + cisco.ios.ios_l3_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "ipv4": [ + # { + # "address": "dhcp", + # "dhcp_client": 0, + # "dhcp_hostname": "test.com" + # } + # ], + # "name": "GigabitEthernet0/1" + # }, + # { + # "ipv4": [ + # { + # "address": "198.51.100.1 255.255.255.0", + # "secondary": true + # }, + # { + # "address": "198.51.100.2 255.255.255.0" + # } + # ], + # "ipv6": [ + # { + # "address": "2001:db8:0:3::/64" + # } + # ], + # "name": "GigabitEthernet0/2" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['interface GigabitEthernet0/1', 'ip address 192.168.0.2 255.255.255.0']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_interfaces_module.rst new file mode 100644 index 00000000..d0bbd10d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_interfaces_module.rst @@ -0,0 +1,615 @@ +.. _cisco.ios.ios_lacp_interfaces_module: + + +***************************** +cisco.ios.ios_lacp_interfaces +***************************** + +**LACP interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of LACP on Cisco IOS network devices lacp_interfaces. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of LACP lacp_interfaces option
+
+
+ fast_switchover + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
LACP fast switchover supported on this port channel.
+
+
+ max_bundle + +
+ integer +
+
+ +
LACP maximum number of ports to bundle in this port channel.
+
Refer to vendor documentation for valid port values.
+
+
+ name + +
+ string + / required +
+
+ +
Name of the Interface for configuring LACP.
+
+
+ port_priority + +
+ integer +
+
+ +
LACP priority on this interface.
+
Refer to vendor documentation for valid port values.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + + - name: Merge provided configuration with device configuration + cisco.ios.ios_lacp_interfaces: + config: + - name: GigabitEthernet0/1 + port_priority: 10 + - name: GigabitEthernet0/2 + port_priority: 20 + - name: GigabitEthernet0/3 + port_priority: 30 + - name: Port-channel10 + fast_switchover: true + max_bundle: 5 + state: merged + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # lacp max-bundle 5 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + # Using overridden + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + - name: Override device configuration of all lacp_interfaces with provided configuration + cisco.ios.ios_lacp_interfaces: + config: + - name: GigabitEthernet0/1 + port_priority: 20 + - name: Port-channel10 + max_bundle: 2 + state: overridden + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp max-bundle 2 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + + # Using replaced + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp max-bundle 5 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + - name: Replaces device configuration of listed lacp_interfaces with provided configuration + cisco.ios.ios_lacp_interfaces: + config: + - name: GigabitEthernet0/3 + port_priority: 40 + - name: Port-channel10 + fast_switchover: true + max_bundle: 2 + state: replaced + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # lacp max-bundle 2 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 40 + + # Using Deleted + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # flowcontrol receive on + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + - name: "Delete LACP attributes of given interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lacp_interfaces: + config: + - name: GigabitEthernet0/1 + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + # Using Deleted without any config passed + # "(NOTE: This will delete all of configured LLDP module attributes)" + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # interface Port-channel20 + # lacp max-bundle 2 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # shutdown + # lacp port-priority 20 + # interface GigabitEthernet0/3 + # shutdown + # lacp port-priority 30 + + - name: "Delete LACP attributes for all configured interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lacp_interfaces: + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # lacp max-bundle 2 + # interface Port-channel40 + # lacp max-bundle 5 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # lacp port-priority 30 + # interface GigabitEthernet0/2 + # lacp port-priority 20 + + - name: Gather listed LACP interfaces with provided configurations + cisco.ios.ios_lacp_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "fast_switchover": true, + # "max_bundle": 2, + # "name": "Port-channel10" + # }, + # { + # "max_bundle": 5, + # "name": "Port-channel40" + # }, + # { + # "name": "GigabitEthernet0/0" + # }, + # { + # "name": "GigabitEthernet0/1", + # "port_priority": 30 + # }, + # { + # "name": "GigabitEthernet0/2", + # "port_priority": 20 + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^interface + # interface Port-channel10 + # lacp fast-switchover + # lacp max-bundle 2 + # interface Port-channel40 + # lacp max-bundle 5 + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # lacp port-priority 30 + # interface GigabitEthernet0/2 + # lacp port-priority 20 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_lacp_interfaces: + config: + - name: GigabitEthernet0/1 + port_priority: 10 + - name: GigabitEthernet0/2 + port_priority: 20 + - name: Port-channel10 + fast_switchover: true + max_bundle: 2 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "lacp port-priority 10", + # "interface GigabitEthernet0/2", + # "lacp port-priority 20", + # "interface Port-channel10", + # "lacp max-bundle 2", + # "lacp fast-switchover" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # lacp port-priority 10 + # interface GigabitEthernet0/2 + # lacp port-priority 20 + # interface Port-channel10 + # lacp max-bundle 2 fast-switchover + + - name: Parse the commands for provided configuration + cisco.ios.ios_lacp_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "name": "GigabitEthernet0/1", + # "port_priority": 10 + # }, + # { + # "name": "GigabitEthernet0/2", + # "port_priority": 20 + # }, + # { + # "fast_switchover": true, + # "max_bundle": 2, + # "name": "Port-channel10" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['interface GigabitEthernet 0/1', 'lacp port-priority 30']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst new file mode 100644 index 00000000..7da03cd7 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lacp_module.rst @@ -0,0 +1,352 @@ +.. _cisco.ios.ios_lacp_module: + + +****************** +cisco.ios.ios_lacp +****************** + +**LACP resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of Global LACP on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
The provided configurations.
+
+
+ system + +
+ dictionary +
+
+ +
This option sets the default system parameters for LACP.
+
+
+ priority + +
+ integer + / required +
+
+ +
LACP priority for the system.
+
Refer to vendor documentation for valid values.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show lacp sys-id.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • deleted
  • +
  • rendered
  • +
  • parsed
  • +
  • gathered
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # + # Before state: + # ------------- + # + # vios#show lacp sys-id + # 32768, 5e00.0000.8000 + + - name: Merge provided configuration with device configuration + cisco.ios.ios_lacp: + config: + system: + priority: 123 + state: merged + + # After state: + # ------------ + # + # vios#show lacp sys-id + # 123, 5e00.0000.8000 + + # Using replaced + # + # Before state: + # ------------- + # + # vios#show lacp sys-id + # 500, 5e00.0000.8000 + + - name: Replaces Global LACP configuration + cisco.ios.ios_lacp: + config: + system: + priority: 123 + state: replaced + + # After state: + # ------------ + # + # vios#show lacp sys-id + # 123, 5e00.0000.8000 + + # Using Deleted + # + # Before state: + # ------------- + # + # vios#show lacp sys-id + # 500, 5e00.0000.8000 + + - name: Delete Global LACP attribute + cisco.ios.ios_lacp: + state: deleted + + # After state: + # ------------- + # + # vios#show lacp sys-id + # 32768, 5e00.0000.8000 + + # Using Gathered + + # Before state: + # ------------- + # + # vios#show lacp sys-id + # 123, 5e00.0000.8000 + + - name: Gather listed LACP with provided configurations + cisco.ios.ios_lacp: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": { + # "system": { + # "priority": 500 + # } + # } + + # After state: + # ------------ + # + # vios#show lacp sys-id + # 123, 5e00.0000.8000 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_lacp: + config: + system: + priority: 123 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "lacp system-priority 10" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # lacp system-priority 123 + + - name: Parse the commands for provided configuration + cisco.ios.ios_lacp: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": { + # "system": { + # "priority": 123 + # } + # } + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['lacp system-priority 10']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst new file mode 100644 index 00000000..ad8df1cf --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lag_interfaces_module.rst @@ -0,0 +1,658 @@ +.. _cisco.ios.ios_lag_interfaces_module: + + +**************************** +cisco.ios.ios_lag_interfaces +**************************** + +**LAG interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module manages properties of Link Aggregation Group on Cisco IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A list of link aggregation group configurations.
+
+
+ members + +
+ list + / elements=dictionary +
+
+ +
Interface options for the link aggregation group.
+
+
+ link + +
+ integer +
+
+ +
Assign a link identifier used for load-balancing.
+
Refer to vendor documentation for valid values.
+
NOTE, parameter only supported on Cisco IOS XE platform.
+
+
+ member + +
+ string +
+
+ +
Interface member of the link aggregation group.
+
+
+ mode + +
+ string + / required +
+
+
    Choices: +
  • auto
  • +
  • on
  • +
  • desirable
  • +
  • active
  • +
  • passive
  • +
+
+
Etherchannel Mode of the interface for link aggregation.
+
On mode has to be quoted as 'on' or else pyyaml will convert to True before it gets to Ansible.
+
+
+ name + +
+ string + / required +
+
+ +
ID of Ethernet Channel of interfaces.
+
Refer to vendor documentation for valid port values.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • parsed
  • +
  • gathered
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + # interface GigabitEthernet0/4 + # shutdown + + - name: Merge provided configuration with device configuration + cisco.ios.ios_lag_interfaces: + config: + - name: 10 + members: + - member: GigabitEthernet0/1 + mode: auto + - member: GigabitEthernet0/2 + mode: auto + - name: 20 + members: + - member: GigabitEthernet0/3 + mode: on + - name: 30 + members: + - member: GigabitEthernet0/4 + mode: active + state: merged + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + # Using overridden + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + - name: Override device configuration of all interfaces with provided configuration + cisco.ios.ios_lag_interfaces: + config: + - name: 20 + members: + - member: GigabitEthernet0/2 + mode: auto + - member: GigabitEthernet0/3 + mode: auto + state: overridden + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # channel-group 20 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode auto + # interface GigabitEthernet0/4 + # shutdown + + # Using replaced + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + - name: Replaces device configuration of listed interfaces with provided configuration + cisco.ios.ios_lag_interfaces: + config: + - name: 40 + members: + - member: GigabitEthernet0/3 + mode: auto + state: replaced + + # After state: + # ------------ + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface Port-channel40 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 40 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + # Using Deleted + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + - name: "Delete LAG attributes of given interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lag_interfaces: + config: + - name: 10 + - name: 20 + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured LLDP module attributes)" + + # + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/2 + # shutdown + # channel-group 10 mode auto + # interface GigabitEthernet0/3 + # shutdown + # channel-group 20 mode on + # interface GigabitEthernet0/4 + # shutdown + # channel-group 30 mode active + + - name: "Delete all configured LAG attributes for interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lag_interfaces: + state: deleted + + # After state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel10 + # interface Port-channel20 + # interface Port-channel30 + # interface GigabitEthernet0/1 + # shutdown + # interface GigabitEthernet0/2 + # shutdown + # interface GigabitEthernet0/3 + # shutdown + # interface GigabitEthernet0/4 + # shutdown + + # Using Gathered + + # Before state: + # ------------- + # + # vios#show running-config | section ^interface + # interface Port-channel11 + # interface Port-channel22 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 11 mode active + # interface GigabitEthernet0/2 + # shutdown + # channel-group 22 mode active + + - name: Gather listed LAG interfaces with provided configurations + cisco.ios.ios_lag_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "members": [ + # { + # "member": "GigabitEthernet0/1", + # "mode": "active" + # } + # ], + # "name": "Port-channel11" + # }, + # { + # "members": [ + # { + # "member": "GigabitEthernet0/2", + # "mode": "active" + # } + # ], + # "name": "Port-channel22" + # } + # ] + + # After state: + # ------------ + # + # vios#sh running-config | section ^interface + # interface Port-channel11 + # interface Port-channel22 + # interface GigabitEthernet0/1 + # shutdown + # channel-group 11 mode active + # interface GigabitEthernet0/2 + # shutdown + # channel-group 22 mode active + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_lag_interfaces: + config: + - name: Port-channel11 + members: + - member: GigabitEthernet0/1 + mode: active + - name: Port-channel22 + members: + - member: GigabitEthernet0/2 + mode: passive + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "channel-group 11 mode active", + # "interface GigabitEthernet0/2", + # "channel-group 22 mode passive", + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/1 + # channel-group 11 mode active + # interface GigabitEthernet0/2 + # channel-group 22 mode passive + + - name: Parse the commands for provided configuration + cisco.ios.ios_lag_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "members": [ + # { + # "member": "GigabitEthernet0/1", + # "mode": "active" + # } + # ], + # "name": "Port-channel11" + # }, + # { + # "members": [ + # { + # "member": "GigabitEthernet0/2", + # "mode": "passive" + # } + # ], + # "name": "Port-channel22" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['interface GigabitEthernet0/1', 'channel-group 1 mode active']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst new file mode 100644 index 00000000..4f75a66b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_linkagg_module.rst @@ -0,0 +1,467 @@ +.. _cisco.ios.ios_linkagg_module: + + +********************* +cisco.ios.ios_linkagg +********************* + +**Manage link aggregation groups on Cisco IOS network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of link aggregation groups on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of link aggregation definitions.
+
+
+ group + +
+ string + / required +
+
+ +
Channel-group number for the port-channel Link aggregation group. Range 1-255.
+
+
+ members + +
+ list + / elements=string +
+
+ +
List of members of the link aggregation group.
+
+
+ mode + +
+ string +
+
+
    Choices: +
  • active
  • +
  • on
  • +
  • passive
  • +
  • auto
  • +
  • desirable
  • +
+
+
Mode of the link aggregation group.
+
On mode has to be quoted as 'on' or else pyyaml will convert to True before it gets to Ansible.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
+
+
State of the link aggregation group.
+
+
+ group + +
+ integer +
+
+ +
Channel-group number for the port-channel Link aggregation group. Range 1-255.
+
+
+ members + +
+ list + / elements=string +
+
+ +
List of members of the link aggregation group.
+
+
+ mode + +
+ string +
+
+
    Choices: +
  • active
  • +
  • on
  • +
  • passive
  • +
  • auto
  • +
  • desirable
  • +
+
+
Mode of the link aggregation group.
+
On mode has to be quoted as 'on' or else pyyaml will convert to True before it gets to Ansible.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ purge + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Purge links not defined in the aggregate parameter.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
State of the link aggregation group.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.2 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: create link aggregation group + cisco.ios.ios_linkagg: + group: 10 + state: present + + - name: delete link aggregation group + cisco.ios.ios_linkagg: + group: 10 + state: absent + + - name: set link aggregation group to members + cisco.ios.ios_linkagg: + group: 200 + mode: active + members: + - GigabitEthernet0/0 + - GigabitEthernet0/1 + + - name: remove link aggregation group from GigabitEthernet0/0 + cisco.ios.ios_linkagg: + group: 200 + mode: active + members: + - GigabitEthernet0/1 + + - name: Create aggregate of linkagg definitions + cisco.ios.ios_linkagg: + aggregate: + - {group: 3, mode: on, members: [GigabitEthernet0/1]} + - {group: 100, mode: passive, members: [GigabitEthernet0/2]} + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always, except for the platforms that use Netconf transport to manage the device. +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['interface port-channel 30', 'interface GigabitEthernet0/3', 'channel-group 30 mode on', 'no interface port-channel 30']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Trishna Guha (@trishnaguha) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst new file mode 100644 index 00000000..eaa636dc --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_global_module.rst @@ -0,0 +1,620 @@ +.. _cisco.ios.ios_lldp_global_module: + + +************************* +cisco.ios.ios_lldp_global +************************* + +**LLDP resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the Link Layer Discovery Protocol(LLDP) attributes on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
A dictionary of LLDP options
+
+
+ enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable LLDP
+
+
+ holdtime + +
+ integer +
+
+ +
LLDP holdtime (in sec) to be sent in packets.
+
Refer to vendor documentation for valid values.
+
+
+ reinit + +
+ integer +
+
+ +
Specify the delay (in secs) for LLDP to initialize.
+
Refer to vendor documentation for valid values.
+
NOTE, if LLDP reinit is configured with a starting value, idempotency won't be maintained as the Cisco device doesn't record the starting reinit configured value. As such, Ansible cannot verify if the respective starting reinit value is already configured or not from the device side. If you try to apply starting reinit value in every play run, Ansible will show changed as True. For any other reinit value, idempotency will be maintained since any other reinit value is recorded in the Cisco device.
+
+
+ timer + +
+ integer +
+
+ +
Specify the rate at which LLDP packets are sent (in sec).
+
Refer to vendor documentation for valid values.
+
+
+ tlv_select + +
+ dictionary +
+
+ +
Selection of LLDP TLVs i.e. type-length-value to send
+
NOTE, if tlv-select is configured idempotency won't be maintained as Cisco device doesn't record configured tlv-select options. As such, Ansible cannot verify if the respective tlv-select options is already configured or not from the device side. If you try to apply tlv-select option in every play run, Ansible will show changed as True.
+
+
+ four_wire_power_management + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Cisco 4-wire Power via MDI TLV
+
+
+ mac_phy_cfg + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IEEE 802.3 MAC/Phy Configuration/status TLV
+
+
+ management_address + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Management Address TLV
+
+
+ port_description + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Port Description TLV
+
+
+ port_vlan + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Port VLAN ID TLV
+
+
+ power_management + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IEEE 802.3 DTE Power via MDI TLV
+
+
+ system_capabilities + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
System Capabilities TLV
+
+
+ system_description + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
System Description TLV
+
+
+ system_name + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
System Name TLV
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | section ^lldp.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # vios#sh running-config | section ^lldp + # vios1# + + + - name: Merge provided configuration with device configuration + cisco.ios.ios_lldp_global: + config: + holdtime: 10 + enabled: true + reinit: 3 + timer: 10 + state: merged + + # After state: + # ------------ + # vios#sh running-config | section ^lldp + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + + # Using replaced + + # Before state: + # ------------- + # vios#sh running-config | section ^lldp + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + + - name: Replaces LLDP device configuration with provided configuration + cisco.ios.ios_lldp_global: + config: + holdtime: 20 + reinit: 5 + state: replaced + + # After state: + # ------------- + # vios#sh running-config | section ^lldp + # lldp holdtime 20 + # lldp reinit 5 + + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured LLDP module attributes)" + + # Before state: + # ------------- + # vios#sh running-config | section ^lldp + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + + - name: Delete LLDP attributes + cisco.ios.ios_lldp_global: + state: deleted + + # After state: + # ------------- + # vios#sh running-config | section ^lldp + # vios1# + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh running-config | section ^lldp + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + - name: Gather listed interfaces with provided configurations + cisco.ios.ios_lldp_global: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": { + # "enabled": true, + # "holdtime": 10, + # "reinit": 3, + # "timer": 10 + # } + + # After state: + # ------------ + # + # vios#sh running-config | section ^lldp + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + # Using Rendered + - name: Render the commands for provided configuration + cisco.ios.ios_lldp_global: + config: + holdtime: 10 + enabled: true + reinit: 3 + timer: 10 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "lldp holdtime 10", + # "lldp run", + # "lldp timer 10", + # "lldp reinit 3" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # lldp timer 10 + # lldp holdtime 10 + # lldp reinit 3 + # lldp run + + - name: Parse the commands for provided configuration + cisco.ios.ios_lldp_global: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": { + # "enabled": true, + # "holdtime": 10, + # "reinit": 3, + # "timer": 10 + # } + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ dictionary +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ dictionary +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['lldp holdtime 10', 'lldp run', 'lldp timer 10']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_interfaces_module.rst new file mode 100644 index 00000000..3cd60eb8 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_interfaces_module.rst @@ -0,0 +1,814 @@ +.. _cisco.ios.ios_lldp_interfaces_module: + + +***************************** +cisco.ios.ios_lldp_interfaces +***************************** + +**LLDP interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module manages link layer discovery protocol (LLDP) attributes of interfaces on Cisco IOS devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of LLDP options
+
+
+ med_tlv_select + +
+ dictionary +
+
+ +
Selection of LLDP MED TLVs to send
+
NOTE, if med-tlv-select is configured idempotency won't be maintained as Cisco device doesn't record configured med-tlv-select options. As such, Ansible cannot verify if the respective med-tlv-select options is already configured or not from the device side. If you try to apply med-tlv-select option in every play run, Ansible will show changed as True.
+
+
+ inventory_management + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
LLDP MED Inventory Management TLV
+
+
+ name + +
+ string + / required +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+
+
+ receive + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable LLDP reception on interface.
+
+
+ tlv_select + +
+ dictionary +
+
+ +
Selection of LLDP type-length-value i.e. TLVs to send
+
NOTE, if tlv-select is configured idempotency won't be maintained as Cisco device doesn't record configured tlv-select options. As such, Ansible cannot verify if the respective tlv-select options is already configured or not from the device side. If you try to apply tlv-select option in every play run, Ansible will show changed as True.
+
+
+ power_management + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IEEE 802.3 DTE Power via MDI TLV
+
+
+ transmit + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable LLDP transmission on interface.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh lldp interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + + - name: Merge provided configuration with device configuration + cisco.ios.ios_lldp_interfaces: + config: + - name: GigabitEthernet0/1 + receive: true + transmit: true + - name: GigabitEthernet0/2 + receive: true + - name: GigabitEthernet0/3 + transmit: true + state: merged + + # After state: + # ------------ + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: enabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + + # Using overridden + # + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + - name: Override device configuration of all lldp_interfaces with provided configuration + cisco.ios.ios_lldp_interfaces: + config: + - name: GigabitEthernet0/2 + receive: true + transmit: true + state: overridden + + # After state: + # ------------ + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + # Using replaced + # + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + + - name: Replaces device configuration of listed lldp_interfaces with provided configuration + cisco.ios.ios_lldp_interfaces: + config: + - name: GigabitEthernet0/2 + receive: true + transmit: true + - name: GigabitEthernet0/3 + receive: true + state: replaced + + # After state: + # ------------ + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: disabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + + # Using Deleted + # + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + - name: "Delete LLDP attributes of given interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lldp_interfaces: + config: + - name: GigabitEthernet0/1 + state: deleted + + # After state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + + # Using Deleted without any config passed + # "(NOTE: This will delete all of configured LLDP module attributes)" + # + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + - name: "Delete LLDP attributes for all configured interfaces (Note: This won't delete the interface itself)" + cisco.ios.ios_lldp_interfaces: + state: deleted + + # After state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: INIT + # + # GigabitEthernet0/3: + # Tx: disabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + # Using Gathered + + # Before state: + # ------------- + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + - name: Gather listed LLDP interfaces with provided configurations + cisco.ios.ios_lldp_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "name": "GigabitEthernet0/0", + # "receive": true, + # "transmit": true + # }, + # { + # "name": "GigabitEthernet0/1", + # "receive": true, + # "transmit": true + # }, + # { + # "name": "GigabitEthernet0/2", + # "receive": true, + # "transmit": true + # } + # ] + + # After state: + # ------------ + # + # vios#sh lldp interface + # GigabitEthernet0/0: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + # GigabitEthernet0/2: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_lldp_interfaces: + config: + - name: GigabitEthernet0/0 + receive: true + transmit: true + - name: GigabitEthernet0/1 + receive: true + transmit: true + - name: GigabitEthernet0/2 + receive: true + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/0", + # "lldp receive", + # "lldp transmit", + # "interface GigabitEthernet0/1", + # "lldp receive", + # "lldp transmit", + # "interface GigabitEthernet0/2", + # "lldp receive" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # GigabitEthernet0/0: + # Tx: enabled + # Rx: disabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/1: + # Tx: enabled + # Rx: enabled + # Tx state: IDLE + # Rx state: WAIT FOR FRAME + # + # GigabitEthernet0/2: + # Tx: disabled + # Rx: enabled + # Tx state: IDLE + # Rx state: INIT + + - name: Parse the commands for provided configuration + cisco.ios.ios_lldp_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "name": "GigabitEthernet0/0", + # "receive": false, + # "transmit": true + # }, + # { + # "name": "GigabitEthernet0/1", + # "receive": true, + # "transmit": true + # }, + # { + # "name": "GigabitEthernet0/2", + # "receive": true, + # "transmit": false + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['interface GigabitEthernet 0/1', 'lldp transmit', 'lldp receive']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_module.rst new file mode 100644 index 00000000..f296f469 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_lldp_module.rst @@ -0,0 +1,278 @@ +.. _cisco.ios.ios_lldp_module: + + +****************** +cisco.ios.ios_lldp +****************** + +**Manage LLDP configuration on Cisco IOS network devices.** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of LLDP service on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
  • enabled
  • +
  • disabled
  • +
+
+
State of the LLDP configuration. If value is present lldp will be enabled else if it is absent it will be disabled.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.2 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Enable LLDP service + cisco.ios.ios_lldp: + state: present + + - name: Disable LLDP service + cisco.ios.ios_lldp: + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always, except for the platforms that use Netconf transport to manage the device. +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['lldp run']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Ganesh Nalawade (@ganeshrn) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst new file mode 100644 index 00000000..98b1c986 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_logging_module.rst @@ -0,0 +1,541 @@ +.. _cisco.ios.ios_logging_module: + + +********************* +cisco.ios.ios_logging +********************* + +**Manage logging on network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of logging on Cisco Ios devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of logging definitions.
+
+
+ dest + +
+ string +
+
+
    Choices: +
  • on
  • +
  • host
  • +
  • console
  • +
  • monitor
  • +
  • buffered
  • +
  • trap
  • +
+
+
Destination of the logs.
+
On dest has to be quoted as 'on' or else pyyaml will convert to True before it gets to Ansible.
+
+
+ facility + +
+ string +
+
+ +
Set logging facility.
+
+
+ level + +
+ string +
+
+
    Choices: +
  • emergencies
  • +
  • alerts
  • +
  • critical
  • +
  • errors
  • +
  • warnings
  • +
  • notifications
  • +
  • informational
  • +
  • debugging
  • +
+
+
Set logging severity levels.
+
+
+ name + +
+ string +
+
+ +
The hostname or IP address of the destination.
+
Required when dest=host.
+
+
+ size + +
+ integer +
+
+ +
Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
+
+
State of the logging configuration.
+
+
+ dest + +
+ string +
+
+
    Choices: +
  • on
  • +
  • host
  • +
  • console
  • +
  • monitor
  • +
  • buffered
  • +
  • trap
  • +
+
+
Destination of the logs.
+
On dest has to be quoted as 'on' or else pyyaml will convert to True before it gets to Ansible.
+
+
+ facility + +
+ string +
+
+ +
Set logging facility.
+
+
+ level + +
+ string +
+
+
    Choices: +
  • emergencies
  • +
  • alerts
  • +
  • critical
  • +
  • errors
  • +
  • warnings
  • +
  • notifications
  • +
  • informational
  • +
  • debugging ←
  • +
+
+
Set logging severity levels.
+
+
+ name + +
+ string +
+
+ +
The hostname or IP address of the destination.
+
Required when dest=host.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ size + +
+ integer +
+
+ +
Size of buffer. The acceptable value is in range from 4096 to 4294967295 bytes.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
State of the logging configuration.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure host logging + cisco.ios.ios_logging: + dest: host + name: 172.16.0.1 + state: present + + - name: remove host logging configuration + cisco.ios.ios_logging: + dest: host + name: 172.16.0.1 + state: absent + + - name: configure console logging level and facility + cisco.ios.ios_logging: + dest: console + facility: local7 + level: debugging + state: present + + - name: enable logging to all + cisco.ios.ios_logging: + dest: on + + - name: configure buffer size + cisco.ios.ios_logging: + dest: buffered + size: 5000 + + - name: Configure logging using aggregate + cisco.ios.ios_logging: + aggregate: + - {dest: console, level: notifications} + - {dest: buffered, size: 9000} + + - name: remove logging using aggregate + cisco.ios.ios_logging: + aggregate: + - {dest: console, level: notifications} + - {dest: buffered, size: 9000} + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['logging facility local7', 'logging host 172.16.0.1']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Trishna Guha (@trishnaguha) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_module.rst new file mode 100644 index 00000000..d7f94622 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ntp_module.rst @@ -0,0 +1,411 @@ +.. _cisco.ios.ios_ntp_module: + + +***************** +cisco.ios.ios_ntp +***************** + +**Manages core NTP configuration.** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- Manages core NTP configuration. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ acl + +
+ string +
+
+ +
ACL for peer/server access restricition.
+
+
+ auth + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Enable NTP authentication. Data type boolean.
+
+
+ auth_key + +
+ string +
+
+ +
md5 NTP authentication key of tye 7.
+
+
+ key_id + +
+ string +
+
+ +
auth_key id. Data type string
+
+
+ logging + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Enable NTP logs. Data type boolean.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ server + +
+ string +
+
+ +
Network address of NTP server.
+
+
+ source_int + +
+ string +
+
+ +
Source interface for NTP packets.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
Manage the state of the resource.
+
+
+ + +Notes +----- + +.. note:: + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + # Set new NTP server and source interface + - cisco.ios.ios_ntp: + server: 10.0.255.10 + source_int: Loopback0 + logging: false + state: present + + # Remove NTP ACL and logging + - cisco.ios.ios_ntp: + acl: NTP_ACL + logging: true + state: absent + + # Set NTP authentication + - cisco.ios.ios_ntp: + key_id: 10 + auth_key: 15435A030726242723273C21181319000A + auth: true + state: present + + # Set new NTP configuration + - cisco.ios.ios_ntp: + server: 10.0.255.10 + source_int: Loopback0 + acl: NTP_ACL + logging: true + key_id: 10 + auth_key: 15435A030726242723273C21181319000A + auth: true + state: present + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
command sent to the device
+
+
Sample:
+
['no ntp server 10.0.255.10', 'no ntp source Loopback0']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Federico Olivieri (@Federico87) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst new file mode 100644 index 00000000..6b665ed5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospf_interfaces_module.rst @@ -0,0 +1,2223 @@ +.. _cisco.ios.ios_ospf_interfaces_module: + + +***************************** +cisco.ios.ios_ospf_interfaces +***************************** + +**OSPF_Interfaces resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the Open Shortest Path First (OSPF) version 2 on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of OSPF interfaces options.
+
+
+ address_family + +
+ list + / elements=dictionary +
+
+ +
OSPF interfaces settings on the interfaces in address-family context.
+
+
+ adjacency + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Adjacency staggering
+
+
+ afi + +
+ string + / required +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Address Family Identifier (AFI) for OSPF interfaces settings on the interfaces.
+
+
+ authentication + +
+ dictionary +
+
+ +
Enable authentication
+
+
+ key_chain + +
+ string +
+
+ +
Use a key-chain for cryptographic authentication keys
+
+
+ message_digest + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use message-digest authentication
+
+
+ null + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use no authentication
+
+
+ bfd + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
BFD configuration commands
+
Enable/Disable BFD on this interface
+
+
+ cost + +
+ dictionary +
+
+ +
Interface cost
+
+
+ dynamic_cost + +
+ dictionary +
+
+ +
Specify dynamic cost options
+
Valid only with IPv6 OSPF config
+
+
+ default + +
+ integer +
+
+ +
Specify default link metric value
+
+
+ hysteresis + +
+ dictionary +
+
+ +
Specify hysteresis value for LSA dampening
+
+
+ percent + +
+ integer +
+
+ +
Specify hysteresis percent changed. Please refer vendor documentation of Valid values.
+
+
+ threshold + +
+ integer +
+
+ +
Specify hysteresis threshold value. Please refer vendor documentation of Valid values.
+
+
+ weight + +
+ dictionary +
+
+ +
Specify weight to be placed on individual metrics
+
+
+ l2_factor + +
+ integer +
+
+ +
Specify weight to be given to L2-factor metric
+
Percentage weight of L2-factor metric. Please refer vendor documentation of Valid values.
+
+
+ latency + +
+ integer +
+
+ +
Specify weight to be given to latency metric.
+
Percentage weight of latency metric. Please refer vendor documentation of Valid values.
+
+
+ oc + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify weight to be given to cdr/mdr for oc
+
Give 100 percent weightage for current data rate(0 for maxdatarate)
+
+
+ resources + +
+ integer +
+
+ +
Specify weight to be given to resources metric
+
Percentage weight of resources metric. Please refer vendor documentation of Valid values.
+
+
+ throughput + +
+ integer +
+
+ +
Specify weight to be given to throughput metric
+
Percentage weight of throughput metric. Please refer vendor documentation of Valid values.
+
+
+ interface_cost + +
+ integer +
+
+ +
Interface cost or Route cost of this interface
+
+
+ database_filter + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter OSPF LSA during synchronization and flooding
+
+
+ dead_interval + +
+ dictionary +
+
+ +
Interval after which a neighbor is declared dead
+
+
+ minimal + +
+ integer +
+
+ +
Set to 1 second and set multiplier for Hellos
+
Number of Hellos sent within 1 second. Please refer vendor documentation of Valid values.
+
Valid only with IP OSPF config
+
+
+ time + +
+ integer +
+
+ +
time in seconds
+
+
+ demand_circuit + +
+ dictionary +
+
+ +
OSPF Demand Circuit, enable or disable the demand circuit'
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable demand circuit on this interface
+
Valid only with IPv6 OSPF config
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable Demand Circuit
+
+
+ ignore + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Ignore demand circuit auto-negotiation requests
+
+
+ flood_reduction + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
OSPF Flood Reduction
+
+
+ hello_interval + +
+ integer +
+
+ +
Time between HELLO packets
+
Please refer vendor documentation of Valid values.
+
+
+ lls + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Link-local Signaling (LLS) support
+
Valid only with IP OSPF config
+
+
+ manet + +
+ dictionary +
+
+ +
Mobile Adhoc Networking options
+
MANET Peering options
+
Valid only with IPv6 OSPF config
+
+
+ cost + +
+ dictionary +
+
+ +
Redundant path cost improvement required to peer
+
+
+ percent + +
+ integer +
+
+ +
Relative incremental path cost. Please refer vendor documentation of Valid values.
+
+
+ threshold + +
+ integer +
+
+ +
Absolute incremental path cost. Please refer vendor documentation of Valid values.
+
+
+ link_metrics + +
+ dictionary +
+
+ +
Redundant path cost improvement required to peer
+
+
+ cost_threshold + +
+ integer +
+
+ +
Minimum link cost threshold. Please refer vendor documentation of Valid values.
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable link-metrics
+
+
+ mtu_ignore + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Ignores the MTU in DBD packets
+
+
+ multi_area + +
+ dictionary +
+
+ +
Set the OSPF multi-area ID
+
Valid only with IP OSPF config
+
+
+ cost + +
+ integer +
+
+ +
Interface cost
+
+
+ id + +
+ integer +
+
+ +
OSPF multi-area ID as a decimal value. Please refer vendor documentation of Valid values.
+
OSPF multi-area ID in IP address format(e.g. A.B.C.D)
+
+
+ neighbor + +
+ dictionary +
+
+ +
OSPF neighbor link-local IPv6 address (X:X:X:X::X)
+
Valid only with IPv6 OSPF config
+
+
+ address + +
+ string +
+
+ +
Neighbor link-local IPv6 address
+
+
+ cost + +
+ integer +
+
+ +
OSPF cost for point-to-multipoint neighbor
+
+
+ database_filter + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter OSPF LSA during synchronization and flooding for point-to-multipoint neighbor
+
+
+ poll_interval + +
+ integer +
+
+ +
OSPF dead-router polling interval
+
+
+ priority + +
+ integer +
+
+ +
OSPF priority of non-broadcast neighbor
+
+
+ network + +
+ dictionary +
+
+ +
Network type
+
+
+ broadcast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify OSPF broadcast multi-access network
+
+
+ manet + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify MANET OSPF interface type
+
Valid only with IPv6 OSPF config
+
+
+ non_broadcast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify OSPF NBMA network
+
+
+ point_to_multipoint + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify OSPF point-to-multipoint network
+
+
+ point_to_point + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify OSPF point-to-point network
+
+
+ prefix_suppression + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable/Disable OSPF prefix suppression
+
+
+ priority + +
+ integer +
+
+ +
Router priority. Please refer vendor documentation of Valid values.
+
+
+ process + +
+ dictionary +
+
+ +
OSPF interfaces process config
+
+
+ area_id + +
+ string +
+
+ +
OSPF interfaces area ID as a decimal value. Please refer vendor documentation of Valid values.
+
OSPF interfaces area ID in IP address format(e.g. A.B.C.D)
+
+
+ id + +
+ integer +
+
+ +
Address Family Identifier (AFI) for OSPF interfaces settings on the interfaces. Please refer vendor documentation of Valid values.
+
+
+ instance_id + +
+ integer +
+
+ +
Set the OSPF instance based on ID
+
Valid only with IPv6 OSPF config
+
+
+ secondaries + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Include or exclude secondary IP addresses.
+
Valid only with IPv4 config
+
+
+ resync_timeout + +
+ integer +
+
+ +
Interval after which adjacency is reset if oob-resync is not started. Please refer vendor documentation of Valid values.
+
+
+ retransmit_interval + +
+ integer +
+
+ +
Time between retransmitting lost link state advertisements. Please refer vendor documentation of Valid values.
+
+
+ shutdown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set OSPF protocol's state to disable under current interface
+
+
+ transmit_delay + +
+ integer +
+
+ +
Link state transmit delay. Please refer vendor documentation of Valid values.
+
+
+ ttl_security + +
+ dictionary +
+
+ +
TTL security check
+
Valid only with IPV4 OSPF config
+
+
+ hops + +
+ integer +
+
+ +
Maximum number of IP hops allowed
+
Please refer vendor documentation of Valid values.
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable TTL Security on all interfaces
+
+
+ name + +
+ string + / required +
+
+ +
Full name of the interface excluding any logical unit number, i.e. GigabitEthernet0/1.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh running-config | section ^interface.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • rendered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using deleted + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ipv6 ospf 55 area 105 + # ipv6 ospf priority 20 + # ipv6 ospf transmit-delay 30 + # ipv6 ospf adjacency stagger disable + # interface GigabitEthernet0/2 + # ip ospf priority 40 + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf 10 area 20 + # ip ospf cost 30 + + - name: Delete provided OSPF Interface config + cisco.ios.ios_ospf_interfaces: + config: + - name: GigabitEthernet0/1 + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "interface GigabitEthernet0/1", + # "no ipv6 ospf 55 area 105", + # "no ipv6 ospf adjacency stagger disable", + # "no ipv6 ospf priority 20", + # "no ipv6 ospf transmit-delay 30" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # interface GigabitEthernet0/2 + # ip ospf priority 40 + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf 10 area 20 + # ip ospf cost 30 + + # Using deleted without any config passed (NOTE: This will delete all OSPF Interfaces configuration from device) + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ipv6 ospf 55 area 105 + # ipv6 ospf priority 20 + # ipv6 ospf transmit-delay 30 + # ipv6 ospf adjacency stagger disable + # interface GigabitEthernet0/2 + # ip ospf priority 40 + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf 10 area 20 + # ip ospf cost 30 + + - name: Delete all OSPF config from interfaces + cisco.ios.ios_ospf_interfaces: + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "interface GigabitEthernet0/2", + # "no ip ospf 10 area 20", + # "no ip ospf adjacency stagger disable", + # "no ip ospf cost 30", + # "no ip ospf priority 40", + # "no ip ospf ttl-security hops 50", + # "interface GigabitEthernet0/1", + # "no ipv6 ospf 55 area 105", + # "no ipv6 ospf adjacency stagger disable", + # "no ipv6 ospf priority 20", + # "no ipv6 ospf transmit-delay 30" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # interface GigabitEthernet0/2 + + # Using merged + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # router-ios# + + - name: Merge provided OSPF Interfaces configuration + cisco.ios.ios_ospf_interfaces: + config: + - name: GigabitEthernet0/1 + address_family: + - afi: ipv4 + process: + id: 10 + area_id: 30 + adjacency: true + bfd: true + cost: + interface_cost: 5 + dead_interval: + time: 5 + demand_circuit: + ignore: true + network: + broadcast: true + priority: 25 + resync_timeout: 10 + shutdown: true + ttl_security: + hops: 50 + - afi: ipv6 + process: + id: 35 + area_id: 45 + adjacency: true + database_filter: true + manet: + link_metrics: + cost_threshold: 10 + priority: 55 + transmit_delay: 45 + state: merged + + # Commands Fired: + # --------------- + # + # "commands": [ + # "interface GigabitEthernet0/1", + # "ip ospf 10 area 30", + # "ip ospf adjacency stagger disable", + # "ip ospf bfd", + # "ip ospf cost 5", + # "ip ospf dead-interval 5", + # "ip ospf demand-circuit ignore", + # "ip ospf network broadcast", + # "ip ospf priority 25", + # "ip ospf resync-timeout 10", + # "ip ospf shutdown", + # "ip ospf ttl-security hops 50", + # "ipv6 ospf 35 area 45", + # "ipv6 ospf adjacency stagger disable", + # "ipv6 ospf database-filter all out", + # "ipv6 ospf manet peering link-metrics 10", + # "ipv6 ospf priority 55", + # "ipv6 ospf transmit-delay 45" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + + # Using overridden + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + + - name: Override provided OSPF Interfaces configuration + cisco.ios.ios_ospf_interfaces: + config: + - name: GigabitEthernet0/1 + address_family: + - afi: ipv6 + process: + id: 55 + area_id: 105 + adjacency: true + priority: 20 + transmit_delay: 30 + - name: GigabitEthernet0/2 + address_family: + - afi: ipv4 + process: + id: 10 + area_id: 20 + adjacency: true + cost: + interface_cost: 30 + priority: 40 + ttl_security: + hops: 50 + state: overridden + + # Commands Fired: + # --------------- + # + # "commands": [ + # "interface GigabitEthernet0/2", + # "ip ospf 10 area 20", + # "ip ospf adjacency stagger disable", + # "ip ospf cost 30", + # "ip ospf priority 40", + # "ip ospf ttl-security hops 50", + # "interface GigabitEthernet0/1", + # "ipv6 ospf 55 area 105", + # "no ipv6 ospf database-filter all out", + # "no ipv6 ospf manet peering link-metrics 10", + # "ipv6 ospf priority 20", + # "ipv6 ospf transmit-delay 30", + # "no ip ospf 10 area 30", + # "no ip ospf adjacency stagger disable", + # "no ip ospf bfd", + # "no ip ospf cost 5", + # "no ip ospf dead-interval 5", + # "no ip ospf demand-circuit ignore", + # "no ip ospf network broadcast", + # "no ip ospf priority 25", + # "no ip ospf resync-timeout 10", + # "no ip ospf shutdown", + # "no ip ospf ttl-security hops 50" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ipv6 ospf 55 area 105 + # ipv6 ospf priority 20 + # ipv6 ospf transmit-delay 30 + # ipv6 ospf adjacency stagger disable + # interface GigabitEthernet0/2 + # ip ospf priority 40 + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf 10 area 20 + # ip ospf cost 30 + + # Using replaced + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + + - name: Replaced provided OSPF Interfaces configuration + cisco.ios.ios_ospf_interfaces: + config: + - name: GigabitEthernet0/2 + address_family: + - afi: ipv6 + process: + id: 55 + area_id: 105 + adjacency: true + priority: 20 + transmit_delay: 30 + state: replaced + + # Commands Fired: + # --------------- + # "commands": [ + # "interface GigabitEthernet0/2", + # "ipv6 ospf 55 area 105", + # "ipv6 ospf adjacency stagger disable", + # "ipv6 ospf priority 20", + # "ipv6 ospf transmit-delay 30" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + # ipv6 ospf 55 area 105 + # ipv6 ospf priority 20 + # ipv6 ospf transmit-delay 30 + # ipv6 ospf adjacency stagger disable + + # Using Gathered + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + + - name: Gather OSPF Interfaces provided configurations + cisco.ios.ios_ospf_interfaces: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "name": "GigabitEthernet0/2" + # }, + # { + # "address_family": [ + # { + # "adjacency": true, + # "afi": "ipv4", + # "bfd": true, + # "cost": { + # "interface_cost": 5 + # }, + # "dead_interval": { + # "time": 5 + # }, + # "demand_circuit": { + # "ignore": true + # }, + # "network": { + # "broadcast": true + # }, + # "priority": 25, + # "process": { + # "area_id": "30", + # "id": 10 + # }, + # "resync_timeout": 10, + # "shutdown": true, + # "ttl_security": { + # "hops": 50 + # } + # }, + # { + # "adjacency": true, + # "afi": "ipv6", + # "database_filter": true, + # "manet": { + # "link_metrics": { + # "cost_threshold": 10 + # } + # }, + # "priority": 55, + # "process": { + # "area_id": "45", + # "id": 35 + # }, + # "transmit_delay": 45 + # } + # ], + # "name": "GigabitEthernet0/1" + # }, + # { + # "name": "GigabitEthernet0/0" + # } + # ] + + # After state: + # ------------ + # + # router-ios#sh running-config | section ^interface + # interface GigabitEthernet0/0 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/2 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_ospf_interfaces: + config: + - name: GigabitEthernet0/1 + address_family: + - afi: ipv4 + process: + id: 10 + area_id: 30 + adjacency: true + bfd: true + cost: + interface_cost: 5 + dead_interval: + time: 5 + demand_circuit: + ignore: true + network: + broadcast: true + priority: 25 + resync_timeout: 10 + shutdown: true + ttl_security: + hops: 50 + - afi: ipv6 + process: + id: 35 + area_id: 45 + adjacency: true + database_filter: true + manet: + link_metrics: + cost_threshold: 10 + priority: 55 + transmit_delay: 45 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "interface GigabitEthernet0/1", + # "ip ospf 10 area 30", + # "ip ospf adjacency stagger disable", + # "ip ospf bfd", + # "ip ospf cost 5", + # "ip ospf dead-interval 5", + # "ip ospf demand-circuit ignore", + # "ip ospf network broadcast", + # "ip ospf priority 25", + # "ip ospf resync-timeout 10", + # "ip ospf shutdown", + # "ip ospf ttl-security hops 50", + # "ipv6 ospf 35 area 45", + # "ipv6 ospf adjacency stagger disable", + # "ipv6 ospf database-filter all out", + # "ipv6 ospf manet peering link-metrics 10", + # "ipv6 ospf priority 55", + # "ipv6 ospf transmit-delay 45" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # interface GigabitEthernet0/2 + # interface GigabitEthernet0/1 + # ip ospf network broadcast + # ip ospf resync-timeout 10 + # ip ospf dead-interval 5 + # ip ospf priority 25 + # ip ospf demand-circuit ignore + # ip ospf bfd + # ip ospf adjacency stagger disable + # ip ospf ttl-security hops 50 + # ip ospf shutdown + # ip ospf 10 area 30 + # ip ospf cost 5 + # ipv6 ospf 35 area 45 + # ipv6 ospf priority 55 + # ipv6 ospf transmit-delay 45 + # ipv6 ospf database-filter all out + # ipv6 ospf adjacency stagger disable + # ipv6 ospf manet peering link-metrics 10 + # interface GigabitEthernet0/0 + + - name: Parse the provided configuration with the exisiting running configuration + cisco.ios.ios_ospf_interfaces: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # }, + # { + # "name": "GigabitEthernet0/2" + # }, + # { + # "address_family": [ + # { + # "adjacency": true, + # "afi": "ipv4", + # "bfd": true, + # "cost": { + # "interface_cost": 5 + # }, + # "dead_interval": { + # "time": 5 + # }, + # "demand_circuit": { + # "ignore": true + # }, + # "network": { + # "broadcast": true + # }, + # "priority": 25, + # "process": { + # "area_id": "30", + # "id": 10 + # }, + # "resync_timeout": 10, + # "shutdown": true, + # "ttl_security": { + # "hops": 50 + # } + # }, + # { + # "adjacency": true, + # "afi": "ipv6", + # "database_filter": true, + # "manet": { + # "link_metrics": { + # "cost_threshold": 10 + # } + # }, + # "priority": 55, + # "process": { + # "area_id": "45", + # "id": 35 + # }, + # "transmit_delay": 45 + # } + # ], + # "name": "GigabitEthernet0/1" + # }, + # { + # "name": "GigabitEthernet0/0" + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ dictionary +
+
when changed +
The resulting configuration model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ dictionary +
+
always +
The configuration prior to the model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['interface GigabitEthernet0/1', 'ip ospf 10 area 30', 'ip ospf cost 5', 'ip ospf priority 25']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst new file mode 100644 index 00000000..70a5383b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv2_module.rst @@ -0,0 +1,5254 @@ +.. _cisco.ios.ios_ospfv2_module: + + +******************** +cisco.ios.ios_ospfv2 +******************** + +**OSPFv2 resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the Open Shortest Path First (OSPF) version 2 on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
A dictionary of OSPF options.
+
+
+ processes + +
+ list + / elements=dictionary +
+
+ +
List of OSPF instance configurations.
+
+
+ address_family + +
+ dictionary +
+
+ +
Router Address Family configuration mode
+
+
+ default + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set a command to its defaults
+
+
+ snmp_context + +
+ string +
+
+ +
Modify snmp parameters
+
Configure SNMP context name
+
+
+ topology + +
+ dictionary +
+
+ +
Associate the routing protocol to a topology instance
+
+
+ base + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Entering router topology sub mode
+
+
+ name + +
+ string +
+
+ +
Routing topology instance name
+
+
+ tid + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configuring the routing protocol topology tid
+
Note, please refer vendor documentation for valid values
+
+
+ adjacency + +
+ dictionary +
+
+ +
To configure control adjacency formation
+
+
+ max_adjacency + +
+ integer +
+
+ +
Maximum number of adjacencies allowed to be forming
+
Please refer vendor documentation for valid values
+
+
+ min_adjacency + +
+ integer +
+
+ +
Initial number of adjacencies allowed to be forming in an area
+
Please refer vendor documentation for valid values
+
+
+ none + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No initial
+
+
+ areas + +
+ list + / elements=dictionary +
+
+ +
OSPF area parameters
+
+
+ area_id + +
+ string +
+
+ +
OSPF area ID as a decimal value. Please refer vendor documentation of Valid values.
+
OSPF area ID in IP address format(e.g. A.B.C.D)
+
+
+ authentication + +
+ dictionary +
+
+ +
Area authentication
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable area authentication
+
+
+ message_digest + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use IPsec authentication
+
+
+ capability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable area specific capability
+
Enable exclusion of links from base topology
+
+
+ default_cost + +
+ integer +
+
+ +
Set the summary default-cost of a NSSA/stub area
+
Stub's advertised external route metric
+
Note, please refer vendor documentation for respective valid values
+
+
+ filter_list + +
+ list + / elements=dictionary +
+
+ +
Filter networks between OSPF areas
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
The direction to apply on the filter networks sent to and from this area.
+
+
+ name + +
+ string +
+
+ +
Name of an IP prefix-list
+
+
+ nssa + +
+ dictionary +
+
+ +
Specify a NSSA area
+
+
+ default_information_originate + +
+ dictionary +
+
+ +
Originate Type 7 default into NSSA area
+
+
+ metric + +
+ integer +
+
+ +
OSPF default metric
+
+
+ metric_type + +
+ integer +
+
+
    Choices: +
  • 1
  • +
  • 2
  • +
+
+
OSPF metric type for default routes
+
OSPF Link State type
+
+
+ nssa_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Limit default advertisement to this NSSA area
+
+
+ no_ext_capability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send domain specific capabilities into NSSA
+
+
+ no_redistribution + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No redistribution into this NSSA area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into NSSA
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a NSSA area
+
+
+ translate + +
+ string +
+
+
    Choices: +
  • always
  • +
  • suppress-fa
  • +
+
+
Translate LSA
+
Always translate LSAs on this ABR
+
Suppress forwarding address in translated LSAs
+
+
+ ranges + +
+ list + / elements=dictionary +
+
+ +
Summarize routes matching address/mask (border routers only)
+
+
+ address + +
+ string +
+
+ +
IP address to match
+
+
+ advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise this range (default)
+
Since, advertise when enabled is not shown in running-config idempotency won't be maintained for the play in the second or next run of the play.
+
+
+ cost + +
+ integer +
+
+ +
User specified metric for this range
+
+
+ netmask + +
+ string +
+
+ +
IP mask for address
+
+
+ not_advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
DoNotAdvertise this range
+
+
+ sham_link + +
+ dictionary +
+
+ +
Define a sham link and its parameters
+
+
+ cost + +
+ integer +
+
+ +
Associate a cost with the sham-link
+
Cost of the sham-link
+
Note, please refer vendor documentation for respective valid values
+
+
+ destination + +
+ string +
+
+ +
IP addr associated with sham-link destination (A.B.C.D)
+
+
+ source + +
+ string +
+
+ +
IP addr associated with sham-link source (A.B.C.D)
+
+
+ ttl_security + +
+ integer +
+
+ +
TTL security check
+
Maximum number of IP hops allowed
+
+
+ stub + +
+ dictionary +
+
+ +
Specify a stub area
+
Backbone can not be configured as stub area
+
+
+ no_ext_capability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send domain specific capabilities into stub area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into stub area
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a stub area
+
+
+ auto_cost + +
+ dictionary +
+
+ +
Calculate OSPF interface cost according to bandwidth
+
+
+ reference_bandwidth + +
+ integer +
+
+ +
Use reference bandwidth method to assign OSPF cost
+
Note, refer vendor documentation for respective valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable OSPF auto-cost
+
+
+ bfd + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
BFD configuration commands
+
Enable BFD on all interfaces
+
+
+ capability + +
+ dictionary +
+
+ +
Enable specific OSPF feature
+
+
+ lls + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Link-local Signaling (LLS) support
+
+
+ opaque + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Opaque LSA
+
+
+ transit + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Transit Area
+
+
+ vrf_lite + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not perform PE specific checks
+
+
+ compatible + +
+ dictionary +
+
+ +
OSPF router compatibility list
+
+
+ rfc1583 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1583
+
+
+ rfc1587 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1587
+
+
+ rfc5243 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
supports DBD exchange optimization
+
+
+ default_information + +
+ dictionary +
+
+ +
Control distribution of default information
+
+
+ always + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Always advertise default route
+
+
+ metric + +
+ integer +
+
+ +
OSPF default metric
+
Note, refer vendor documentation for respective valid values
+
+
+ metric_type + +
+ integer +
+
+ +
OSPF metric type for default routes
+
Note, please refer vendor documentation for respective valid range
+
+
+ originate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Distribute a default route
+
+
+ route_map + +
+ string +
+
+ +
Route-map reference name
+
+
+ default_metric + +
+ integer +
+
+ +
Set metric of redistributed routes
+
+
+ discard_route + +
+ dictionary +
+
+ +
Enable or disable discard-route installation
+
+
+ external + +
+ integer +
+
+ +
Discard route for redistributed summarised routes
+
Administrative distance for redistributed summarised routes
+
Note, please refer vendor documentation for respective valid range
+
+
+ internal + +
+ integer +
+
+ +
Discard route for summarised internal routes
+
Administrative distance for summarised internal routes
+
Note, please refer vendor documentation for respective valid range
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable discard-route installation
+
+
+ distance + +
+ dictionary +
+
+ +
Define an administrative distance
+
+
+ admin_distance + +
+ dictionary +
+
+ +
OSPF Administrative distance
+
+
+ acl + +
+ string +
+
+ +
Access-list name/number
+
+
+ address + +
+ string +
+
+ +
IP Source address
+
+
+ distance + +
+ integer +
+
+ +
Administrative distance
+
+
+ wildcard_bits + +
+ string +
+
+ +
Wildcard bits
+
+
+ ospf + +
+ dictionary +
+
+ +
OSPF distance
+
+
+ external + +
+ integer +
+
+ +
External type 5 and type 7 routes
+
+
+ inter_area + +
+ integer +
+
+ +
Inter-area routes
+
+
+ intra_area + +
+ integer +
+
+ +
Intra-area routes
+
+
+ distribute_list + +
+ dictionary +
+
+ +
Filter networks in routing updates
+
+
+ acls + +
+ list + / elements=dictionary +
+
+ +
IP access list
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
Filter incoming and outgoing routing updates.
+
+
+ interface + +
+ string +
+
+ +
Interface configuration (GigabitEthernet A/B)
+
Valid with incoming traffic
+
+
+ name + +
+ string + / required +
+
+ +
IP access list name/number
+
+
+ protocol + +
+ string +
+
+ +
Protocol config (bgp 1).
+
Valid with outgoing traffic
+
+
+ prefix + +
+ dictionary +
+
+ +
Filter prefixes in routing updates
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
Filter incoming and outgoing routing updates.
+
+
+ gateway_name + +
+ string +
+
+ +
Gateway name for filtering incoming updates based on gateway
+
+
+ interface + +
+ string +
+
+ +
Interface configuration (GigabitEthernet A/B)
+
Valid with incoming traffic
+
+
+ name + +
+ string + / required +
+
+ +
Name of an IP prefix-list
+
+
+ protocol + +
+ string +
+
+ +
Protocol config (bgp 1).
+
Valid with outgoing traffic
+
+
+ route_map + +
+ dictionary +
+
+ +
Filter prefixes in routing updates
+
+
+ name + +
+ string + / required +
+
+ +
Route-map name
+
+
+ domain_id + +
+ dictionary +
+
+ +
OSPF domain-id
+
+
+ ip_address + +
+ dictionary +
+
+ +
IP address
+
+
+ address + +
+ string +
+
+ +
OSPF domain ID in IP address format
+
+
+ secondary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Secondary Domain-ID
+
+
+ null + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Null Domain-ID
+
+
+ domain_tag + +
+ integer +
+
+ +
OSPF domain-tag which is OSPF domain tag - 32-bit value
+
Note, please refer vendor documentation for respective valid range
+
+
+ event_log + +
+ dictionary +
+
+ +
Event Logging
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable event Logging
+
+
+ one_shot + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable Logging When Log Buffer Becomes Full
+
+
+ pause + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Pause Event Logging
+
+
+ size + +
+ integer +
+
+ +
Maximum Number of Events Stored in the Event Log
+
Note, refer vendor documentation for respective valid values
+
+
+ help + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Description of the interactive help system
+
+
+ ignore + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not complain about specific event
+
Do not complain upon receiving LSA of the specified type, MOSPF Type 6 LSA
+
+
+ interface_id + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Source of the interface ID
+
SNMP MIB ifIndex
+
+
+ ispf + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable incremental SPF computation
+
+
+ limit + +
+ dictionary +
+
+ +
Limit a specific OSPF feature and LS update, DBD, and LS request retransmissions
+
+
+ dc + +
+ dictionary +
+
+ +
Demand circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ non_dc + +
+ dictionary +
+
+ +
Non-demand-circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ local_rib_criteria + +
+ dictionary +
+
+ +
Enable or disable usage of local RIB as route criteria
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable usage of local RIB as route criteria
+
+
+ forwarding_address + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used to validate external/NSSA forwarding addresses
+
+
+ inter_area_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for inter-area summaries
+
+
+ nssa_translation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for NSSA translation
+
+
+ log_adjacency_changes + +
+ dictionary +
+
+ +
Log changes in adjacency state
+
+
+ detail + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log all state changes
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log changes in adjacency state
+
+
+ max_lsa + +
+ dictionary +
+
+ +
Maximum number of non self-generated LSAs to accept
+
+
+ ignore_count + +
+ integer +
+
+ +
Maximum number of times adjacencies can be suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ ignore_time + +
+ integer +
+
+ +
Number of minutes during which all adjacencies are suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ number + +
+ integer +
+
+ +
Maximum number of non self-generated LSAs to accept
+
Note, refer vendor documentation for respective valid values
+
+
+ reset_time + +
+ integer +
+
+ +
Number of minutes after which ignore-count is reset to zero
+
Note, refer vendor documentation for respective valid values
+
+
+ threshold_value + +
+ integer +
+
+ +
Threshold value (%) at which to generate a warning msg
+
Note, refer vendor documentation for respective valid values
+
+
+ warning_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Only give a warning message when limit is exceeded
+
+
+ max_metric + +
+ dictionary +
+
+ +
Set maximum metric
+
+
+ external_lsa + +
+ integer +
+
+ +
Override external-lsa metric with max-metric value
+
Overriding metric in external-LSAs
+
Note, refer vendor documentation for respective valid values
+
+
+ include_stub + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set maximum metric for stub links in router-LSAs
+
+
+ on_startup + +
+ dictionary +
+
+ +
Set maximum metric temporarily after reboot
+
+
+ time + +
+ integer +
+
+ +
Time, in seconds, router-LSAs are originated with max-metric
+
Note, please refer vendor documentation for respective valid range
+
+
+ wait_for_bgp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Let BGP decide when to originate router-LSA with normal metric
+
+
+ router_lsa + +
+ boolean + / required +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Maximum metric in self-originated router-LSAs
+
+
+ summary_lsa + +
+ integer +
+
+ +
Override summary-lsa metric with max-metric value
+
Note, please refer vendor documentation for respective valid range
+
+
+ maximum_paths + +
+ integer +
+
+ +
Forward packets over multiple paths
+
Number of paths
+
+
+ mpls + +
+ dictionary +
+
+ +
Configure MPLS routing protocol parameters
+
+
+ ldp + +
+ dictionary +
+
+ +
routing protocol commands for MPLS LDP
+
+
+ autoconfig + +
+ dictionary +
+
+ +
routing protocol commands for MPLS LDP
+
+
+ area + +
+ string +
+
+ +
Configure an OSPF area to run MPLS LDP
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configure LDP automatic configuration and set the config
+
+
+ sync + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configure LDP-IGP Synchronization
+
+
+ traffic_eng + +
+ dictionary +
+
+ +
Let BGP decide when to originate router-LSA with normal metric
+
+
+ area + +
+ string +
+
+ +
Configure an ospf area to run MPLS Traffic Engineering
+
OSPF area ID as a decimal value or in IP address format
+
+
+ autoroute_exclude + +
+ string +
+
+ +
MPLS TE autoroute exclude
+
Filter prefixes based on name of an IP prefix-list
+
+
+ interface + +
+ dictionary +
+
+ +
MPLS TE interface configuration for this OSPF process
+
+
+ area + +
+ integer +
+
+ +
Advertise MPLS TE information for this interface into area
+
OSPF area ID as a decimal value
+
+
+ interface_type + +
+ string +
+
+ +
TE Interface configuration (GigabitEthernet A/B)
+
+
+ mesh_group + +
+ dictionary +
+
+ +
Traffic Engineering Mesh-Group advertisement
+
+
+ area + +
+ string +
+
+ +
configure flooding scope as area
+
+
+ id + +
+ integer +
+
+ +
Mesh Group Id
+
+
+ interface + +
+ string +
+
+ +
Interface configuration (GigabitEthernet A/B)
+
+
+ multicast_intact + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
MPLS TE and PIM interaction
+
+
+ router_id_interface + +
+ string +
+
+ +
Router Interface configuration (GigabitEthernet A/B)
+
+
+ neighbor + +
+ dictionary +
+
+ +
Specify a neighbor router
+
+
+ address + +
+ string +
+
+ +
Neighbor address (A.B.C.D)
+
+
+ cost + +
+ integer +
+
+ +
OSPF cost for point-to-multipoint neighbor metric
+
Note, please refer vendor documentation for respective valid range
+
+
+ database_filter + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Filter OSPF LSA during synchronization and flooding for point-to-multipoint neighbor
+
Filter all outgoing LSA
+
+
+ poll_interval + +
+ integer +
+
+ +
OSPF dead-router polling interval of non-broadcast neighbor in Seconds
+
+
+ priority + +
+ integer +
+
+ +
OSPF priority of non-broadcast neighbor priority
+
+
+ network + +
+ list + / elements=dictionary +
+
+ +
Enable routing on an IP network
+
+
+ address + +
+ string +
+
+ +
Network number
+
+
+ area + +
+ string +
+
+ +
Set the OSPF area ID
+
+
+ wildcard_bits + +
+ string +
+
+ +
OSPF wild card bits
+
+
+ nsf + +
+ dictionary +
+
+ +
Non-stop forwarding
+
+
+ cisco + +
+ dictionary +
+
+ +
Cisco Non-stop forwarding
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable helper support
+
+
+ helper + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
helper support
+
+
+ ietf + +
+ dictionary +
+
+ +
IETF graceful restart
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable helper support
+
+
+ helper + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
helper support
+
+
+ strict_lsa_checking + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
enable helper strict LSA checking
+
+
+ passive_interface + +
+ string +
+
+ +
Suppress routing updates on an interface (GigabitEthernet A/B)
+
Interface name with respective interface number
+
+
+ prefix_suppression + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable prefix suppression
+
+
+ priority + +
+ integer +
+
+ +
OSPF topology priority
+
Note, refer vendor documentation for respective valid values
+
+
+ process_id + +
+ integer + / required +
+
+ +
Process ID
+
+
+ queue_depth + +
+ dictionary +
+
+ +
Hello/Router process queue depth
+
+
+ hello + +
+ dictionary +
+
+ +
OSPF Hello process queue depth
+
+
+ max_packets + +
+ integer +
+
+ +
maximum number of packets in the queue
+
+
+ unlimited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unlimited queue depth
+
+
+ update + +
+ dictionary +
+
+ +
OSPF Router process queue depth
+
+
+ max_packets + +
+ integer +
+
+ +
maximum number of packets in the queue
+
+
+ unlimited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unlimited queue depth
+
+
+ router_id + +
+ string +
+
+ +
Router-id address for this OSPF process
+
OSPF router-id in IP address format (A.B.C.D)
+
+
+ shutdown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Shutdown the router process
+
+
+ summary_address + +
+ dictionary +
+
+ +
Configure IP address summaries
+
+
+ address + +
+ string +
+
+ +
IP summary address
+
+
+ mask + +
+ string +
+
+ +
IP Summary mask
+
+
+ not_advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not advertise or translate
+
+
+ nssa_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Limit summary to NSSA areas
+
+
+ tag + +
+ integer +
+
+ +
Set tag
+
+
+ timers + +
+ dictionary +
+
+ +
Adjust routing timers
+
+
+ lsa + +
+ integer +
+
+ +
OSPF LSA timers, arrival timer
+
The minimum interval in milliseconds between accepting the same LSA
+
Note, refer vendor documentation for respective valid values
+
+
+ pacing + +
+ dictionary +
+
+ +
OSPF pacing timers
+
+
+ flood + +
+ integer +
+
+ +
OSPF flood pacing timer
+
The minimum interval in msec to pace limit flooding on interface
+
Note, refer vendor documentation for respective valid values
+
+
+ lsa_group + +
+ integer +
+
+ +
OSPF LSA group pacing timer
+
Interval in sec between group of LSA being refreshed or maxaged
+
Note, refer vendor documentation for respective valid values
+
+
+ retransmission + +
+ integer +
+
+ +
OSPF retransmission pacing timer
+
The minimum interval in msec between neighbor retransmissions
+
Note, refer vendor documentation for respective valid values
+
+
+ throttle + +
+ dictionary +
+
+ +
OSPF throttle timers
+
+
+ lsa + +
+ dictionary +
+
+ +
OSPF LSA throttle timers
+
+
+ first_delay + +
+ integer +
+
+ +
Delay to generate first occurrence of LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ min_delay + +
+ integer +
+
+ +
Minimum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ spf + +
+ dictionary +
+
+ +
OSPF SPF throttle timers - Delay between receiving a change to SPF calculation in milliseconds - Note, refer vendor documentation for respective valid values
+
+
+ between_delay + +
+ integer +
+
+ +
Delay between first and second SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum wait time in milliseconds for SPF calculations
+
Note, refer vendor documentation for respective valid values
+
+
+ receive_delay + +
+ integer +
+
+ +
Delay between receiving a change to SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ traffic_share + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
How to compute traffic share over alternate paths
+
All traffic shared among min metric paths
+
Use different interfaces for equal-cost paths
+
+
+ ttl_security + +
+ dictionary +
+
+ +
TTL security check
+
+
+ hops + +
+ integer +
+
+ +
Maximum number of IP hops allowed
+
Note, refer vendor documentation for respective valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable TTL Security on all interfaces
+
+
+ vrf + +
+ string +
+
+ +
Specify parameters for a VPN Routing/Forwarding instance
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh running-config | section ^router ospf.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • parsed
  • +
  • rendered
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using deleted + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + - name: Delete provided OSPF V2 processes + cisco.ios.ios_ospfv2: + config: + processes: + - process_id: 1 + - process_id: 200 + vrf: blue + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospf 1" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + + # Using deleted without any config passed (NOTE: This will delete all OSPFV2 configuration from device) + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + - name: Delete all OSPF processes + cisco.ios.ios_ospfv2: + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospf 200 vrf blue", + # "no router ospf 1" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospf + # router-ios# + + # Using merged + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router-ios# + + - name: Merge provided OSPF V2 configuration + cisco.ios.ios_ospfv2: + config: + processes: + - process_id: 1 + max_metric: + router_lsa: true + on_startup: + time: 110 + areas: + - area_id: '5' + capability: true + authentication: + enable: true + - area_id: '10' + authentication: + message_digest: true + nssa: + default_information_originate: + metric: 10 + translate: suppress-fa + default_cost: 10 + filter_list: + - name: test_prefix_in + direction: in + - name: test_prefix_out + direction: out + network: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + area: 5 + default_information: + originate: true + - process_id: 200 + vrf: blue + domain_id: + ip_address: + address: 192.0.3.1 + max_metric: + router_lsa: true + on_startup: + time: 100 + auto_cost: + reference_bandwidth: 4 + areas: + - area_id: '10' + capability: true + distribute_list: + acls: + - name: 10 + direction: out + - name: 123 + direction: in + state: merged + + # Commands Fired: + # --------------- + # + # "commands": [ + # "router ospf 200 vrf blue", + # "auto-cost reference-bandwidth 4", + # "distribute-list 10 out", + # "distribute-list 123 in", + # "domain-id 192.0.3.1", + # "max-metric router-lsa on-startup 100", + # "area 10 capability default-exclusion", + # "router ospf 1", + # "default-information originate", + # "max-metric router-lsa on-startup 110", + # "network 198.51.100.0 0.0.0.255 area 5", + # "area 10 authentication message-digest", + # "area 10 default-cost 10", + # "area 10 nssa translate type7 suppress-fa", + # "area 10 nssa default-information-originate metric 10", + # "area 10 filter-list prefix test_prefix_out out", + # "area 10 filter-list prefix test_prefix_in in", + # "area 5 authentication", + # "area 5 capability default-exclusion" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + # Using overridden + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + - name: Override provided OSPF V2 configuration + cisco.ios.ios_ospfv2: + config: + processes: + - process_id: 200 + vrf: blue + domain_id: + ip_address: + address: 192.0.4.1 + max_metric: + router_lsa: true + on_startup: + time: 200 + maximum_paths: 15 + ttl_security: + hops: 7 + areas: + - area_id: '10' + default_cost: 10 + authentication: + message_digest: true + - process_id: 100 + vrf: ospf_vrf + domain_id: + ip_address: + address: 192.0.5.1 + auto_cost: + reference_bandwidth: 5 + areas: + - area_id: '5' + authentication: + message_digest: true + nssa: + default_information_originate: + metric: 10 + translate: suppress-fa + state: overridden + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospf 1", + # "router ospf 100 vrf ospf_vrf", + # "auto-cost reference-bandwidth 5", + # "domain-id 192.0.5.1", + # "area 5 authentication message-digest", + # "area 5 nssa translate type7 suppress-fa", + # "area 5 nssa default-information-originate metric 10", + # "router ospf 200 vrf blue", + # "no auto-cost reference-bandwidth 4", + # "no distribute-list 10 out", + # "no distribute-list 123 in", + # "domain-id 192.0.4.1", + # "max-metric router-lsa on-startup 200", + # "maximum-paths 15", + # "ttl-security all-interfaces hops 7", + # "area 10 authentication message-digest", + # "no area 10 capability default-exclusion", + # "area 10 default-cost 10" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.4.1 + # max-metric router-lsa on-startup 200 + # ttl-security all-interfaces hops 7 + # area 10 authentication message-digest + # area 10 default-cost 10 + # maximum-paths 15 + # router ospf 100 vrf ospf_vrf + # domain-id 192.0.5.1 + # auto-cost reference-bandwidth 5 + # area 5 authentication message-digest + # area 5 nssa default-information-originate metric 10 + # area 5 nssa translate type7 suppress-fa + + # Using replaced + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + - name: Replaced provided OSPF V2 configuration + cisco.ios.ios_ospfv2: + config: + processes: + - process_id: 200 + vrf: blue + domain_id: + ip_address: + address: 192.0.4.1 + max_metric: + router_lsa: true + on_startup: + time: 200 + maximum_paths: 15 + ttl_security: + hops: 7 + areas: + - area_id: '10' + default_cost: 10 + authentication: + message_digest: true + - process_id: 100 + vrf: ospf_vrf + domain_id: + ip_address: + address: 192.0.5.1 + auto_cost: + reference_bandwidth: 5 + areas: + - area_id: '5' + authentication: + message_digest: true + nssa: + default_information_originate: + metric: 10 + translate: suppress-fa + state: replaced + + # Commands Fired: + # --------------- + # "commands": [ + # "router ospf 100 vrf ospf_vrf", + # "auto-cost reference-bandwidth 5", + # "domain-id 192.0.5.1", + # "area 5 authentication message-digest", + # "area 5 nssa translate type7 suppress-fa", + # "area 5 nssa default-information-originate metric 10", + # "router ospf 200 vrf blue", + # "no auto-cost reference-bandwidth 4", + # "no distribute-list 10 out", + # "no distribute-list 123 in", + # "domain-id 192.0.4.1", + # "max-metric router-lsa on-startup 200", + # "maximum-paths 15", + # "ttl-security all-interfaces hops 7", + # "area 10 authentication message-digest", + # "no area 10 capability default-exclusion", + # "area 10 default-cost 10" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.4.1 + # max-metric router-lsa on-startup 200 + # ttl-security all-interfaces hops 7 + # area 10 authentication message-digest + # area 10 default-cost 10 + # maximum-paths 15 + # router ospf 100 vrf ospf_vrf + # domain-id 192.0.5.1 + # auto-cost reference-bandwidth 5 + # area 5 authentication message-digest + # area 5 nssa default-information-originate metric 10 + # area 5 nssa translate type7 suppress-fa + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 5 capability default-exclusion + # area 5 authentication + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_in in + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + # Using Gathered + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + - name: Gather OSPFV2 provided configurations + cisco.ios.ios_ospfv2: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": { + # "processes": [ + # { + # "areas": [ + # { + # "area_id": "5", + # "authentication": { + # "enable": true + # }, + # "capability": true + # }, + # { + # "area_id": "10", + # "authentication": { + # "message_digest": true + # }, + # "default_cost": 10, + # "filter_list": [ + # { + # "direction": "in", + # "name": "test_prefix_in" + # }, + # { + # "direction": "out", + # "name": "test_prefix_out" + # } + # ], + # "nssa": { + # "default_information_originate": { + # "metric": 10 + # }, + # "translate": "suppress-fa" + # } + # } + # ], + # "default_information": { + # "originate": true + # }, + # "max_metric": { + # "on_startup": { + # "time": 110 + # }, + # "router_lsa": true + # }, + # "network": { + # "address": "198.51.100.0", + # "area": "5", + # "wildcard_bits": "0.0.0.255" + # }, + # "process_id": 1 + # }, + # { + # "areas": [ + # { + # "area_id": "10", + # "capability": true + # } + # ], + # "auto_cost": { + # "reference_bandwidth": 4 + # }, + # "distribute_list": { + # "acls": [ + # { + # "direction": "out", + # "name": "10" + # }, + # { + # "direction": "in", + # "name": "123" + # } + # ] + # }, + # "domain_id": { + # "ip_address": { + # "address": "192.0.3.1" + # } + # }, + # "max_metric": { + # "on_startup": { + # "time": 100 + # }, + # "router_lsa": true + # }, + # "process_id": 200, + # "vrf": "blue" + # } + # ] + # } + + # After state: + # ------------ + # + # router-ios#sh running-config | section ^router ospf + # router ospf 200 vrf blue + # domain-id 192.0.3.1 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # area 10 capability default-exclusion + # distribute-list 10 out + # distribute-list 123 in + # router ospf 1 + # max-metric router-lsa on-startup 110 + # area 10 authentication message-digest + # area 10 nssa default-information-originate metric 10 + # area 10 nssa translate type7 suppress-fa + # area 10 default-cost 10 + # area 10 filter-list prefix test_prefix_out out + # network 198.51.100.0 0.0.0.255 area 5 + # default-information originate + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_ospfv2: + config: + processes: + - process_id: 1 + max_metric: + router_lsa: true + on_startup: + time: 110 + areas: + - area_id: '5' + capability: true + authentication: + enable: true + - area_id: '10' + authentication: + message_digest: true + nssa: + default_information_originate: + metric: 10 + translate: suppress-fa + default_cost: 10 + filter_list: + - name: test_prefix_in + direction: in + - name: test_prefix_out + direction: out + network: + address: 198.51.100.0 + wildcard_bits: 0.0.0.255 + area: 5 + default_information: + originate: true + - process_id: 200 + vrf: blue + domain_id: + ip_address: + address: 192.0.3.1 + max_metric: + router_lsa: true + on_startup: + time: 100 + auto_cost: + reference_bandwidth: 4 + areas: + - area_id: '10' + capability: true + distribute_list: + acls: + - name: 10 + direction: out + - name: 123 + direction: in + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "router ospf 200 vrf blue", + # "auto-cost reference-bandwidth 4", + # "distribute-list 10 out", + # "distribute-list 123 in", + # "domain-id 192.0.3.1", + # "max-metric router-lsa on-startup 100", + # "area 10 capability default-exclusion", + # "router ospf 1", + # "default-information originate", + # "max-metric router-lsa on-startup 110", + # "network 198.51.100.0 0.0.0.255 area 5", + # "area 10 authentication message-digest", + # "area 10 default-cost 10", + # "area 10 nssa translate type7 suppress-fa", + # "area 10 nssa default-information-originate metric 10", + # "area 10 filter-list prefix test_prefix_out out", + # "area 10 filter-list prefix test_prefix_in in", + # "area 5 authentication", + # "area 5 capability default-exclusion" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # router ospf 100 + # auto-cost reference-bandwidth 5 + # domain-id 192.0.5.1 + # area 5 authentication message-digest + # area 5 nssa translate type7 suppress-fa + # area 5 nssa default-information-originate metric 10 + + - name: Parse the provided configuration with the exisiting running configuration + cisco.ios.ios_ospfv2: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": { + # "processes": [ + # { + # "areas": [ + # { + # "area_id": "5", + # "authentication": { + # "message_digest": true + # }, + # "nssa": { + # "default_information_originate": { + # "metric": 10 + # }, + # "translate": "suppress-fa" + # } + # } + # ], + # "auto_cost": { + # "reference_bandwidth": 5 + # }, + # "domain_id": { + # "ip_address": { + # "address": "192.0.5.1" + # } + # }, + # "process_id": 100 + # } + # ] + # } + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ dictionary +
+
when changed +
The resulting configuration model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ dictionary +
+
always +
The configuration prior to the model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['router ospf 200 vrf blue', 'auto-cost reference-bandwidth 5', 'domain-id 192.0.4.1']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst new file mode 100644 index 00000000..882dc414 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ospfv3_module.rst @@ -0,0 +1,7255 @@ +.. _cisco.ios.ios_ospfv3_module: + + +******************** +cisco.ios.ios_ospfv3 +******************** + +**OSPFv3 resource module** + + +Version added: 1.1.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the Open Shortest Path First (OSPF) version 3 on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
A list of configurations for ospfv3.
+
+
+ processes + +
+ list + / elements=dictionary +
+
+ +
List of OSPF instance configurations.
+
+
+ address_family + +
+ list + / elements=dictionary +
+
+ +
Enter Address Family command mode
+
+
+ adjacency + +
+ dictionary +
+
+ +
Control adjacency formation
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable adjacency staggering
+
+
+ max_adjacency + +
+ integer +
+
+ +
Maximum number of adjacencies allowed to be forming
+
Please refer vendor documentation for valid values
+
+
+ min_adjacency + +
+ integer +
+
+ +
Initial number of adjacencies allowed to be forming in an area
+
Please refer vendor documentation for valid values
+
+
+ none + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No initial
+
+
+ afi + +
+ string +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Enter Address Family command mode
+
+
+ areas + +
+ list + / elements=dictionary +
+
+ +
OSPF area parameters
+
+
+ area_id + +
+ string +
+
+ +
OSPF area ID as a decimal value. Please refer vendor documentation of Valid values.
+
OSPF area ID in IP address format(e.g. A.B.C.D)
+
+
+ authentication + +
+ dictionary +
+
+ +
Authentication parameters
+
+
+ key_chain + +
+ string +
+
+ +
Use a key-chain for cryptographic authentication keys
+
+
+ null + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use no authentication
+
+
+ default_cost + +
+ integer +
+
+ +
Set the summary default-cost of a NSSA/stub area
+
Stub's advertised external route metric
+
Note, please refer vendor documentation for respective valid values
+
+
+ filter_list + +
+ list + / elements=dictionary +
+
+ +
Filter networks between OSPFv3 areas
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
The direction to apply on the filter networks sent to and from this area.
+
+
+ name + +
+ string +
+
+ +
Name of an IP prefix-list
+
+
+ normal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Specify a normal area type
+
+
+ nssa + +
+ dictionary +
+
+ +
Specify a NSSA area
+
+
+ default_information_originate + +
+ dictionary +
+
+ +
Originate Type 7 default into NSSA area
+
+
+ metric + +
+ integer +
+
+ +
OSPF default metric
+
+
+ metric_type + +
+ integer +
+
+
    Choices: +
  • 1
  • +
  • 2
  • +
+
+
OSPF metric type for default routes
+
OSPF Link State type
+
+
+ nssa_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Limit default advertisement to this NSSA area
+
+
+ no_redistribution + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No redistribution into this NSSA area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into NSSA
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a NSSA area
+
+
+ translate + +
+ string +
+
+
    Choices: +
  • always
  • +
  • suppress-fa
  • +
+
+
Translate LSA
+
Always translate LSAs on this ABR
+
Suppress forwarding address in translated LSAs
+
+
+ ranges + +
+ list + / elements=dictionary +
+
+ +
Summarize routes matching address/mask (border routers only)
+
+
+ address + +
+ string +
+
+ +
IP address to match
+
+
+ advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Advertise this range (default)
+
Since, advertise when enabled is not shown in running-config idempotency won't be maintained for the play in the second or next run of the play.
+
+
+ cost + +
+ integer +
+
+ +
User specified metric for this range
+
+
+ netmask + +
+ string +
+
+ +
IP mask for address
+
+
+ not_advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
DoNotAdvertise this range
+
+
+ sham_link + +
+ dictionary +
+
+ +
Define a sham link and its parameters
+
+
+ authentication + +
+ dictionary +
+
+ +
Authentication parameters
+
+
+ key_chain + +
+ string +
+
+ +
Use a key-chain for cryptographic authentication keys
+
+
+ null + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Use no authentication
+
+
+ cost + +
+ integer +
+
+ +
Associate a cost with the sham-link
+
Cost of the sham-link
+
+
+ destination + +
+ string +
+
+ +
IPv6 address associated with sham-link destination (X:X:X:X::X)
+
+
+ source + +
+ string +
+
+ +
IPv6 address associated with sham-link source (X:X:X:X::X)
+
+
+ ttl_security + +
+ integer +
+
+ +
TTL security check
+
maximum number of hops allowed
+
+
+ stub + +
+ dictionary +
+
+ +
Specify a stub area
+
Backbone can not be configured as stub area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into stub area
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a stub area
+
+
+ authentication + +
+ dictionary +
+
+ +
Authentication parameters
+
Authentication operation mode
+
+
+ deployment + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Deployment mode of operation
+
+
+ normal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Normal mode of operation
+
+
+ auto_cost + +
+ dictionary +
+
+ +
Calculate OSPF interface cost according to bandwidth
+
+
+ reference_bandwidth + +
+ integer +
+
+ +
Use reference bandwidth method to assign OSPF cost
+
Note, refer vendor documentation for respective valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable OSPF auto-cost
+
+
+ bfd + +
+ dictionary +
+
+ +
BFD configuration commands
+
+
+ all_interfaces + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable BFD on all interfaces
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable BFD on all interfaces
+
+
+ capability + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a specific feature
+
Do not perform PE specific checks
+
+
+ compatible + +
+ dictionary +
+
+ +
OSPFv3 router compatibility list
+
+
+ rfc1583 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1583
+
+
+ rfc1587 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1587
+
+
+ rfc5243 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
supports DBD exchange optimization
+
+
+ default_information + +
+ dictionary +
+
+ +
Control distribution of default information
+
+
+ always + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Always advertise default route
+
+
+ metric + +
+ integer +
+
+ +
OSPF default metric
+
Note, refer vendor documentation for respective valid values
+
+
+ metric_type + +
+ integer +
+
+ +
OSPF metric type for default routes
+
Note, please refer vendor documentation for respective valid range
+
+
+ originate + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Distribute a default route
+
+
+ route_map + +
+ string +
+
+ +
Route-map reference name
+
+
+ default_metric + +
+ integer +
+
+ +
Set metric of redistributed routes
+
+
+ discard_route + +
+ dictionary +
+
+ +
Enable or disable discard-route installation
+
+
+ external + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Discard route for summarised redistributed routes
+
+
+ internal + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Discard route for summarised inter-area routes
+
+
+ sham_link + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Discard route for sham-link routes
+
+
+ distance + +
+ integer +
+
+ +
Define an administrative distance
+
Note, please refer vendor documentation for respective valid range
+
+
+ distribute_list + +
+ dictionary +
+
+ +
Filter networks in routing updates
+
+
+ acls + +
+ list + / elements=dictionary +
+
+ +
IP access list
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
Filter incoming and outgoing routing updates.
+
+
+ interface + +
+ string +
+
+ +
Interface configuration (GigabitEthernet A/B)
+
Valid with incoming traffic
+
+
+ name + +
+ string + / required +
+
+ +
IP access list name/number
+
+
+ protocol + +
+ string +
+
+ +
Protocol config (bgp 1).
+
Valid with outgoing traffic
+
+
+ prefix + +
+ dictionary +
+
+ +
Filter prefixes in routing updates
+
+
+ direction + +
+ string + / required +
+
+
    Choices: +
  • in
  • +
  • out
  • +
+
+
Filter incoming and outgoing routing updates.
+
+
+ gateway_name + +
+ string +
+
+ +
Gateway name for filtering incoming updates based on gateway
+
+
+ interface + +
+ string +
+
+ +
Interface configuration (GigabitEthernet A/B)
+
Valid with incoming traffic
+
+
+ name + +
+ string + / required +
+
+ +
Name of an IP prefix-list
+
+
+ protocol + +
+ string +
+
+ +
Protocol config (bgp 1).
+
Valid with outgoing traffic
+
+
+ route_map + +
+ dictionary +
+
+ +
Filter prefixes in routing updates
+
+
+ name + +
+ string + / required +
+
+ +
Route-map name
+
+
+ event_log + +
+ dictionary +
+
+ +
Event Logging
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable event Logging
+
+
+ one_shot + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable Logging When Log Buffer Becomes Full
+
+
+ pause + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Pause Event Logging
+
+
+ size + +
+ integer +
+
+ +
Maximum Number of Events Stored in the Event Log
+
Note, refer vendor documentation for respective valid values
+
+
+ graceful_restart + +
+ dictionary +
+
+ +
Graceful-restart options
+
helper support
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable helper support
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
helper support enabled
+
+
+ strict_lsa_checking + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
enable helper strict LSA checking
+
+
+ interface_id + +
+ dictionary +
+
+ +
Source of the interface ID
+
+
+ ios_if_index + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
IOS interface number
+
+
+ snmp_if_index + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
SNMP MIB ifIndex
+
+
+ limit + +
+ dictionary +
+
+ +
Limit a specific OSPF feature
+
+
+ dc + +
+ dictionary +
+
+ +
Demand circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ non_dc + +
+ dictionary +
+
+ +
Non-demand-circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ local_rib_criteria + +
+ dictionary +
+
+ +
Enable or disable usage of local RIB as route criteria
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable usage of local RIB as route criteria
+
+
+ forwarding_address + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used to validate external/NSSA forwarding addresses
+
+
+ inter_area_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for inter-area summaries
+
+
+ nssa_translation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for NSSA translation
+
+
+ log_adjacency_changes + +
+ dictionary +
+
+ +
Log changes in adjacency state
+
+
+ detail + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log all state changes
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log changes in adjacency state
+
+
+ manet + +
+ dictionary +
+
+ +
Specify MANET OSPF parameters
+
+
+ cache + +
+ dictionary +
+
+ +
Specify MANET cache sizes
+
+
+ acknowledgement + +
+ integer +
+
+ +
Specify MANET acknowledgement cache size
+
Maximum number of acknowledgements in cache
+
+
+ update + +
+ integer +
+
+ +
Specify MANET LSA cache size
+
Maximum number of LSAs in cache
+
+
+ hello + +
+ dictionary +
+
+ +
Unicast Hellos rather than multicast
+
+
+ multicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Multicast Hello requests and responses rather than unicast
+
+
+ unicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unicast Hello requests and responses rather than multicast
+
+
+ peering + +
+ dictionary +
+
+ +
MANET OSPF Smart Peering
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable selective peering
+
+
+ per_interface + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select peers per interface rather than per node
+
+
+ redundancy + +
+ integer +
+
+ +
Redundant paths
+
Number of redundant OSPF paths
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable selective peering
+
+
+ willingness + +
+ integer +
+
+ +
Specify and Relay willingness value
+
+
+ max_lsa + +
+ dictionary +
+
+ +
Maximum number of non self-generated LSAs to accept
+
+
+ ignore_count + +
+ integer +
+
+ +
Maximum number of times adjacencies can be suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ ignore_time + +
+ integer +
+
+ +
Number of minutes during which all adjacencies are suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ number + +
+ integer +
+
+ +
Maximum number of non self-generated LSAs to accept
+
Note, refer vendor documentation for respective valid values
+
+
+ reset_time + +
+ integer +
+
+ +
Number of minutes after which ignore-count is reset to zero
+
Note, refer vendor documentation for respective valid values
+
+
+ threshold_value + +
+ integer +
+
+ +
Threshold value (%) at which to generate a warning msg
+
Note, refer vendor documentation for respective valid values
+
+
+ warning_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Only give a warning message when limit is exceeded
+
+
+ max_metric + +
+ dictionary +
+
+ +
Set maximum metric
+
Maximum metric in self-originated router-LSAs
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable maximum metric in self-originated router-LSAs
+
+
+ external_lsa + +
+ integer +
+
+ +
Override external-lsa metric with max-metric value
+
Overriding metric in external-LSAs
+
Note, refer vendor documentation for respective valid values
+
+
+ inter_area_lsas + +
+ integer +
+
+ +
Override inter-area-lsas metric with max-metric value
+
Overriding metric in inter-area-LSAs
+
Note, refer vendor documentation for respective valid values
+
+
+ on_startup + +
+ dictionary +
+
+ +
Set maximum metric temporarily after reboot
+
+
+ time + +
+ integer +
+
+ +
Time, in seconds, router-LSAs are originated with max-metric
+
Note, please refer vendor documentation for respective valid range
+
+
+ wait_for_bgp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Let BGP decide when to originate router-LSA with normal metric
+
+
+ stub_prefix_lsa + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set maximum metric for stub links in prefix LSAs
+
+
+ maximum_paths + +
+ integer +
+
+ +
Forward packets over multiple paths
+
Number of paths
+
+
+ passive_interface + +
+ string +
+
+ +
Suppress routing updates on an interface
+
+
+ prefix_suppression + +
+ dictionary +
+
+ +
Prefix suppression
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable prefix suppression
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable prefix suppression
+
+
+ queue_depth + +
+ dictionary +
+
+ +
Hello/Router process queue depth
+
+
+ hello + +
+ dictionary +
+
+ +
OSPF Hello process queue depth
+
+
+ max_packets + +
+ integer +
+
+ +
maximum number of packets in the queue
+
+
+ unlimited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unlimited queue depth
+
+
+ update + +
+ dictionary +
+
+ +
OSPF Router process queue depth
+
+
+ max_packets + +
+ integer +
+
+ +
maximum number of packets in the queue
+
+
+ unlimited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unlimited queue depth
+
+
+ router_id + +
+ string +
+
+ +
Router-id address for this OSPF process
+
OSPF router-id in IP address format (A.B.C.D)
+
+
+ shutdown + +
+ dictionary +
+
+ +
Shutdown the router process
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable Shutdown
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Shutdown the router process
+
+
+ summary_prefix + +
+ dictionary +
+
+ +
Configure IP address summaries
+
+
+ address + +
+ string +
+
+ +
IP summary address (A.B.C.D)
+
IP prefix <network>/<length> (A.B.C.D/nn)
+
+
+ mask + +
+ string +
+
+ +
IP Summary mask
+
+
+ not_advertise + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not advertise or translate
+
+
+ nssa_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Limit summary to NSSA areas
+
+
+ tag + +
+ integer +
+
+ +
Set tag
+
+
+ timers + +
+ dictionary +
+
+ +
Adjust routing timers
+
+
+ lsa + +
+ integer +
+
+ +
OSPF LSA timers, arrival timer
+
The minimum interval in milliseconds between accepting the same LSA
+
Note, refer vendor documentation for respective valid values
+
+
+ manet + +
+ dictionary +
+
+ +
OSPF MANET timers
+
+
+ cache + +
+ dictionary +
+
+ +
Specify MANET cache sizes
+
+
+ acknowledgement + +
+ integer +
+
+ +
Specify MANET acknowledgement cache size
+
+
+ redundancy + +
+ integer +
+
+ +
Specify MANET LSA cache size
+
+
+ hello + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unicast Hellos rather than multicast
+
Unicast Hello requests and responses rather than multicast
+
+
+ peering + +
+ dictionary +
+
+ +
MANET OSPF Smart Peering
+
+
+ per_interface + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select peers per interface rather than per node
+
+
+ redundancy + +
+ integer +
+
+ +
Redundant paths
+
Number of redundant OSPF paths
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable selective peering
+
+
+ willingness + +
+ integer +
+
+ +
Specify and Relay willingness value
+
+
+ pacing + +
+ dictionary +
+
+ +
OSPF pacing timers
+
+
+ flood + +
+ integer +
+
+ +
OSPF flood pacing timer
+
The minimum interval in msec to pace limit flooding on interface
+
Note, refer vendor documentation for respective valid values
+
+
+ lsa_group + +
+ integer +
+
+ +
OSPF LSA group pacing timer
+
Interval in sec between group of LSA being refreshed or maxaged
+
Note, refer vendor documentation for respective valid values
+
+
+ retransmission + +
+ integer +
+
+ +
OSPF retransmission pacing timer
+
The minimum interval in msec between neighbor retransmissions
+
Note, refer vendor documentation for respective valid values
+
+
+ throttle + +
+ dictionary +
+
+ +
OSPF throttle timers
+
+
+ lsa + +
+ dictionary +
+
+ +
OSPF LSA throttle timers
+
+
+ first_delay + +
+ integer +
+
+ +
Delay to generate first occurrence of LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ min_delay + +
+ integer +
+
+ +
Minimum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ spf + +
+ dictionary +
+
+ +
OSPF SPF throttle timers - Delay between receiving a change to SPF calculation in milliseconds - Note, refer vendor documentation for respective valid values
+
+
+ between_delay + +
+ integer +
+
+ +
Delay between first and second SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum wait time in milliseconds for SPF calculations
+
Note, refer vendor documentation for respective valid values
+
+
+ receive_delay + +
+ integer +
+
+ +
Delay between receiving a change to SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ unicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Address Family modifier
+
+
+ vrf + +
+ string +
+
+ +
Specify parameters for a VPN Routing/Forwarding instance
+
+
+ adjacency + +
+ dictionary +
+
+ +
Control adjacency formation
+
+
+ max_adjacency + +
+ integer +
+
+ +
Maximum number of adjacencies allowed to be forming
+
Please refer vendor documentation for valid values
+
+
+ min_adjacency + +
+ integer +
+
+ +
Initial number of adjacencies allowed to be forming in an area
+
Please refer vendor documentation for valid values
+
+
+ none + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No initial
+
+
+ areas + +
+ list + / elements=dictionary +
+
+ +
OSPF area parameters
+
+
+ area_id + +
+ string +
+
+ +
OSPF area ID as a decimal value. Please refer vendor documentation of Valid values.
+
OSPF area ID in IP address format(e.g. A.B.C.D)
+
+
+ authentication + +
+ dictionary +
+
+ +
Authentication parameters
+
+
+ ipsec + +
+ dictionary +
+
+ +
Use IPsec authentication
+
+
+ hex_string + +
+ string +
+
+ +
SHA-1 key (40 chars)
+
+
+ md5 + +
+ integer +
+
+ +
Use MD5 authentication
+
+
+ sha1 + +
+ integer +
+
+ +
Use SHA-1 authentication
+
+
+ spi + +
+ integer +
+
+ +
Set the SPI (Security Parameters Index)
+
+
+ key_chain + +
+ string +
+
+ +
Use a key-chain for cryptographic authentication keys
+
+
+ default_cost + +
+ integer +
+
+ +
Set the summary default-cost of a NSSA/stub area
+
Stub's advertised external route metric
+
Note, please refer vendor documentation for respective valid values
+
+
+ nssa + +
+ dictionary +
+
+ +
Specify a NSSA area
+
+
+ default_information_originate + +
+ dictionary +
+
+ +
Originate Type 7 default into NSSA area
+
+
+ metric + +
+ integer +
+
+ +
OSPF default metric
+
+
+ metric_type + +
+ integer +
+
+
    Choices: +
  • 1
  • +
  • 2
  • +
+
+
OSPF metric type for default routes
+
OSPF Link State type
+
+
+ nssa_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Limit default advertisement to this NSSA area
+
+
+ no_redistribution + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
No redistribution into this NSSA area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into NSSA
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a NSSA area
+
+
+ translate + +
+ string +
+
+
    Choices: +
  • always
  • +
  • suppress-fa
  • +
+
+
Translate LSA
+
Always translate LSAs on this ABR
+
Suppress forwarding address in translated LSAs
+
+
+ stub + +
+ dictionary +
+
+ +
Specify a stub area
+
Backbone can not be configured as stub area
+
+
+ no_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Do not send summary LSA into stub area
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable a stub area
+
+
+ authentication + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Authentication parameter mode
+
Deployment mode of operation
+
+
+ auto_cost + +
+ dictionary +
+
+ +
Calculate OSPF interface cost according to bandwidth
+
+
+ reference_bandwidth + +
+ integer +
+
+ +
Use reference bandwidth method to assign OSPF cost
+
Note, refer vendor documentation for respective valid values
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable OSPF auto-cost
+
+
+ bfd + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
BFD configuration commands
+
Enable BFD on all interfaces
+
+
+ compatible + +
+ dictionary +
+
+ +
OSPFv3 router compatibility list
+
+
+ rfc1583 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1583
+
+
+ rfc1587 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
compatible with RFC 1587
+
+
+ rfc5243 + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
supports DBD exchange optimization
+
+
+ event_log + +
+ dictionary +
+
+ +
Event Logging
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable event Logging
+
+
+ one_shot + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disable Logging When Log Buffer Becomes Full
+
+
+ pause + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Pause Event Logging
+
+
+ size + +
+ integer +
+
+ +
Maximum Number of Events Stored in the Event Log
+
Note, refer vendor documentation for respective valid values
+
+
+ graceful_restart + +
+ dictionary +
+
+ +
Graceful-restart options for helper support
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
disable helper support
+
+
+ strict_lsa_checking + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
enable helper strict LSA checking
+
+
+ help + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Description of the interactive help system
+
+
+ interface_id + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Source of the interface ID
+
SNMP MIB ifIndex
+
+
+ limit + +
+ dictionary +
+
+ +
Limit a specific OSPF feature and LS update, DBD, and LS request retransmissions
+
+
+ dc + +
+ dictionary +
+
+ +
Demand circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ non_dc + +
+ dictionary +
+
+ +
Non-demand-circuit retransmissions
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Disble the feature
+
+
+ number + +
+ integer +
+
+ +
The maximum number of retransmissions
+
+
+ local_rib_criteria + +
+ dictionary +
+
+ +
Enable or disable usage of local RIB as route criteria
+
+
+ enable + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable usage of local RIB as route criteria
+
+
+ forwarding_address + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used to validate external/NSSA forwarding addresses
+
+
+ inter_area_summary + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for inter-area summaries
+
+
+ nssa_translation + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Local RIB used as criteria for NSSA translation
+
+
+ log_adjacency_changes + +
+ dictionary +
+
+ +
Log changes in adjacency state
+
+
+ detail + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log all state changes
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Log changes in adjacency state
+
+
+ manet + +
+ dictionary +
+
+ +
Specify MANET OSPF parameters
+
+
+ cache + +
+ dictionary +
+
+ +
Specify MANET cache sizes
+
+
+ acknowledgement + +
+ integer +
+
+ +
Specify MANET acknowledgement cache size
+
+
+ redundancy + +
+ integer +
+
+ +
Specify MANET LSA cache size
+
+
+ hello + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unicast Hellos rather than multicast
+
Unicast Hello requests and responses rather than multicast
+
+
+ peering + +
+ dictionary +
+
+ +
MANET OSPF Smart Peering
+
+
+ per_interface + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select peers per interface rather than per node
+
+
+ redundancy + +
+ integer +
+
+ +
Redundant paths
+
Number of redundant OSPF paths
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable selective peering
+
+
+ willingness + +
+ integer +
+
+ +
Specify and Relay willingness value
+
+
+ max_lsa + +
+ dictionary +
+
+ +
Maximum number of non self-generated LSAs to accept
+
+
+ ignore_count + +
+ integer +
+
+ +
Maximum number of times adjacencies can be suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ ignore_time + +
+ integer +
+
+ +
Number of minutes during which all adjacencies are suppressed
+
Note, refer vendor documentation for respective valid values
+
+
+ number + +
+ integer +
+
+ +
Maximum number of non self-generated LSAs to accept
+
Note, refer vendor documentation for respective valid values
+
+
+ reset_time + +
+ integer +
+
+ +
Number of minutes after which ignore-count is reset to zero
+
Note, refer vendor documentation for respective valid values
+
+
+ threshold_value + +
+ integer +
+
+ +
Threshold value (%) at which to generate a warning msg
+
Note, refer vendor documentation for respective valid values
+
+
+ warning_only + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Only give a warning message when limit is exceeded
+
+
+ max_metric + +
+ dictionary +
+
+ +
Set maximum metric
+
+
+ external_lsa + +
+ integer +
+
+ +
Override external-lsa metric with max-metric value
+
Overriding metric in external-LSAs
+
Note, refer vendor documentation for respective valid values
+
+
+ include_stub + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Set maximum metric for stub links in router-LSAs
+
+
+ on_startup + +
+ dictionary +
+
+ +
Set maximum metric temporarily after reboot
+
+
+ time + +
+ integer +
+
+ +
Time, in seconds, router-LSAs are originated with max-metric
+
Note, please refer vendor documentation for respective valid range
+
+
+ wait_for_bgp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Let BGP decide when to originate router-LSA with normal metric
+
+
+ router_lsa + +
+ boolean + / required +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Maximum metric in self-originated router-LSAs
+
+
+ summary_lsa + +
+ integer +
+
+ +
Override summary-lsa metric with max-metric value
+
Note, please refer vendor documentation for respective valid range
+
+
+ passive_interface + +
+ string +
+
+ +
Suppress routing updates on an interface
+
+
+ prefix_suppression + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable prefix suppression
+
+
+ process_id + +
+ integer + / required +
+
+ +
Process ID
+
+
+ queue_depth + +
+ dictionary +
+
+ +
Hello/Router process queue depth
+
+
+ hello + +
+ dictionary +
+
+ +
OSPF Hello process queue depth
+
+
+ max_packets + +
+ integer +
+
+ +
maximum number of packets in the queue
+
+
+ unlimited + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unlimited queue depth
+
+
+ router_id + +
+ string +
+
+ +
Router-id address for this OSPF process
+
OSPF router-id in IP address format (A.B.C.D)
+
+
+ shutdown + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Shutdown the router process
+
+
+ timers + +
+ dictionary +
+
+ +
Adjust routing timers
+
+
+ lsa + +
+ integer +
+
+ +
OSPF LSA timers, arrival timer
+
The minimum interval in milliseconds between accepting the same LSA
+
Note, refer vendor documentation for respective valid values
+
+
+ manet + +
+ dictionary +
+
+ +
OSPF MANET timers
+
+
+ cache + +
+ dictionary +
+
+ +
Specify MANET cache sizes
+
+
+ acknowledgement + +
+ integer +
+
+ +
Specify MANET acknowledgement cache size
+
+
+ redundancy + +
+ integer +
+
+ +
Specify MANET LSA cache size
+
+
+ hello + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Unicast Hellos rather than multicast
+
Unicast Hello requests and responses rather than multicast
+
+
+ peering + +
+ dictionary +
+
+ +
MANET OSPF Smart Peering
+
+
+ per_interface + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Select peers per interface rather than per node
+
+
+ redundancy + +
+ integer +
+
+ +
Redundant paths
+
Number of redundant OSPF paths
+
+
+ set + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Enable selective peering
+
+
+ willingness + +
+ integer +
+
+ +
Specify and Relay willingness value
+
+
+ pacing + +
+ dictionary +
+
+ +
OSPF pacing timers
+
+
+ flood + +
+ integer +
+
+ +
OSPF flood pacing timer
+
The minimum interval in msec to pace limit flooding on interface
+
Note, refer vendor documentation for respective valid values
+
+
+ lsa_group + +
+ integer +
+
+ +
OSPF LSA group pacing timer
+
Interval in sec between group of LSA being refreshed or maxaged
+
Note, refer vendor documentation for respective valid values
+
+
+ retransmission + +
+ integer +
+
+ +
OSPF retransmission pacing timer
+
The minimum interval in msec between neighbor retransmissions
+
Note, refer vendor documentation for respective valid values
+
+
+ throttle + +
+ dictionary +
+
+ +
OSPF throttle timers
+
+
+ lsa + +
+ dictionary +
+
+ +
OSPF LSA throttle timers
+
+
+ first_delay + +
+ integer +
+
+ +
Delay to generate first occurrence of LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ min_delay + +
+ integer +
+
+ +
Minimum delay between originating the same LSA in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ spf + +
+ dictionary +
+
+ +
OSPF SPF throttle timers - Delay between receiving a change to SPF calculation in milliseconds - Note, refer vendor documentation for respective valid values
+
+
+ between_delay + +
+ integer +
+
+ +
Delay between first and second SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ max_delay + +
+ integer +
+
+ +
Maximum wait time in milliseconds for SPF calculations
+
Note, refer vendor documentation for respective valid values
+
+
+ receive_delay + +
+ integer +
+
+ +
Delay between receiving a change to SPF calculation in milliseconds
+
Note, refer vendor documentation for respective valid values
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command sh running-config | section ^router ospfv3.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • parsed
  • +
  • rendered
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using deleted + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Delete provided OSPF V3 processes + cisco.ios.ios_ospfv3: + config: + processes: + - process_id: 1 + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospfv3 1" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + # Using deleted without any config passed (NOTE: This will delete all OSPFV3 configuration from device) + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Delete all OSPF processes + cisco.ios.ios_ospfv3: + state: deleted + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospfv3 200", + # "no router ospfv3 1" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospfv3 + # router-ios# + + # Using merged + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router-ios# + + - name: Merge provided OSPFV3 configuration + cisco.ios.ios_ospfv3: + config: + processes: + - process_id: 1 + max_metric: + router_lsa: true + on_startup: + time: 110 + address_family: + - afi: ipv4 + unicast: true + vrf: blue + adjacency: + min_adjacency: 50 + max_adjacency: 50 + areas: + - area_id: 25 + nssa: + default_information_originate: + metric: 25 + nssa_only: true + areas: + - area_id: "10" + nssa: + default_information_originate: + metric: 10 + timers: + throttle: + lsa: + first_delay: 12 + min_delay: 14 + max_delay: 16 + - process_id: 200 + address_family: + - afi: ipv4 + unicast: true + adjacency: + min_adjacency: 200 + max_adjacency: 200 + max_metric: + router_lsa: true + on_startup: + time: 100 + auto_cost: + reference_bandwidth: 4 + state: merged + + # Commands Fired: + # --------------- + # + # "commands": [ + # "router ospfv3 1", + # "max-metric router-lsa on-startup 110", + # "area 10 nssa default-information-originate metric 10", + # "address-family ipv4 unicast vrf blue", + # "adjacency stagger 50 50", + # "area 25 nssa default-information-originate metric 25 nssa-only", + # "exit-address-family", + # "router ospfv3 200", + # "auto-cost reference-bandwidth 4", + # "max-metric router-lsa on-startup 100", + # "address-family ipv4 unicast", + # "adjacency stagger 200 200", + # "exit-address-family" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + # Using overridden + + # Before state: + # ------------- + # + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Override provided OSPFV3 configuration + cisco.ios.ios_ospfv3: + config: + processes: + - process_id: 200 + max_metric: + router_lsa: true + on_startup: + time: 200 + address_family: + - afi: ipv4 + unicast: true + adjacency: + min_adjacency: 50 + max_adjacency: 50 + areas: + - area_id: 200 + nssa: + default_information_originate: + metric: 200 + nssa_only: true + areas: + - area_id: "10" + nssa: + default_information_originate: + metric: 10 + state: overridden + + # Commands Fired: + # --------------- + # + # "commands": [ + # "no router ospfv3 1", + # "router ospfv3 200", + # "no auto-cost reference-bandwidth 4", + # "max-metric router-lsa on-startup 200", + # "area 10 nssa default-information-originate metric 10", + # "address-family ipv4 unicast", + # "adjacency stagger 50 50", + # "area 200 nssa default-information-originate metric 200 nssa-only", + # "exit-address-family" + # ] + + # After state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 200 + # max-metric router-lsa on-startup 200 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast + # adjacency stagger 50 50 + # area 200 nssa default-information-originate metric 200 nssa-only + # exit-address-family + + # Using replaced + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Replaced provided OSPFV3 configuration + cisco.ios.ios_ospfv3: + config: + processes: + - process_id: 200 + max_metric: + router_lsa: true + on_startup: + time: 200 + address_family: + - afi: ipv4 + unicast: true + adjacency: + min_adjacency: 50 + max_adjacency: 50 + areas: + - area_id: 200 + nssa: + default_information_originate: + metric: 200 + nssa_only: true + areas: + - area_id: "10" + nssa: + default_information_originate: + metric: 10 + state: replaced + + # Commands Fired: + # --------------- + # "commands": [ + # "router ospfv3 200", + # "no auto-cost reference-bandwidth 4", + # "max-metric router-lsa on-startup 200", + # "area 10 nssa default-information-originate metric 10", + # "address-family ipv4 unicast", + # "adjacency stagger 50 50", + # "area 200 nssa default-information-originate metric 200 nssa-only", + # "exit-address-family" + # ] + + # After state: + # ------------- + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 200 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast + # adjacency stagger 50 50 + # area 200 nssa default-information-originate metric 200 nssa-only + # exit-address-family + + # Using Gathered + + # Before state: + # ------------- + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Gather OSPFV3 provided configurations + cisco.ios.ios_ospfv3: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": { + # "processes": [ + # { + # "address_family": [ + # { + # "adjacency": { + # "max_adjacency": 50, + # "min_adjacency": 50 + # }, + # "afi": "ipv4", + # "areas": [ + # { + # "area_id": "25", + # "nssa": { + # "default_information_originate": { + # "metric": 25, + # "nssa_only": true + # } + # } + # } + # ], + # "unicast": true, + # "vrf": "blue" + # } + # ], + # "areas": [ + # { + # "area_id": "10", + # "nssa": { + # "default_information_originate": { + # "metric": 10 + # } + # } + # } + # ], + # "max_metric": { + # "on_startup": { + # "time": 110 + # }, + # "router_lsa": true + # }, + # "process_id": 1 + # }, + # { + # "address_family": [ + # { + # "adjacency": { + # "max_adjacency": 200, + # "min_adjacency": 200 + # }, + # "afi": "ipv4", + # "unicast": true + # } + # ], + # "auto_cost": { + # "reference_bandwidth": 4 + # }, + # "max_metric": { + # "on_startup": { + # "time": 100 + # }, + # "router_lsa": true + # }, + # "process_id": 200 + # } + # ] + # } + + # After state: + # ------------ + # + # router-ios#sh running-config | section ^router ospfv3 + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_ospfv3: + config: + processes: + - process_id: 1 + max_metric: + router_lsa: true + on_startup: + time: 110 + address_family: + - afi: ipv4 + unicast: true + vrf: blue + adjacency: + min_adjacency: 50 + max_adjacency: 50 + areas: + - area_id: 25 + nssa: + default_information_originate: + metric: 25 + nssa_only: true + areas: + - area_id: "10" + nssa: + default_information_originate: + metric: 10 + timers: + throttle: + lsa: + first_delay: 12 + min_delay: 14 + max_delay: 16 + - process_id: 200 + address_family: + - afi: ipv4 + unicast: true + adjacency: + min_adjacency: 200 + max_adjacency: 200 + max_metric: + router_lsa: true + on_startup: + time: 100 + auto_cost: + reference_bandwidth: 4 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "router ospfv3 1", + # "max-metric router-lsa on-startup 110", + # "area 10 nssa default-information-originate metric 10", + # "address-family ipv4 unicast vrf blue", + # "adjacency stagger 50 50", + # "area 25 nssa default-information-originate metric 25 nssa-only", + # "exit-address-family", + # "router ospfv3 200", + # "auto-cost reference-bandwidth 4", + # "max-metric router-lsa on-startup 100", + # "address-family ipv4 unicast", + # "adjacency stagger 200 200", + # "exit-address-family" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # router ospfv3 1 + # max-metric router-lsa on-startup 110 + # area 10 nssa default-information-originate metric 10 + # ! + # address-family ipv4 unicast vrf blue + # adjacency stagger 50 50 + # area 25 nssa default-information-originate metric 25 nssa-only + # exit-address-family + # router ospfv3 200 + # max-metric router-lsa on-startup 100 + # auto-cost reference-bandwidth 4 + # ! + # address-family ipv4 unicast + # adjacency stagger 200 200 + # exit-address-family + + - name: Parse the provided configuration with the exisiting running configuration + cisco.ios.ios_ospfv3: + running_config: "{{ lookup('file', 'parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": { + # "processes": [ + # { + # "address_family": [ + # { + # "adjacency": { + # "max_adjacency": 50, + # "min_adjacency": 50 + # }, + # "afi": "ipv4", + # "areas": [ + # { + # "area_id": "25", + # "nssa": { + # "default_information_originate": { + # "metric": 25, + # "nssa_only": true + # } + # } + # } + # ], + # "unicast": true, + # "vrf": "blue" + # } + # ], + # "areas": [ + # { + # "area_id": "10", + # "nssa": { + # "default_information_originate": { + # "metric": 10 + # } + # } + # } + # ], + # "max_metric": { + # "on_startup": { + # "time": 110 + # }, + # "router_lsa": true + # }, + # "process_id": 1 + # } + # ] + # } + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ dictionary +
+
when changed +
The resulting configuration model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ dictionary +
+
always +
The configuration prior to the model invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['router ospfv3 1', 'address-family ipv4 unicast vrf blue', 'adjacency stagger 50 50']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst new file mode 100644 index 00000000..e39ba2ae --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_ping_module.rst @@ -0,0 +1,463 @@ +.. _cisco.ios.ios_ping_module: + + +****************** +cisco.ios.ios_ping +****************** + +**Tests reachability using ping from Cisco IOS network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- Tests reachability using ping from switch to a remote destination. +- For a general purpose network module, see the :ref:`net_ping ` module. +- For Windows targets, use the :ref:`win_ping ` module instead. +- For targets running Python, use the :ref:`ping ` module instead. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ count + +
+ integer +
+
+ +
Number of packets to send.
+
+
+ dest + +
+ string + / required +
+
+ +
The IP Address or hostname (resolvable by switch) of the remote node.
+
+
+ df_bit + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Set the DF bit.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ size + +
+ integer +
+
+ +
Size of packets to send.
+
+
+ source + +
+ string +
+
+ +
The source IP Address.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • absent
  • +
  • present ←
  • +
+
+
Determines if the expected result is success or fail.
+
+
+ vrf + +
+ string +
+
+ +
The VRF to use for forwarding.
+
+
+ + +Notes +----- + +.. note:: + - For a general purpose network module, see the :ref:`net_ping ` module. + - For Windows targets, use the :ref:`win_ping ` module instead. + - For targets running Python, use the :ref:`ping ` module instead. + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Test reachability to 10.10.10.10 using default vrf + cisco.ios.ios_ping: + dest: 10.10.10.10 + + - name: Test reachability to 10.20.20.20 using prod vrf + cisco.ios.ios_ping: + dest: 10.20.20.20 + vrf: prod + + - name: Test unreachability to 10.30.30.30 using default vrf + cisco.ios.ios_ping: + dest: 10.30.30.30 + state: absent + + - name: Test reachability to 10.40.40.40 using prod vrf and setting count and source + cisco.ios.ios_ping: + dest: 10.40.40.40 + source: loopback0 + vrf: prod + count: 20 + + - name: Test reachability to 10.50.50.50 using df-bit and size + cisco.ios.ios_ping: + dest: 10.50.50.50 + df_bit: true + size: 1400 + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
Show the command sent.
+
+
Sample:
+
['ping vrf prod 10.40.40.40 count 20 source loopback0']
+
+
+ packet_loss + +
+ string +
+
always +
Percentage of packets lost.
+
+
Sample:
+
0%
+
+
+ packets_rx + +
+ integer +
+
always +
Packets successfully received.
+
+
Sample:
+
20
+
+
+ packets_tx + +
+ integer +
+
always +
Packets successfully transmitted.
+
+
Sample:
+
20
+
+
+ rtt + +
+ dictionary +
+
always +
Show RTT stats.
+
+
Sample:
+
{'avg': 2, 'max': 8, 'min': 1}
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Jacob McGill (@jmcgill298) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_route_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_route_module.rst new file mode 100644 index 00000000..f893faf8 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_route_module.rst @@ -0,0 +1,640 @@ +.. _cisco.ios.ios_static_route_module: + + +************************** +cisco.ios.ios_static_route +************************** + +**(deprecated, removed after 2022-06-01) Manage static IP routes on Cisco IOS network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + +DEPRECATED +---------- +:Removed in collection release after 2022-06-01 +:Why: Newer and updated modules released with more functionality. +:Alternative: ios_static_routes + + + +Synopsis +-------- +- This module provides declarative management of static IP routes on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ admin_distance + +
+ string +
+
+ +
Admin distance of the static route.
+
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of static route definitions.
+
+
+ admin_distance + +
+ string +
+
+ +
Admin distance of the static route.
+
+
+ interface + +
+ string +
+
+ +
Interface of the static route.
+
+
+ mask + +
+ string +
+
+ +
Network prefix mask of the static route.
+
+
+ name + +
+ string +
+
+ +
Name of the static route
+

aliases: description
+
+
+ next_hop + +
+ string +
+
+ +
Next hop IP of the static route.
+
+
+ prefix + +
+ string + / required +
+
+ +
Network prefix of the static route.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
+
+
State of the static route configuration.
+
+
+ tag + +
+ string +
+
+ +
Set tag of the static route.
+
+
+ track + +
+ string +
+
+ +
Tracked item to depend on for the static route.
+
+
+ vrf + +
+ string +
+
+ +
VRF of the static route.
+
+
+ interface + +
+ string +
+
+ +
Interface of the static route.
+
+
+ mask + +
+ string +
+
+ +
Network prefix mask of the static route.
+
+
+ name + +
+ string +
+
+ +
Name of the static route
+

aliases: description
+
+
+ next_hop + +
+ string +
+
+ +
Next hop IP of the static route.
+
+
+ prefix + +
+ string +
+
+ +
Network prefix of the static route.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
State of the static route configuration.
+
+
+ tag + +
+ string +
+
+ +
Set tag of the static route.
+
+
+ track + +
+ string +
+
+ +
Tracked item to depend on for the static route.
+
+
+ vrf + +
+ string +
+
+ +
VRF of the static route.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure static route + cisco.ios.ios_static_route: + prefix: 192.168.2.0 + mask: 255.255.255.0 + next_hop: 10.0.0.1 + + - name: configure black hole in vrf blue depending on tracked item 10 + cisco.ios.ios_static_route: + prefix: 192.168.2.0 + mask: 255.255.255.0 + vrf: blue + interface: null0 + track: 10 + + - name: configure ultimate route with name and tag + cisco.ios.ios_static_route: + prefix: 192.168.2.0 + mask: 255.255.255.0 + interface: GigabitEthernet1 + name: hello world + tag: 100 + + - name: remove configuration + cisco.ios.ios_static_route: + prefix: 192.168.2.0 + mask: 255.255.255.0 + next_hop: 10.0.0.1 + state: absent + + - name: Add static route aggregates + cisco.ios.ios_static_route: + aggregate: + - {prefix: 172.16.32.0, mask: 255.255.255.0, next_hop: 10.0.0.8} + - {prefix: 172.16.33.0, mask: 255.255.255.0, next_hop: 10.0.0.8} + + - name: Remove static route aggregates + cisco.ios.ios_static_route: + aggregate: + - {prefix: 172.16.32.0, mask: 255.255.255.0, next_hop: 10.0.0.8} + - {prefix: 172.16.33.0, mask: 255.255.255.0, next_hop: 10.0.0.8} + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['ip route 192.168.2.0 255.255.255.0 10.0.0.1']
+
+

+ + +Status +------ + + +- This module will be removed in version . *[deprecated]* +- For more information see `DEPRECATED`_. + + +Authors +~~~~~~~ + +- Ricardo Carrillo Cruz (@rcarrillocruz) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_routes_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_routes_module.rst new file mode 100644 index 00000000..489f6a6c --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_static_routes_module.rst @@ -0,0 +1,1048 @@ +.. _cisco.ios.ios_static_routes_module: + + +*************************** +cisco.ios.ios_static_routes +*************************** + +**Static routes resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures and manages the static routes on IOS platforms. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of static route options
+
+
+ address_families + +
+ list + / elements=dictionary +
+
+ +
Address family to use for the static routes
+
+
+ afi + +
+ string + / required +
+
+
    Choices: +
  • ipv4
  • +
  • ipv6
  • +
+
+
Top level address family indicator.
+
+
+ routes + +
+ list + / elements=dictionary +
+
+ +
Configuring static route
+
+
+ dest + +
+ string + / required +
+
+ +
Destination prefix with its subnet mask
+
+
+ next_hops + +
+ list + / elements=dictionary +
+
+ +
next hop address or interface
+
+
+ dhcp + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Default gateway obtained from DHCP
+
+
+ distance_metric + +
+ integer +
+
+ +
Distance metric for this route
+
+
+ forward_router_address + +
+ string +
+
+ +
Forwarding router's address
+
+
+ global + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Next hop address is global
+
+
+ interface + +
+ string +
+
+ +
Interface for directly connected static routes
+
+
+ multicast + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
multicast route
+
+
+ name + +
+ string +
+
+ +
Specify name of the next hop
+
+
+ permanent + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
permanent route
+
+
+ tag + +
+ integer +
+
+ +
Set tag for this route
+
Refer to vendor documentation for valid values.
+
+
+ track + +
+ integer +
+
+ +
Install route depending on tracked item with tracked object number.
+
Tracking does not support multicast
+
Refer to vendor documentation for valid values.
+
+
+ topology + +
+ string +
+
+ +
Configure static route for a Topology Routing/Forwarding instance
+
NOTE, VRF and Topology can be used together only with Multicast and Topology should pre-exist before it can be used
+
+
+ vrf + +
+ string +
+
+ +
IP VPN Routing/Forwarding instance name.
+
NOTE, In case of IPV4/IPV6 VRF routing table should pre-exist before configuring.
+
NOTE, if the vrf information is not provided then the routes shall be configured under global vrf.
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show running-config | include ip route|ipv6 route.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • gathered
  • +
  • rendered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSv Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + + - name: Merge provided configuration with device configuration + cisco.ios.ios_static_routes: + config: + - vrf: blue + address_families: + - afi: ipv4 + routes: + - dest: 192.0.2.0/24 + next_hops: + - forward_router_address: 192.0.2.1 + name: merged_blue + tag: 50 + track: 150 + - address_families: + - afi: ipv4 + routes: + - dest: 198.51.100.0/24 + next_hops: + - forward_router_address: 198.51.101.1 + name: merged_route_1 + distance_metric: 110 + tag: 40 + multicast: true + - forward_router_address: 198.51.101.2 + name: merged_route_2 + distance_metric: 30 + - forward_router_address: 198.51.101.3 + name: merged_route_3 + - afi: ipv6 + routes: + - dest: 2001:DB8:0:3::/64 + next_hops: + - forward_router_address: 2001:DB8:0:3::2 + name: merged_v6 + tag: 105 + state: merged + + # Commands fired: + # --------------- + # ip route vrf blue 192.0.2.0 255.255.255.0 10.0.0.8 name merged_blue track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name merged_route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name merged_v6 tag 105 + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name merged_blue track 150 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name merged_route_3 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name merged_route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name merged_route_1 multicast + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name merged_v6 + + # Using replaced + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Replace provided configuration with device configuration + cisco.ios.ios_static_routes: + config: + - address_families: + - afi: ipv4 + routes: + - dest: 198.51.100.0/24 + next_hops: + - forward_router_address: 198.51.101.1 + name: replaced_route + distance_metric: 175 + tag: 70 + multicast: true + state: replaced + + # Commands fired: + # --------------- + # no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 name replaced_route track 150 tag 70 + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 175 name replaced_route track 150 tag 70 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6 + + # Using overridden + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Override provided configuration with device configuration + cisco.ios.ios_static_routes: + config: + - vrf: blue + address_families: + - afi: ipv4 + routes: + - dest: 192.0.2.0/24 + next_hops: + - forward_router_address: 192.0.2.1 + name: override_vrf + tag: 50 + track: 150 + state: overridden + + # Commands fired: + # --------------- + # no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # no ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 198.51.101.8 name test_vrf track 150 tag 50 + # no ipv6 route FD5D:12C9:2201:1::/64 FD5D:12C9:2202::2 name test_v6 tag 105 + # ip route vrf blue 192.0.2.0 255.255.255.0 198.51.101.4 name override_vrf track 150 tag 50 + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf blue 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name override_vrf track 150 + + # Using Deleted + + # Example 1: + # ---------- + # To delete the exact static routes, with all the static routes explicitly mentioned in want + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Delete provided configuration from the device configuration + cisco.ios.ios_static_routes: + config: + - vrf: ansible_temp_vrf + address_families: + - afi: ipv4 + routes: + - dest: 192.0.2.0/24 + next_hops: + - forward_router_address: 192.0.2.1 + name: test_vrf + tag: 50 + track: 150 + - address_families: + - afi: ipv4 + routes: + - dest: 198.51.100.0/24 + next_hops: + - forward_router_address: 198.51.101.1 + name: route_1 + distance_metric: 110 + tag: 40 + multicast: true + - forward_router_address: 198.51.101.2 + name: route_2 + distance_metric: 30 + - forward_router_address: 198.51.101.3 + name: route_3 + - afi: ipv6 + routes: + - dest: 2001:DB8:0:3::/64 + next_hops: + - forward_router_address: 2001:DB8:0:3::2 + name: test_v6 + tag: 105 + state: deleted + + # Commands fired: + # --------------- + # no ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 198.51.101.8 name test_vrf track 150 tag 50 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # no ipv6 route FD5D:12C9:2201:1::/64 FD5D:12C9:2202::2 name test_v6 tag 105 + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + + # Example 2: + # ---------- + # To delete the destination specific static routes + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Delete provided configuration from the device configuration + cisco.ios.ios_static_routes: + config: + - address_families: + - afi: ipv4 + routes: + - dest: 198.51.100.0/24 + state: deleted + + # Commands fired: + # --------------- + # no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6 + + + # Example 3: + # ---------- + # To delete the vrf specific static routes + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Delete provided configuration from the device configuration + cisco.ios.ios_static_routes: + config: + - vrf: ansible_temp_vrf + state: deleted + + # Commands fired: + # --------------- + # no ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6 + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured resource module attributes from each configured interface)" + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Delete ALL configured IOS static routes + cisco.ios.ios_static_routes: + state: deleted + + # Commands fired: + # --------------- + # no ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 tag 50 name test_vrf track 150 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # no ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 tag 40 name route_1 multicast + # no ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 tag 105 name test_v6 + + # After state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # + + # Using gathered + + # Before state: + # ------------- + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + - name: Gather listed static routes with provided configurations + cisco.ios.ios_static_routes: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "address_families": [ + # { + # "afi": "ipv4", + # "routes": [ + # { + # "dest": "192.0.2.0/24", + # "next_hops": [ + # { + # "forward_router_address": "192.0.2.1", + # "name": "test_vrf", + # "tag": 50, + # "track": 150 + # } + # ] + # } + # ] + # } + # ], + # "vrf": "ansible_temp_vrf" + # }, + # { + # "address_families": [ + # { + # "afi": "ipv6", + # "routes": [ + # { + # "dest": "2001:DB8:0:3::/64", + # "next_hops": [ + # { + # "forward_router_address": "2001:DB8:0:3::2", + # "name": "test_v6", + # "tag": 105 + # } + # ] + # } + # ] + # }, + # { + # "afi": "ipv4", + # "routes": [ + # { + # "dest": "198.51.100.0/24", + # "next_hops": [ + # { + # "distance_metric": 110, + # "forward_router_address": "198.51.101.1", + # "multicast": true, + # "name": "route_1", + # "tag": 40 + # }, + # { + # "distance_metric": 30, + # "forward_router_address": "198.51.101.2", + # "name": "route_2" + # }, + # { + # "forward_router_address": "198.51.101.3", + # "name": "route_3" + # } + # ] + # } + # ] + # } + # ] + # } + # ] + + # After state: + # ------------ + # + # vios#show running-config | include ip route|ipv6 route + # ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50 + # ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40 + # ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2 + # ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3 + # ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105 + + # Using rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_static_routes: + config: + - vrf: ansible_temp_vrf + address_families: + - afi: ipv4 + routes: + - dest: 192.0.2.0/24 + next_hops: + - forward_router_address: 192.0.2.1 + name: test_vrf + tag: 50 + track: 150 + - address_families: + - afi: ipv4 + routes: + - dest: 198.51.100.0/24 + next_hops: + - forward_router_address: 198.51.101.1 + name: route_1 + distance_metric: 110 + tag: 40 + multicast: true + - forward_router_address: 198.51.101.2 + name: route_2 + distance_metric: 30 + - forward_router_address: 198.51.101.3 + name: route_3 + - afi: ipv6 + routes: + - dest: 2001:DB8:0:3::/64 + next_hops: + - forward_router_address: 2001:DB8:0:3::2 + name: test_v6 + tag: 105 + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "ip route vrf ansible_temp_vrf 192.0.2.0 255.255.255.0 192.0.2.1 name test_vrf track 150 tag 50", + # "ip route 198.51.100.0 255.255.255.0 198.51.101.1 110 multicast name route_1 tag 40", + # "ip route 198.51.100.0 255.255.255.0 198.51.101.2 30 name route_2", + # "ip route 198.51.100.0 255.255.255.0 198.51.101.3 name route_3", + # "ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:3::2 name test_v6 tag 105" + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device
+
+
Sample:
+
['ip route vrf test 172.31.10.0 255.255.255.0 10.10.10.2 name new_test multicast']
+
+
+ gathered + +
+ list +
+
When state is gathered +
The configuration as structured data transformed for the running configuration fetched from remote host
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ parsed + +
+ list +
+
When state is parsed +
The configuration as structured data transformed for the value of running_config option
+
+
Sample:
+
The configuration returned will always be in the same format of the parameters above.
+
+
+ rendered + +
+ list +
+
When state is rendered +
The set of CLI commands generated from the value in config option
+
+
Sample:
+
['interface Ethernet1/1', 'mtu 1800']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_system_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_system_module.rst new file mode 100644 index 00000000..e384168a --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_system_module.rst @@ -0,0 +1,389 @@ +.. _cisco.ios.ios_system_module: + + +******************** +cisco.ios.ios_system +******************** + +**Manage the system attributes on Cisco IOS devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of node system attributes on Cisco IOS devices. It provides an option to configure host system parameters or remove those parameters from the device active configuration. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ domain_name + +
+ list + / elements=raw +
+
+ +
Configure the IP domain name on the remote device to the provided value. Value should be in the dotted name form and will be appended to the hostname to create a fully-qualified domain name.
+
+
+ domain_search + +
+ list + / elements=raw +
+
+ +
Provides the list of domain suffixes to append to the hostname for the purpose of doing name resolution. This argument accepts a list of names and will be reconciled with the current active configuration on the running node.
+
+
+ hostname + +
+ string +
+
+ +
Configure the device hostname parameter. This option takes an ASCII string value.
+
+
+ lookup_enabled + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Administrative control for enabling or disabling DNS lookups. When this argument is set to True, lookups are performed and when it is set to False, lookups are not performed.
+
+
+ lookup_source + +
+ string +
+
+ +
Provides one or more source interfaces to use for performing DNS lookups. The interface provided in lookup_source must be a valid interface configured on the device.
+
+
+ name_servers + +
+ list + / elements=raw +
+
+ +
List of DNS name servers by IP address to use to perform name resolution lookups. This argument accepts either a list of DNS servers See examples.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
State of the configuration values in the device's current active configuration. When set to present, the values should be configured in the device active configuration and when set to absent the values should not be in the device active configuration
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure hostname and domain name + cisco.ios.ios_system: + hostname: ios01 + domain_name: test.example.com + domain_search: + - ansible.com + - redhat.com + - cisco.com + + - name: remove configuration + cisco.ios.ios_system: + state: absent + + - name: configure DNS lookup sources + cisco.ios.ios_system: + lookup_source: MgmtEth0/0/CPU0/0 + lookup_enabled: yes + + - name: configure name servers + cisco.ios.ios_system: + name_servers: + - 8.8.8.8 + - 8.8.4.4 + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['hostname ios01', 'ip domain name test.example.com']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Peter Sprygada (@privateip) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_user_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_user_module.rst new file mode 100644 index 00000000..91ec51d3 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_user_module.rst @@ -0,0 +1,785 @@ +.. _cisco.ios.ios_user_module: + + +****************** +cisco.ios.ios_user +****************** + +**Manage the aggregate of local users on Cisco IOS device** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of the local usernames configured on network devices. It allows playbooks to manage either individual usernames or the aggregate of usernames in the current running config. It also supports purging usernames from the configuration that are not explicitly defined. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
The set of username objects to be configured on the remote Cisco IOS device. The list entries can either be the username or a hash of username and properties. This argument is mutually exclusive with the name argument.
+

aliases: users, collection
+
+
+ configured_password + +
+ string +
+
+ +
The password to be configured on the Cisco IOS device. The password needs to be provided in clear and it will be encrypted on the device. Please note that this option is not same as provider password.
+
+
+ hashed_password + +
+ dictionary +
+
+ +
This option allows configuring hashed passwords on Cisco IOS devices.
+
+
+ type + +
+ integer + / required +
+
+ +
Specifies the type of hash (e.g., 5 for MD5, 8 for PBKDF2, etc.)
+
For this to work, the device needs to support the desired hash type
+
+
+ value + +
+ string + / required +
+
+ +
The actual hashed password to be configured on the device
+
+
+ name + +
+ string + / required +
+
+ +
The username to be configured on the Cisco IOS device. This argument accepts a string value and is mutually exclusive with the aggregate argument. Please note that this option is not same as provider username.
+
+
+ nopassword + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Defines the username without assigning a password. This will allow the user to login to the system without being authenticated by a password.
+
+
+ password_type + +
+ string +
+
+
    Choices: +
  • secret
  • +
  • password
  • +
+
+
This argument determines whether a 'password' or 'secret' will be configured.
+
+
+ privilege + +
+ integer +
+
+ +
The privilege argument configures the privilege level of the user when logged into the system. This argument accepts integer values in the range of 1 to 15.
+
+
+ sshkey + +
+ list + / elements=string +
+
+ +
Specifies one or more SSH public key(s) to configure for the given username.
+
This argument accepts a valid SSH key value.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
+
+
Configures the state of the username definition as it relates to the device operational configuration. When set to present, the username(s) should be configured in the device active configuration and when set to absent the username(s) should not be in the device active configuration
+
+
+ update_password + +
+ string +
+
+
    Choices: +
  • on_create
  • +
  • always
  • +
+
+
Since passwords are encrypted in the device running config, this argument will instruct the module when to change the password. When set to always, the password will always be updated in the device and when set to on_create the password will be updated only if the username is created.
+
+
+ view + +
+ string +
+
+ +
Configures the view for the username in the device running configuration. The argument accepts a string value defining the view name. This argument does not check if the view has been configured on the device.
+

aliases: role
+
+
+ configured_password + +
+ string +
+
+ +
The password to be configured on the Cisco IOS device. The password needs to be provided in clear and it will be encrypted on the device. Please note that this option is not same as provider password.
+
+
+ hashed_password + +
+ dictionary +
+
+ +
This option allows configuring hashed passwords on Cisco IOS devices.
+
+
+ type + +
+ integer + / required +
+
+ +
Specifies the type of hash (e.g., 5 for MD5, 8 for PBKDF2, etc.)
+
For this to work, the device needs to support the desired hash type
+
+
+ value + +
+ string + / required +
+
+ +
The actual hashed password to be configured on the device
+
+
+ name + +
+ string +
+
+ +
The username to be configured on the Cisco IOS device. This argument accepts a string value and is mutually exclusive with the aggregate argument. Please note that this option is not same as provider username.
+
+
+ nopassword + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Defines the username without assigning a password. This will allow the user to login to the system without being authenticated by a password.
+
+
+ password_type + +
+ string +
+
+
    Choices: +
  • secret ←
  • +
  • password
  • +
+
+
This argument determines whether a 'password' or 'secret' will be configured.
+
+
+ privilege + +
+ integer +
+
+ +
The privilege argument configures the privilege level of the user when logged into the system. This argument accepts integer values in the range of 1 to 15.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ purge + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to consider the resource definition absolute. It will remove any previously configured usernames on the device with the exception of the `admin` user (the current defined set of users).
+
+
+ sshkey + +
+ list + / elements=string +
+
+ +
Specifies one or more SSH public key(s) to configure for the given username.
+
This argument accepts a valid SSH key value.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
Configures the state of the username definition as it relates to the device operational configuration. When set to present, the username(s) should be configured in the device active configuration and when set to absent the username(s) should not be in the device active configuration
+
+
+ update_password + +
+ string +
+
+
    Choices: +
  • on_create
  • +
  • always ←
  • +
+
+
Since passwords are encrypted in the device running config, this argument will instruct the module when to change the password. When set to always, the password will always be updated in the device and when set to on_create the password will be updated only if the username is created.
+
+
+ view + +
+ string +
+
+ +
Configures the view for the username in the device running configuration. The argument accepts a string value defining the view name. This argument does not check if the view has been configured on the device.
+

aliases: role
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: create a new user + cisco.ios.ios_user: + name: ansible + nopassword: true + sshkey: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" + state: present + + - name: create a new user with multiple keys + cisco.ios.ios_user: + name: ansible + sshkey: + - "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" + - "{{ lookup('file', '~/path/to/public_key') }}" + state: present + + - name: remove all users except admin + cisco.ios.ios_user: + purge: yes + + - name: remove all users except admin and these listed users + cisco.ios.ios_user: + aggregate: + - name: testuser1 + - name: testuser2 + - name: testuser3 + purge: yes + + - name: set multiple users to privilege level 15 + cisco.ios.ios_user: + aggregate: + - name: netop + - name: netend + privilege: 15 + state: present + + - name: set user view/role + cisco.ios.ios_user: + name: netop + view: network-operator + state: present + + - name: Change Password for User netop + cisco.ios.ios_user: + name: netop + configured_password: '{{ new_password }}' + update_password: always + state: present + + - name: Aggregate of users + cisco.ios.ios_user: + aggregate: + - name: ansibletest2 + - name: ansibletest3 + view: network-admin + + - name: Add a user specifying password type + cisco.ios.ios_user: + name: ansibletest4 + configured_password: '{{ new_password }}' + password_type: password + + - name: Add a user with MD5 hashed password + cisco.ios.ios_user: + name: ansibletest5 + hashed_password: + type: 5 + value: $3$8JcDilcYgFZi.yz4ApaqkHG2.8/ + + - name: Delete users with aggregate + cisco.ios.ios_user: + aggregate: + - name: ansibletest1 + - name: ansibletest2 + - name: ansibletest3 + state: absent + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['username ansible secret password', 'username admin secret admin']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Trishna Guha (@trishnaguha) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlan_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlan_module.rst new file mode 100644 index 00000000..a2f62d1e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlan_module.rst @@ -0,0 +1,539 @@ +.. _cisco.ios.ios_vlan_module: + + +****************** +cisco.ios.ios_vlan +****************** + +**(deprecated, removed after 2022-06-01) Manage VLANs on IOS network devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + +DEPRECATED +---------- +:Removed in collection release after 2022-06-01 +:Why: Newer and updated modules released with more functionality in Ansible 2.9 +:Alternative: ios_vlans + + + +Synopsis +-------- +- This module provides declarative management of VLANs on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ aggregate + +
+ list + / elements=dictionary +
+
+ +
List of VLANs definitions.
+
+
+ associated_interfaces + +
+ list + / elements=string +
+
+ +
This is a intent option and checks the operational state of the for given vlan name for associated interfaces. If the value in the associated_interfaces does not match with the operational state of vlan interfaces on device it will result in failure.
+
+
+ delay + +
+ integer +
+
+ +
Delay the play should wait to check for declarative intent params values.
+
+
+ interfaces + +
+ list + / elements=string +
+
+ +
List of interfaces that should be associated to the VLAN.
+
+
+ name + +
+ string +
+
+ +
Name of the VLAN.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present
  • +
  • absent
  • +
  • active
  • +
  • suspend
  • +
+
+
State of the VLAN configuration.
+
+
+ vlan_id + +
+ string + / required +
+
+ +
ID of the VLAN. Range 1-4094.
+
+
+ associated_interfaces + +
+ list + / elements=string +
+
+ +
This is a intent option and checks the operational state of the for given vlan name for associated interfaces. If the value in the associated_interfaces does not match with the operational state of vlan interfaces on device it will result in failure.
+
+
+ delay + +
+ integer +
+
+ Default:
10
+
+
Delay the play should wait to check for declarative intent params values.
+
+
+ interfaces + +
+ list + / elements=string +
+
+ +
List of interfaces that should be associated to the VLAN.
+
+
+ name + +
+ string +
+
+ +
Name of the VLAN.
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ purge + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Purge VLANs not defined in the aggregate parameter.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
  • active
  • +
  • suspend
  • +
+
+
State of the VLAN configuration.
+
+
+ vlan_id + +
+ integer +
+
+ +
ID of the VLAN. Range 1-4094.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.2 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: Create vlan + cisco.ios.ios_vlan: + vlan_id: 100 + name: test-vlan + state: present + + - name: Add interfaces to VLAN + cisco.ios.ios_vlan: + vlan_id: 100 + interfaces: + - GigabitEthernet0/0 + - GigabitEthernet0/1 + + - name: Check if interfaces is assigned to VLAN + cisco.ios.ios_vlan: + vlan_id: 100 + associated_interfaces: + - GigabitEthernet0/0 + - GigabitEthernet0/1 + + - name: Delete vlan + cisco.ios.ios_vlan: + vlan_id: 100 + state: absent + + - name: Add vlan using aggregate + cisco.ios.ios_vlan: + aggregate: + - {vlan_id: 100, name: test-vlan, interfaces: [GigabitEthernet0/1, GigabitEthernet0/2], + delay: 15, state: suspend} + - {vlan_id: 101, name: test-vlan, interfaces: GigabitEthernet0/3} + + - name: Move interfaces to a different VLAN + cisco.ios.ios_vlan: + vlan_id: 102 + interfaces: + - GigabitEthernet0/0 + - GigabitEthernet0/1 + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['vlan 100', 'name test-vlan']
+
+

+ + +Status +------ + + +- This module will be removed in version . *[deprecated]* +- For more information see `DEPRECATED`_. + + +Authors +~~~~~~~ + +- Trishna Guha (@trishnaguha) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst new file mode 100644 index 00000000..f040d488 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vlans_module.rst @@ -0,0 +1,883 @@ +.. _cisco.ios.ios_vlans_module: + + +******************* +cisco.ios.ios_vlans +******************* + +**VLANs resource module** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of VLANs on Cisco IOS network devices. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ list + / elements=dictionary +
+
+ +
A dictionary of VLANs options
+
+
+ mtu + +
+ integer +
+
+ +
VLAN Maximum Transmission Unit.
+
Refer to vendor documentation for valid values.
+
+
+ name + +
+ string +
+
+ +
Ascii name of the VLAN.
+
NOTE, name should not be named/appended with default as it is reserved for device default vlans.
+
+
+ remote_span + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Configure as Remote SPAN VLAN
+
+
+ shutdown + +
+ string +
+
+
    Choices: +
  • enabled
  • +
  • disabled
  • +
+
+
Shutdown VLAN switching.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • active
  • +
  • suspend
  • +
+
+
Operational state of the VLAN
+
+
+ vlan_id + +
+ integer + / required +
+
+ +
ID of the VLAN. Range 1-4094
+
+
+ running_config + +
+ string +
+
+ +
This option is used only with state parsed.
+
The value of this option should be the output received from the IOS device by executing the command show vlan.
+
The state parsed reads the configuration from 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 parsed key within the result.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • merged ←
  • +
  • replaced
  • +
  • overridden
  • +
  • deleted
  • +
  • rendered
  • +
  • gathered
  • +
  • parsed
  • +
+
+
The state the configuration should be left in
+
The states rendered, gathered and parsed does not perform any change on the device.
+
The state rendered will transform the configuration in config option to platform specific CLI commands which will be returned in the rendered key within the result. For state rendered active connection to remote host is not required.
+
The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result.
+
The state parsed reads the configuration from running_config option and transforms it into JSON format as per the resource module parameters and the value is returned in the parsed key within the result. The value of running_config option should be the same format as the output of command show running-config | include ip route|ipv6 route executed on device. For state parsed active connection to remote host is not required.
+
+
+ + +Notes +----- + +.. note:: + - Tested against Cisco IOSl2 device with Version 15.2 on VIRL. + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + + - name: Merge provided configuration with device configuration + cisco.ios.ios_vlans: + config: + - name: Vlan_10 + vlan_id: 10 + state: active + shutdown: disabled + remote_span: 10 + - name: Vlan_20 + vlan_id: 20 + mtu: 610 + state: active + shutdown: enabled + - name: Vlan_30 + vlan_id: 30 + state: suspend + shutdown: enabled + state: merged + + # After state: + # ------------ + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + # Using overridden + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + - name: Override device configuration of all VLANs with provided configuration + cisco.ios.ios_vlans: + config: + - name: Vlan_10 + vlan_id: 10 + mtu: 1000 + state: overridden + + # After state: + # ------------ + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 10 Vlan_10 active + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 10 enet 100010 1000 - - - - - 0 0 + + # Using replaced + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + - name: Replaces device configuration of listed VLANs with provided configuration + cisco.ios.ios_vlans: + config: + - vlan_id: 20 + name: Test_VLAN20 + mtu: 700 + shutdown: disabled + - vlan_id: 30 + name: Test_VLAN30 + mtu: 1000 + state: replaced + + # After state: + # ------------ + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 Test_VLAN20 active + # 30 Test_VLAN30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 700 - - - - - 0 0 + # 30 enet 100030 1000 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + # Using deleted + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + - name: Delete attributes of given VLANs + cisco.ios.ios_vlans: + config: + - vlan_id: 10 + - vlan_id: 20 + state: deleted + + # After state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + + # Using Deleted without any config passed + #"(NOTE: This will delete all of configured vlans attributes)" + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + - name: Delete attributes of ALL VLANs + cisco.ios.ios_vlans: + state: deleted + + # After state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + + # Using Gathered + + # Before state: + # ------------- + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + - name: Gather listed vlans with provided configurations + cisco.ios.ios_vlans: + config: + state: gathered + + # Module Execution Result: + # ------------------------ + # + # "gathered": [ + # { + # "mtu": 1500, + # "name": "default", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 1 + # }, + # { + # "mtu": 1500, + # "name": "VLAN0010", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 10 + # }, + # { + # "mtu": 1500, + # "name": "VLAN0020", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 20 + # }, + # { + # "mtu": 1500, + # "name": "VLAN0030", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 30 + # }, + # { + # "mtu": 1500, + # "name": "fddi-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1002 + # }, + # { + # "mtu": 1500, + # "name": "token-ring-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1003 + # }, + # { + # "mtu": 1500, + # "name": "fddinet-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1004 + # }, + # { + # "mtu": 1500, + # "name": "trnet-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1005 + # } + # ] + + # After state: + # ------------ + # + # vios_l2#show vlan + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 610 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + # + # Remote SPAN VLANs + # ------------------------------------------------------------------------------ + # 10 + + # Using Rendered + + - name: Render the commands for provided configuration + cisco.ios.ios_vlans: + config: + - name: Vlan_10 + vlan_id: 10 + state: active + shutdown: disabled + remote_span: 10 + - name: Vlan_20 + vlan_id: 20 + mtu: 610 + state: active + shutdown: enabled + - name: Vlan_30 + vlan_id: 30 + state: suspend + shutdown: enabled + state: rendered + + # Module Execution Result: + # ------------------------ + # + # "rendered": [ + # "vlan 10", + # "name Vlan_10", + # "state active", + # "remote-span", + # "no shutdown", + # "vlan 20", + # "name Vlan_20", + # "state active", + # "mtu 610", + # "shutdown", + # "vlan 30", + # "name Vlan_30", + # "state suspend", + # "shutdown" + # ] + + # Using Parsed + + # File: parsed.cfg + # ---------------- + # + # VLAN Name Status Ports + # ---- -------------------------------- --------- ------------------------------- + # 1 default active Gi0/1, Gi0/2 + # 10 vlan_10 active + # 20 vlan_20 act/lshut + # 30 vlan_30 sus/lshut + # 1002 fddi-default act/unsup + # 1003 token-ring-default act/unsup + # 1004 fddinet-default act/unsup + # 1005 trnet-default act/unsup + # + # VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 + # ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ + # 1 enet 100001 1500 - - - - - 0 0 + # 10 enet 100010 1500 - - - - - 0 0 + # 20 enet 100020 1500 - - - - - 0 0 + # 30 enet 100030 1500 - - - - - 0 0 + # 1002 fddi 101002 1500 - - - - - 0 0 + # 1003 tr 101003 1500 - - - - - 0 0 + # 1004 fdnet 101004 1500 - - - ieee - 0 0 + # 1005 trnet 101005 1500 - - - ibm - 0 0 + + - name: Parse the commands for provided configuration + cisco.ios.ios_vlans: + running_config: "{{ lookup('file', './parsed.cfg') }}" + state: parsed + + # Module Execution Result: + # ------------------------ + # + # "parsed": [ + # { + # "mtu": 1500, + # "name": "default", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 1 + # }, + # { + # "mtu": 1500, + # "name": "vlan_10", + # "shutdown": "disabled", + # "state": "active", + # "vlan_id": 10 + # }, + # { + # "mtu": 1500, + # "name": "vlan_20", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 20 + # }, + # { + # "mtu": 1500, + # "name": "vlan_30", + # "shutdown": "enabled", + # "state": "suspend", + # "vlan_id": 30 + # }, + # { + # "mtu": 1500, + # "name": "fddi-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1002 + # }, + # { + # "mtu": 1500, + # "name": "token-ring-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1003 + # }, + # { + # "mtu": 1500, + # "name": "fddinet-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1004 + # }, + # { + # "mtu": 1500, + # "name": "trnet-default", + # "shutdown": "enabled", + # "state": "active", + # "vlan_id": 1005 + # } + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ list +
+
when changed +
The configuration as structured data after module completion.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ before + +
+ list +
+
always +
The configuration as structured data prior to module invocation.
+
+
Sample:
+
The configuration returned will always be in the same format + of the parameters above.
+
+
+ commands + +
+ list +
+
always +
The set of commands pushed to the remote device.
+
+
Sample:
+
['vlan 20', 'name vlan_20', 'mtu 600', 'remote-span']
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Sumit Jaiswal (@justjais) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst new file mode 100644 index 00000000..808a7f2d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/docs/cisco.ios.ios_vrf_module.rst @@ -0,0 +1,690 @@ +.. _cisco.ios.ios_vrf_module: + + +***************** +cisco.ios.ios_vrf +***************** + +**Manage the collection of VRF definitions on Cisco IOS devices** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module provides declarative management of VRF definitions on Cisco IOS devices. It allows playbooks to manage individual or the entire VRF collection. It also supports purging VRF definitions from the configuration that are not explicitly defined. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ associated_interfaces + +
+ list + / elements=string +
+
+ +
This is a intent option and checks the operational state of the for given vrf name for associated interfaces. If the value in the associated_interfaces does not match with the operational state of vrf interfaces on device it will result in failure.
+
+
+ delay + +
+ integer +
+
+ Default:
10
+
+
Time in seconds to wait before checking for the operational state on remote device.
+
+
+ description + +
+ string +
+
+ +
Provides a short description of the VRF definition in the current active configuration. The VRF definition value accepts alphanumeric characters used to provide additional information about the VRF.
+
+
+ interfaces + +
+ list + / elements=string +
+
+ +
Identifies the set of interfaces that should be configured in the VRF. Interfaces must be routed interfaces in order to be placed into a VRF.
+
+
+ name + +
+ string +
+
+ +
The name of the VRF definition to be managed on the remote IOS device. The VRF definition name is an ASCII string name used to uniquely identify the VRF. This argument is mutually exclusive with the vrfs argument
+
+
+ provider + +
+ dictionary +
+
+ +
Deprecated
+
Starting with Ansible 2.5 we recommend using connection: network_cli.
+
For more information please see the IOS Platform Options guide.
+

+
A dict object containing connection details.
+
+
+ auth_pass + +
+ string +
+
+ +
Specifies the password to use if required to enter privileged mode on the remote device. If authorize is false, then this argument does nothing. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTH_PASS will be used instead.
+
+
+ authorize + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to enter privileged mode on the remote device before sending any commands. If not specified, the device will attempt to execute all commands in non-privileged mode. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_AUTHORIZE will be used instead.
+
+
+ host + +
+ string +
+
+ +
Specifies the DNS host name or address for connecting to the remote device over the specified transport. The value of host is used as the destination address for the transport.
+
+
+ password + +
+ string +
+
+ +
Specifies the password to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_PASSWORD will be used instead.
+
+
+ port + +
+ integer +
+
+ +
Specifies the port to use when building the connection to the remote device.
+
+
+ ssh_keyfile + +
+ path +
+
+ +
Specifies the SSH key to use to authenticate the connection to the remote device. This value is the path to the key used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_SSH_KEYFILE will be used instead.
+
+
+ timeout + +
+ integer +
+
+ +
Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands. If the timeout is exceeded before the operation is completed, the module will error.
+
+
+ username + +
+ string +
+
+ +
Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate the SSH session. If the value is not specified in the task, the value of environment variable ANSIBLE_NET_USERNAME will be used instead.
+
+
+ purge + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Instructs the module to consider the VRF definition absolute. It will remove any previously configured VRFs on the device.
+
+
+ rd + +
+ string +
+
+ +
The router-distinguisher value uniquely identifies the VRF to routing processes on the remote IOS system. The RD value takes the form of A:B where A and B are both numeric values.
+
+
+ route_both + +
+ list + / elements=string +
+
+ +
Adds an export and import list of extended route target communities to the VRF.
+
+
+ route_both_ipv4 + +
+ list + / elements=string +
+
+ +
Adds an export and import list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ route_both_ipv6 + +
+ list + / elements=string +
+
+ +
Adds an export and import list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ route_export + +
+ list + / elements=string +
+
+ +
Adds an export list of extended route target communities to the VRF.
+
+
+ route_export_ipv4 + +
+ list + / elements=string +
+
+ +
Adds an export list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ route_export_ipv6 + +
+ list + / elements=string +
+
+ +
Adds an export list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ route_import + +
+ list + / elements=string +
+
+ +
Adds an import list of extended route target communities to the VRF.
+
+
+ route_import_ipv4 + +
+ list + / elements=string +
+
+ +
Adds an import list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ route_import_ipv6 + +
+ list + / elements=string +
+
+ +
Adds an import list of extended route target communities in address-family configuration submode to the VRF.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • present ←
  • +
  • absent
  • +
+
+
Configures the state of the VRF definition as it relates to the device operational configuration. When set to present, the VRF should be configured in the device active configuration and when set to absent the VRF should not be in the device active configuration
+
+
+ vrfs + +
+ list + / elements=raw +
+
+ +
The set of VRF definition objects to be configured on the remote IOS device. Ths list entries can either be the VRF name or a hash of VRF definitions and attributes. This argument is mutually exclusive with the name argument.
+
+
+ + +Notes +----- + +.. note:: + - Tested against IOS 15.6 + - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` + - For more information on using Ansible to manage Cisco devices see the `Cisco integration page `_. + + + +Examples +-------- + +.. code-block:: yaml + + - name: configure a vrf named management + cisco.ios.ios_vrf: + name: management + description: oob mgmt vrf + interfaces: + - Management1 + + - name: remove a vrf named test + cisco.ios.ios_vrf: + name: test + state: absent + + - name: configure set of VRFs and purge any others + cisco.ios.ios_vrf: + vrfs: + - red + - blue + - green + purge: yes + + - name: Creates a list of import RTs for the VRF with the same parameters + cisco.ios.ios_vrf: + name: test_import + rd: 1:100 + route_import: + - 1:100 + - 3:100 + + - name: Creates a list of import RTs in address-family configuration submode for the + VRF with the same parameters + cisco.ios.ios_vrf: + name: test_import_ipv4 + rd: 1:100 + route_import_ipv4: + - 1:100 + - 3:100 + + - name: Creates a list of import RTs in address-family configuration submode for the + VRF with the same parameters + cisco.ios.ios_vrf: + name: test_import_ipv6 + rd: 1:100 + route_import_ipv6: + - 1:100 + - 3:100 + + - name: Creates a list of export RTs for the VRF with the same parameters + cisco.ios.ios_vrf: + name: test_export + rd: 1:100 + route_export: + - 1:100 + - 3:100 + + - name: Creates a list of export RTs in address-family configuration submode for the + VRF with the same parameters + cisco.ios.ios_vrf: + name: test_export_ipv4 + rd: 1:100 + route_export_ipv4: + - 1:100 + - 3:100 + + - name: Creates a list of export RTs in address-family configuration submode for the + VRF with the same parameters + cisco.ios.ios_vrf: + name: test_export_ipv6 + rd: 1:100 + route_export_ipv6: + - 1:100 + - 3:100 + + - name: Creates a list of import and export route targets for the VRF with the same + parameters + cisco.ios.ios_vrf: + name: test_both + rd: 1:100 + route_both: + - 1:100 + - 3:100 + + - name: Creates a list of import and export route targets in address-family configuration + submode for the VRF with the same parameters + cisco.ios.ios_vrf: + name: test_both_ipv4 + rd: 1:100 + route_both_ipv4: + - 1:100 + - 3:100 + + - name: Creates a list of import and export route targets in address-family configuration + submode for the VRF with the same parameters + cisco.ios.ios_vrf: + name: test_both_ipv6 + rd: 1:100 + route_both_ipv6: + - 1:100 + - 3:100 + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ commands + +
+ list +
+
always +
The list of configuration mode commands to send to the device
+
+
Sample:
+
['vrf definition ansible', 'description management vrf', {'rd': '1:100'}]
+
+
+ delta + +
+ string +
+
always +
The time elapsed to perform all operations
+
+
Sample:
+
0:00:10.469466
+
+
+ end + +
+ string +
+
always +
The time the job ended
+
+
Sample:
+
2016-11-16 10:38:25.595612
+
+
+ start + +
+ string +
+
always +
The time the job started
+
+
Sample:
+
2016-11-16 10:38:15.126146
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Peter Sprygada (@privateip) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/meta/runtime.yml b/collections-debian-merged/ansible_collections/cisco/ios/meta/runtime.yml new file mode 100644 index 00000000..4623fd19 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/meta/runtime.yml @@ -0,0 +1,232 @@ +--- +requires_ansible: '>=2.9.10' +plugin_routing: + action: + ios_acl_interfaces: + redirect: cisco.ios.ios + acl_interfaces: + redirect: cisco.ios.ios + ios_acls: + redirect: cisco.ios.ios + acls: + redirect: cisco.ios.ios + ios_banner: + redirect: cisco.ios.ios + banner: + redirect: cisco.ios.ios + ios_bgp: + redirect: cisco.ios.ios + bgp: + redirect: cisco.ios.ios + ios_bgp_global: + redirect: cisco.ios.ios + bgp_global: + redirect: cisco.ios.ios + ios_command: + redirect: cisco.ios.ios + command: + redirect: cisco.ios.ios + ios_config: + redirect: cisco.ios.ios + config: + redirect: cisco.ios.ios + ios_facts: + redirect: cisco.ios.ios + facts: + redirect: cisco.ios.ios + ios_interface: + redirect: cisco.ios.ios + interface: + redirect: cisco.ios.ios + ios_interfaces: + redirect: cisco.ios.ios + interfaces: + redirect: cisco.ios.ios + ios_l2_interface: + redirect: cisco.ios.ios + l2_interface: + redirect: cisco.ios.ios + ios_l2_interfaces: + redirect: cisco.ios.ios + l2_interfaces: + redirect: cisco.ios.ios + ios_l3_interface: + redirect: cisco.ios.ios + l3_interface: + redirect: cisco.ios.ios + ios_l3_interfaces: + redirect: cisco.ios.ios + l3_interfaces: + redirect: cisco.ios.ios + ios_lacp: + redirect: cisco.ios.ios + lacp: + redirect: cisco.ios.ios + ios_lacp_interfaces: + redirect: cisco.ios.ios + lacp_interfaces: + redirect: cisco.ios.ios + ios_lag_interfaces: + redirect: cisco.ios.ios + lag_interfaces: + redirect: cisco.ios.ios + ios_linkagg: + redirect: cisco.ios.ios + linkagg: + redirect: cisco.ios.ios + ios_lldp: + redirect: cisco.ios.ios + lldp: + redirect: cisco.ios.ios + ios_lldp_global: + redirect: cisco.ios.ios + lldp_global: + redirect: cisco.ios.ios + ios_lldp_interfaces: + redirect: cisco.ios.ios + lldp_interfaces: + redirect: cisco.ios.ios + ios_logging: + redirect: cisco.ios.ios + logging: + redirect: cisco.ios.ios + ios_ntp: + redirect: cisco.ios.ios + ntp: + redirect: cisco.ios.ios + ios_ospfv2: + redirect: cisco.ios.ios + ospfv2: + redirect: cisco.ios.ios + ios_ping: + redirect: cisco.ios.ios + ping: + redirect: cisco.ios.ios + ios_static_route: + redirect: cisco.ios.ios + static_route: + redirect: cisco.ios.ios + ios_static_routes: + redirect: cisco.ios.ios + static_routes: + redirect: cisco.ios.ios + ios_system: + redirect: cisco.ios.ios + system: + redirect: cisco.ios.ios + ios_user: + redirect: cisco.ios.ios + user: + redirect: cisco.ios.ios + ios_vlan: + redirect: cisco.ios.ios + vlan: + redirect: cisco.ios.ios + ios_vlans: + redirect: cisco.ios.ios + vlans: + redirect: cisco.ios.ios + ios_vrf: + redirect: cisco.ios.ios + vrf: + redirect: cisco.ios.ios + modules: + acl_interfaces: + redirect: cisco.ios.ios_acl_interfaces + acls: + redirect: cisco.ios.ios_acls + banner: + redirect: cisco.ios.ios_banner + bgp: + redirect: cisco.ios.ios_bgp + bgp_global: + redirect: cisco.ios.ios_bgp_global + command: + redirect: cisco.ios.ios_command + config: + redirect: cisco.ios.ios_config + facts: + redirect: cisco.ios.ios_facts + interface: + redirect: cisco.ios.ios_interface + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + ios_interface: + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + interfaces: + redirect: cisco.ios.ios_interfaces + l2_interface: + redirect: cisco.ios.ios_l2_interface + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + ios_l2_interface: + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + l2_interfaces: + redirect: cisco.ios.ios_l2_interfaces + l3_interface: + redirect: cisco.ios.ios_l3_interface + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + ios_l3_interface: + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + l3_interfaces: + redirect: cisco.ios.ios_l3_interfaces + lacp: + redirect: cisco.ios.ios_lacp + lacp_interfaces: + redirect: cisco.ios.ios_lacp_interfaces + lag_interfaces: + redirect: cisco.ios.ios_lag_interfaces + linkagg: + redirect: cisco.ios.ios_linkagg + lldp: + redirect: cisco.ios.ios_lldp + lldp_global: + redirect: cisco.ios.ios_lldp_global + lldp_interfaces: + redirect: cisco.ios.ios_lldp_interfaces + logging: + redirect: cisco.ios.ios_logging + ntp: + redirect: cisco.ios.ios_ntp + ospfv2: + redirect: cisco.ios.ios_ospfv2 + ping: + redirect: cisco.ios.ios_ping + static_route: + redirect: cisco.ios.ios_static_route + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + ios_static_route: + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + static_routes: + redirect: cisco.ios.ios_static_routes + system: + redirect: cisco.ios.ios_system + user: + redirect: cisco.ios.ios_user + vlan: + redirect: cisco.ios.ios_vlan + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + ios_vlan: + deprecation: + removal_date: '2022-06-01' + warning_text: See the plugin documentation for more details + vlans: + redirect: cisco.ios.ios_vlans + vrf: + redirect: cisco.ios.ios_vrf diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/action/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/action/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/action/ios.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/action/ios.py new file mode 100644 index 00000000..6e06c47f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/action/ios.py @@ -0,0 +1,135 @@ +# +# (c) 2016 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 . +# +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +import sys +import copy + +from ansible_collections.ansible.netcommon.plugins.action.network import ( + ActionModule as ActionNetworkModule, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + load_provider, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.ios import ( + ios_provider_spec, +) +from ansible.utils.display import Display + +display = Display() + + +class ActionModule(ActionNetworkModule): + def run(self, tmp=None, task_vars=None): + del tmp # tmp no longer has any effect + + module_name = self._task.action.split(".")[-1] + self._config_module = ( + True if module_name in ["ios_config", "config"] else False + ) + persistent_connection = self._play_context.connection.split(".")[-1] + warnings = [] + + if persistent_connection == "network_cli": + provider = self._task.args.get("provider", {}) + if any(provider.values()): + display.warning( + "provider is unnecessary when using network_cli and will be ignored" + ) + del self._task.args["provider"] + elif self._play_context.connection == "local": + provider = load_provider(ios_provider_spec, self._task.args) + pc = copy.deepcopy(self._play_context) + pc.connection = "ansible.netcommon.network_cli" + pc.network_os = "cisco.ios.ios" + pc.remote_addr = provider["host"] or self._play_context.remote_addr + pc.port = int(provider["port"] or self._play_context.port or 22) + pc.remote_user = ( + provider["username"] or self._play_context.connection_user + ) + pc.password = provider["password"] or self._play_context.password + pc.private_key_file = ( + provider["ssh_keyfile"] or self._play_context.private_key_file + ) + pc.become = provider["authorize"] or False + if pc.become: + pc.become_method = "enable" + pc.become_pass = provider["auth_pass"] + + connection = self._shared_loader_obj.connection_loader.get( + "ansible.netcommon.persistent", + pc, + sys.stdin, + task_uuid=self._task._uuid, + ) + + # TODO: Remove below code after ansible minimal is cut out + if connection is None: + pc.connection = "network_cli" + pc.network_os = "ios" + connection = self._shared_loader_obj.connection_loader.get( + "persistent", pc, sys.stdin, task_uuid=self._task._uuid + ) + + display.vvv( + "using connection plugin %s (was local)" % pc.connection, + pc.remote_addr, + ) + + command_timeout = ( + int(provider["timeout"]) + if provider["timeout"] + else connection.get_option("persistent_command_timeout") + ) + connection.set_options( + direct={"persistent_command_timeout": command_timeout} + ) + + socket_path = connection.run() + display.vvvv("socket_path: %s" % socket_path, pc.remote_addr) + if not socket_path: + return { + "failed": True, + "msg": "unable to open shell. Please see: " + + "https://docs.ansible.com/ansible/network_debug_troubleshooting.html#unable-to-open-shell", + } + + task_vars["ansible_socket"] = socket_path + warnings.append( + [ + "connection local support for this module is deprecated and will be removed in version 2.14, use connection %s" + % pc.connection + ] + ) + else: + return { + "failed": True, + "msg": "Connection type %s is not valid for this module" + % self._play_context.connection, + } + + result = super(ActionModule, self).run(task_vars=task_vars) + if warnings: + if "warnings" in result: + result["warnings"].extend(warnings) + else: + result["warnings"] = warnings + return result diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/ios.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/ios.py new file mode 100644 index 00000000..e816389a --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/cliconf/ios.py @@ -0,0 +1,464 @@ +# +# (c) 2017 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 . +# +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +DOCUMENTATION = """ +author: Ansible Networking Team +cliconf: ios +short_description: Use ios cliconf to run command on Cisco IOS platform +description: +- This ios plugin provides low level abstraction apis for sending and receiving CLI + commands from Cisco IOS network devices. +version_added: 1.0.0 +""" + +import re +import time +import json + +from ansible.errors import AnsibleConnectionFailure +from ansible.module_utils._text import to_text +from ansible.module_utils.common._collections_compat import Mapping +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.config import ( + NetworkConfig, + dumps, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible.plugins.cliconf import CliconfBase, enable_mode + + +class Cliconf(CliconfBase): + @enable_mode + def get_config(self, source="running", flags=None, format=None): + if source not in ("running", "startup"): + raise ValueError( + "fetching configuration from %s is not supported" % source + ) + + if format: + raise ValueError( + "'format' value %s is not supported for get_config" % format + ) + + if not flags: + flags = [] + if source == "running": + cmd = "show running-config " + else: + cmd = "show startup-config " + + cmd += " ".join(to_list(flags)) + cmd = cmd.strip() + + return self.send_command(cmd) + + def get_diff( + self, + candidate=None, + running=None, + diff_match="line", + diff_ignore_lines=None, + path=None, + diff_replace="line", + ): + """ + Generate diff between candidate and running configuration. If the + remote host supports onbox diff capabilities ie. supports_onbox_diff in that case + candidate and running configurations are not required to be passed as argument. + In case if onbox diff capability is not supported candidate argument is mandatory + and running argument is optional. + :param candidate: The configuration which is expected to be present on remote host. + :param running: The base configuration which is used to generate diff. + :param diff_match: Instructs how to match the candidate configuration with current device configuration + Valid values are 'line', 'strict', 'exact', 'none'. + 'line' - commands are matched line by line + 'strict' - command lines are matched with respect to position + 'exact' - command lines must be an equal match + 'none' - will not compare the candidate configuration with the running configuration + :param diff_ignore_lines: Use this argument to specify one or more lines that should be + ignored during the diff. This is used for lines in the configuration + that are automatically updated by the system. This argument takes + a list of regular expressions or exact line matches. + :param path: The ordered set of parents that uniquely identify the section or hierarchy + the commands should be checked against. If the parents argument + is omitted, the commands are checked against the set of top + level or global commands. + :param diff_replace: Instructs on the way to perform the configuration on the device. + If the replace argument is set to I(line) then the modified lines are + pushed to the device in configuration mode. If the replace argument is + set to I(block) then the entire command block is pushed to the device in + configuration mode if any line is not correct. + :return: Configuration diff in json format. + { + 'config_diff': '', + 'banner_diff': {} + } + + """ + diff = {} + device_operations = self.get_device_operations() + option_values = self.get_option_values() + + if candidate is None and device_operations["supports_generate_diff"]: + raise ValueError( + "candidate configuration is required to generate diff" + ) + + if diff_match not in option_values["diff_match"]: + raise ValueError( + "'match' value %s in invalid, valid values are %s" + % (diff_match, ", ".join(option_values["diff_match"])) + ) + + if diff_replace not in option_values["diff_replace"]: + raise ValueError( + "'replace' value %s in invalid, valid values are %s" + % (diff_replace, ", ".join(option_values["diff_replace"])) + ) + + # prepare candidate configuration + candidate_obj = NetworkConfig(indent=1) + want_src, want_banners = self._extract_banners(candidate) + candidate_obj.load(want_src) + + if running and diff_match != "none": + # running configuration + have_src, have_banners = self._extract_banners(running) + running_obj = NetworkConfig( + indent=1, contents=have_src, ignore_lines=diff_ignore_lines + ) + configdiffobjs = candidate_obj.difference( + running_obj, path=path, match=diff_match, replace=diff_replace + ) + + else: + configdiffobjs = candidate_obj.items + have_banners = {} + + diff["config_diff"] = ( + dumps(configdiffobjs, "commands") if configdiffobjs else "" + ) + banners = self._diff_banners(want_banners, have_banners) + diff["banner_diff"] = banners if banners else {} + return diff + + @enable_mode + def edit_config( + self, candidate=None, commit=True, replace=None, comment=None + ): + resp = {} + operations = self.get_device_operations() + self.check_edit_config_capability( + operations, candidate, commit, replace, comment + ) + + results = [] + requests = [] + if commit: + self.send_command("configure terminal") + for line in to_list(candidate): + if not isinstance(line, Mapping): + line = {"command": line} + + cmd = line["command"] + if cmd != "end" and cmd[0] != "!": + results.append(self.send_command(**line)) + requests.append(cmd) + + self.send_command("end") + else: + raise ValueError("check mode is not supported") + + resp["request"] = requests + resp["response"] = results + return resp + + def edit_macro( + self, candidate=None, commit=True, replace=None, comment=None + ): + """ + ios_config: + lines: "{{ macro_lines }}" + parents: "macro name {{ macro_name }}" + after: '@' + match: line + replace: block + """ + resp = {} + operations = self.get_device_operations() + self.check_edit_config_capability( + operations, candidate, commit, replace, comment + ) + + results = [] + requests = [] + if commit: + commands = "" + self.send_command("config terminal") + time.sleep(0.1) + # first item: macro command + commands += candidate.pop(0) + "\n" + multiline_delimiter = candidate.pop(-1) + for line in candidate: + commands += " " + line + "\n" + commands += multiline_delimiter + "\n" + obj = {"command": commands, "sendonly": True} + results.append(self.send_command(**obj)) + requests.append(commands) + + time.sleep(0.1) + self.send_command("end", sendonly=True) + time.sleep(0.1) + results.append(self.send_command("\n")) + requests.append("\n") + + resp["request"] = requests + resp["response"] = results + return resp + + def get( + self, + command=None, + prompt=None, + answer=None, + sendonly=False, + output=None, + newline=True, + check_all=False, + ): + if not command: + raise ValueError("must provide value of command to execute") + if output: + raise ValueError( + "'output' value %s is not supported for get" % output + ) + + return self.send_command( + command=command, + prompt=prompt, + answer=answer, + sendonly=sendonly, + newline=newline, + check_all=check_all, + ) + + def get_device_info(self): + device_info = {} + + device_info["network_os"] = "ios" + reply = self.get(command="show version") + data = to_text(reply, errors="surrogate_or_strict").strip() + + match = re.search(r"Version (\S+)", data) + if match: + device_info["network_os_version"] = match.group(1).strip(",") + + model_search_strs = [ + r"^[Cc]isco (.+) \(revision", + r"^[Cc]isco (\S+).+bytes of .*memory", + ] + for item in model_search_strs: + match = re.search(item, data, re.M) + if match: + version = match.group(1).split(" ") + device_info["network_os_model"] = version[0] + break + + match = re.search(r"^(.+) uptime", data, re.M) + if match: + device_info["network_os_hostname"] = match.group(1) + + match = re.search(r'image file is "(.+)"', data) + if match: + device_info["network_os_image"] = match.group(1) + + return device_info + + def get_device_operations(self): + return { + "supports_diff_replace": True, + "supports_commit": False, + "supports_rollback": False, + "supports_defaults": True, + "supports_onbox_diff": False, + "supports_commit_comment": False, + "supports_multiline_delimiter": True, + "supports_diff_match": True, + "supports_diff_ignore_lines": True, + "supports_generate_diff": True, + "supports_replace": False, + } + + def get_option_values(self): + return { + "format": ["text"], + "diff_match": ["line", "strict", "exact", "none"], + "diff_replace": ["line", "block"], + "output": [], + } + + def get_capabilities(self): + result = super(Cliconf, self).get_capabilities() + result["rpc"] += [ + "edit_banner", + "get_diff", + "run_commands", + "get_defaults_flag", + ] + result["device_operations"] = self.get_device_operations() + result.update(self.get_option_values()) + return json.dumps(result) + + def edit_banner( + self, candidate=None, multiline_delimiter="@", commit=True + ): + """ + Edit banner on remote device + :param banners: Banners to be loaded in json format + :param multiline_delimiter: Line delimiter for banner + :param commit: Boolean value that indicates if the device candidate + configuration should be pushed in the running configuration or discarded. + :param diff: Boolean flag to indicate if configuration that is applied on remote host should + generated and returned in response or not + :return: Returns response of executing the configuration command received + from remote host + """ + resp = {} + banners_obj = json.loads(candidate) + results = [] + requests = [] + if commit: + for key, value in iteritems(banners_obj): + key += " %s" % multiline_delimiter + self.send_command("config terminal", sendonly=True) + for cmd in [key, value, multiline_delimiter]: + obj = {"command": cmd, "sendonly": True} + results.append(self.send_command(**obj)) + requests.append(cmd) + + self.send_command("end", sendonly=True) + time.sleep(0.1) + results.append(self.send_command("\n")) + requests.append("\n") + + resp["request"] = requests + resp["response"] = results + + return resp + + def run_commands(self, commands=None, check_rc=True): + if commands is None: + raise ValueError("'commands' value is required") + + responses = list() + for cmd in to_list(commands): + if not isinstance(cmd, Mapping): + cmd = {"command": cmd} + + output = cmd.pop("output", None) + if output: + raise ValueError( + "'output' value %s is not supported for run_commands" + % output + ) + + try: + out = self.send_command(**cmd) + except AnsibleConnectionFailure as e: + if check_rc: + raise + out = getattr(e, "err", to_text(e)) + + responses.append(out) + + return responses + + def get_defaults_flag(self): + """ + The method identifies the filter that should be used to fetch running-configuration + with defaults. + :return: valid default filter + """ + out = self.get("show running-config ?") + out = to_text(out, errors="surrogate_then_replace") + + commands = set() + for line in out.splitlines(): + if line.strip(): + commands.add(line.strip().split()[0]) + + if "all" in commands: + return "all" + else: + return "full" + + def set_cli_prompt_context(self): + """ + Make sure we are in the operational cli mode + :return: None + """ + if self._connection.connected: + out = self._connection.get_prompt() + + if out is None: + raise AnsibleConnectionFailure( + message=u"cli prompt is not identified from the last received" + u" response window: %s" + % self._connection._last_recv_window + ) + + if re.search( + r"config.*\)#", + to_text(out, errors="surrogate_then_replace").strip(), + ): + self._connection.queue_message( + "vvvv", "wrong context, sending end to device" + ) + self._connection.send_command("end") + + def _extract_banners(self, config): + banners = {} + banner_cmds = re.findall(r"^banner (\w+)", config, re.M) + for cmd in banner_cmds: + regex = r"banner %s \^C(.+?)(?=\^C)" % cmd + match = re.search(regex, config, re.S) + if match: + key = "banner %s" % cmd + banners[key] = match.group(1).strip() + + for cmd in banner_cmds: + regex = r"banner %s \^C(.+?)(?=\^C)" % cmd + match = re.search(regex, config, re.S) + if match: + config = config.replace(str(match.group(1)), "") + + config = re.sub(r"banner \w+ \^C\^C", "!! banner removed", config) + return config, banners + + def _diff_banners(self, want, have): + candidate = {} + for key, value in iteritems(want): + if value != have.get(key): + candidate[key] = value + return candidate diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/ios.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/ios.py new file mode 100644 index 00000000..0bb9cae5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/doc_fragments/ios.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +# Copyright: (c) 2015, Peter Sprygada +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + + +class ModuleDocFragment(object): + + # Standard files documentation fragment + DOCUMENTATION = r"""options: + provider: + description: + - B(Deprecated) + - 'Starting with Ansible 2.5 we recommend using C(connection: network_cli).' + - For more information please see the L(IOS Platform Options guide, ../network/user_guide/platform_ios.html). + - HORIZONTALLINE + - A dict object containing connection details. + type: dict + suboptions: + host: + description: + - Specifies the DNS host name or address for connecting to the remote device + over the specified transport. The value of host is used as the destination + address for the transport. + type: str + port: + description: + - Specifies the port to use when building the connection to the remote device. + type: int + username: + description: + - Configures the username to use to authenticate the connection to the remote + device. This value is used to authenticate the SSH session. If the value + is not specified in the task, the value of environment variable C(ANSIBLE_NET_USERNAME) + will be used instead. + type: str + password: + description: + - Specifies the password to use to authenticate the connection to the remote + device. This value is used to authenticate the SSH session. If the value + is not specified in the task, the value of environment variable C(ANSIBLE_NET_PASSWORD) + will be used instead. + type: str + timeout: + description: + - Specifies the timeout in seconds for communicating with the network device + for either connecting or sending commands. If the timeout is exceeded before + the operation is completed, the module will error. + type: int + ssh_keyfile: + description: + - Specifies the SSH key to use to authenticate the connection to the remote + device. This value is the path to the key used to authenticate the SSH + session. If the value is not specified in the task, the value of environment + variable C(ANSIBLE_NET_SSH_KEYFILE) will be used instead. + type: path + authorize: + description: + - Instructs the module to enter privileged mode on the remote device before + sending any commands. If not specified, the device will attempt to execute + all commands in non-privileged mode. If the value is not specified in the + task, the value of environment variable C(ANSIBLE_NET_AUTHORIZE) will be + used instead. + type: bool + default: false + auth_pass: + description: + - Specifies the password to use if required to enter privileged mode on the + remote device. If I(authorize) is false, then this argument does nothing. + If the value is not specified in the task, the value of environment variable + C(ANSIBLE_NET_AUTH_PASS) will be used instead. + type: str +notes: +- For more information on using Ansible to manage network devices see the :ref:`Ansible + Network Guide ` +- For more information on using Ansible to manage Cisco devices see the `Cisco integration + page `_. +""" diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py new file mode 100644 index 00000000..24b32d7b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acl_interfaces/acl_interfaces.py @@ -0,0 +1,83 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_acl_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Acl_InterfacesArgs(object): + """The arg spec for the ios_acl_interfaces module + """ + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"required": True, "type": "str"}, + "access_groups": { + "type": "list", + "elements": "dict", + "options": { + "afi": { + "required": True, + "choices": ["ipv4", "ipv6"], + "type": "str", + }, + "acls": { + "type": "list", + "elements": "dict", + "options": { + "name": {"required": True, "type": "str"}, + "direction": { + "required": True, + "choices": ["in", "out"], + "type": "str", + }, + }, + }, + }, + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/acls.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/acls.py new file mode 100644 index 00000000..87faedb0 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/acls/acls.py @@ -0,0 +1,404 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# +""" +The arg spec for the ios_acls module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class AclsArgs(object): + """The arg spec for the ios_acls module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "afi": { + "required": True, + "choices": ["ipv4", "ipv6"], + "type": "str", + }, + "acls": { + "elements": "dict", + "type": "list", + "options": { + "name": {"required": True, "type": "str"}, + "acl_type": { + "choices": ["extended", "standard"], + "type": "str", + }, + "aces": { + "elements": "dict", + "type": "list", + "options": { + "grant": { + "choices": ["permit", "deny"], + "type": "str", + }, + "sequence": {"type": "int"}, + "evaluate": {"type": "str"}, + "source": { + "type": "dict", + "mutually_exclusive": [ + ["address", "any", "host"], + ["wildcard_bits", "any", "host"], + ], + "options": { + "address": {"type": "str"}, + "wildcard_bits": {"type": "str"}, + "any": {"type": "bool"}, + "host": {"type": "str"}, + "port_protocol": { + "type": "dict", + "options": { + "eq": {"type": "str"}, + "gt": {"type": "str"}, + "lt": {"type": "str"}, + "neq": {"type": "str"}, + "range": { + "type": "dict", + "options": { + "start": { + "type": "int" + }, + "end": {"type": "int"}, + }, + }, + }, + }, + }, + }, + "destination": { + "type": "dict", + "mutually_exclusive": [ + ["address", "any", "host"], + ["wildcard_bits", "any", "host"], + ], + "options": { + "address": {"type": "str"}, + "wildcard_bits": {"type": "str"}, + "any": {"type": "bool"}, + "host": {"type": "str"}, + "port_protocol": { + "type": "dict", + "options": { + "eq": {"type": "str"}, + "gt": {"type": "str"}, + "lt": {"type": "str"}, + "neq": {"type": "str"}, + "range": { + "type": "dict", + "options": { + "start": { + "type": "int" + }, + "end": {"type": "int"}, + }, + }, + }, + }, + }, + }, + "protocol": {"type": "str"}, + "protocol_options": { + "type": "dict", + "options": { + "protocol_number": {"type": "int"}, + "ahp": {"type": "bool"}, + "eigrp": {"type": "bool"}, + "esp": {"type": "bool"}, + "gre": {"type": "bool"}, + "hbh": {"type": "bool"}, + "icmp": { + "type": "dict", + "options": { + "administratively_prohibited": { + "type": "bool" + }, + "alternate_address": { + "type": "bool" + }, + "conversion_error": { + "type": "bool" + }, + "dod_host_prohibited": { + "type": "bool" + }, + "dod_net_prohibited": { + "type": "bool" + }, + "echo": {"type": "bool"}, + "echo_reply": {"type": "bool"}, + "general_parameter_problem": { + "type": "bool" + }, + "host_isolated": { + "type": "bool" + }, + "host_precedence_unreachable": { + "type": "bool" + }, + "host_redirect": { + "type": "bool" + }, + "host_tos_redirect": { + "type": "bool" + }, + "host_tos_unreachable": { + "type": "bool" + }, + "host_unknown": { + "type": "bool" + }, + "host_unreachable": { + "type": "bool" + }, + "information_reply": { + "type": "bool" + }, + "information_request": { + "type": "bool" + }, + "mask_reply": {"type": "bool"}, + "mask_request": { + "type": "bool" + }, + "mobile_redirect": { + "type": "bool" + }, + "net_redirect": { + "type": "bool" + }, + "net_tos_redirect": { + "type": "bool" + }, + "net_tos_unreachable": { + "type": "bool" + }, + "net_unreachable": { + "type": "bool" + }, + "network_unknown": { + "type": "bool" + }, + "no_room_for_option": { + "type": "bool" + }, + "option_missing": { + "type": "bool" + }, + "packet_too_big": { + "type": "bool" + }, + "parameter_problem": { + "type": "bool" + }, + "port_unreachable": { + "type": "bool" + }, + "precedence_unreachable": { + "type": "bool" + }, + "protocol_unreachable": { + "type": "bool" + }, + "reassembly_timeout": { + "type": "bool" + }, + "redirect": {"type": "bool"}, + "router_advertisement": { + "type": "bool" + }, + "router_solicitation": { + "type": "bool" + }, + "source_quench": { + "type": "bool" + }, + "source_route_failed": { + "type": "bool" + }, + "time_exceeded": { + "type": "bool" + }, + "timestamp_reply": { + "type": "bool" + }, + "timestamp_request": { + "type": "bool" + }, + "traceroute": {"type": "bool"}, + "ttl_exceeded": { + "type": "bool" + }, + "unreachable": { + "type": "bool" + }, + }, + }, + "igmp": { + "type": "dict", + "options": { + "dvmrp": {"type": "bool"}, + "host_query": {"type": "bool"}, + "mtrace_resp": { + "type": "bool" + }, + "mtrace_route": { + "type": "bool" + }, + "pim": {"type": "bool"}, + "trace": {"type": "bool"}, + "v1host_report": { + "type": "bool" + }, + "v2host_report": { + "type": "bool" + }, + "v2leave_group": { + "type": "bool" + }, + "v3host_report": { + "type": "bool" + }, + }, + }, + "ip": {"type": "bool"}, + "ipv6": {"type": "bool"}, + "ipinip": {"type": "bool"}, + "nos": {"type": "bool"}, + "ospf": {"type": "bool"}, + "pcp": {"type": "bool"}, + "pim": {"type": "bool"}, + "sctp": {"type": "bool"}, + "tcp": { + "options": { + "ack": {"type": "bool"}, + "established": { + "type": "bool" + }, + "fin": {"type": "bool"}, + "psh": {"type": "bool"}, + "rst": {"type": "bool"}, + "syn": {"type": "bool"}, + "urg": {"type": "bool"}, + }, + "type": "dict", + }, + "udp": {"type": "bool"}, + }, + }, + "dscp": {"type": "str"}, + "fragments": {"type": "str"}, + "log": {"type": "str"}, + "log_input": {"type": "str"}, + "option": { + "type": "dict", + "options": { + "add_ext": {"type": "bool"}, + "any_options": {"type": "bool"}, + "com_security": {"type": "bool"}, + "dps": {"type": "bool"}, + "encode": {"type": "bool"}, + "eool": {"type": "bool"}, + "ext_ip": {"type": "bool"}, + "ext_security": {"type": "bool"}, + "finn": {"type": "bool"}, + "imitd": {"type": "bool"}, + "lsr": {"type": "bool"}, + "mtup": {"type": "bool"}, + "mtur": {"type": "bool"}, + "no_op": {"type": "bool"}, + "nsapa": {"type": "bool"}, + "record_route": {"type": "bool"}, + "router_alert": {"type": "bool"}, + "sdb": {"type": "bool"}, + "security": {"type": "bool"}, + "ssr": {"type": "bool"}, + "stream_id": {"type": "bool"}, + "timestamp": {"type": "bool"}, + "traceroute": {"type": "bool"}, + "ump": {"type": "bool"}, + "visa": {"type": "bool"}, + "zsu": {"type": "bool"}, + }, + }, + "precedence": {"type": "int"}, + "time_range": {"type": "str"}, + "tos": { + "type": "dict", + "options": { + "service_value": {"type": "int"}, + "max_reliability": {"type": "bool"}, + "max_throughput": {"type": "bool"}, + "min_delay": {"type": "bool"}, + "min_monetary_cost": {"type": "bool"}, + "normal": {"type": "bool"}, + }, + }, + "ttl": { + "type": "dict", + "options": { + "eq": {"type": "int"}, + "gt": {"type": "int"}, + "lt": {"type": "int"}, + "neq": {"type": "int"}, + "range": { + "type": "dict", + "options": { + "start": {"type": "int"}, + "end": {"type": "int"}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py new file mode 100644 index 00000000..3666a359 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/bgp_global/bgp_global.py @@ -0,0 +1,910 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 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 +# cli_rm_builder. +# +# Manually editing this file is not advised. +# +# To update the argspec make the desired changes +# in the module docstring and re-run +# cli_rm_builder. +# +############################################# + +""" +The arg spec for the cisco.ios_bgp_global module +""" + + +class Bgp_globalArgs(object): # pylint: disable=R0903 + """The arg spec for the cisco.ios_bgp_global module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "type": "dict", + "options": { + "as_number": {"type": "str", "required": True}, + "aggregate_address": { + "type": "dict", + "options": { + "address": {"type": "str"}, + "netmask": {"type": "str"}, + "advertise_map": {"type": "str"}, + "as_confed_set": {"type": "bool"}, + "as_set": {"type": "bool"}, + "attribute_map": {"type": "str"}, + "summary_only": {"type": "bool"}, + "suppress_map": {"type": "str"}, + }, + }, + "auto_summary": {"type": "bool"}, + "bgp": { + "type": "dict", + "options": { + "additional_paths": { + "type": "dict", + "options": { + "install": {"type": "bool"}, + "receive": {"type": "bool"}, + "select": { + "type": "dict", + "options": { + "all": {"type": "bool"}, + "best": {"type": "int"}, + "best_external": {"type": "bool"}, + "group_best": {"type": "bool"}, + }, + }, + "send": {"type": "bool"}, + }, + }, + "advertise_best_external": {"type": "bool"}, + "aggregate_timer": {"type": "int"}, + "always_compare_med": {"type": "bool"}, + "asnotation": {"type": "bool"}, + "bestpath": { + "type": "list", + "elements": "dict", + "options": { + "aigp": {"type": "bool"}, + "compare_routerid": {"type": "bool"}, + "cost_community": {"type": "bool"}, + "igp_metric": {"type": "bool"}, + "med": { + "type": "dict", + "options": { + "confed": {"type": "bool"}, + "missing_as_worst": {"type": "bool"}, + }, + }, + }, + }, + "client_to_client": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "all": {"type": "bool"}, + "intra_cluster": {"type": "str"}, + }, + }, + "cluster_id": {"type": "bool"}, + "confederation": { + "type": "dict", + "options": { + "identifier": {"type": "str"}, + "peers": {"type": "str"}, + }, + }, + "consistency_checker": { + "type": "dict", + "options": { + "auto_repair": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "interval": {"type": "int"}, + }, + }, + "error_message": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "interval": {"type": "int"}, + }, + }, + }, + }, + "dampening": { + "type": "dict", + "options": { + "penalty_half_time": {"type": "int"}, + "reuse_route_val": {"type": "int"}, + "suppress_route_val": {"type": "int"}, + "max_suppress": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "deterministic_med": {"type": "bool"}, + "dmzlink_bw": {"type": "bool"}, + "enforce_first_as": {"type": "bool"}, + "enhanced_error": {"type": "bool"}, + "fast_external_fallover": {"type": "bool"}, + "graceful_restart": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "extended": {"type": "bool"}, + "restart_time": {"type": "int"}, + "stalepath_time": {"type": "int"}, + }, + }, + "graceful_shutdown": { + "type": "dict", + "options": { + "neighbors": { + "type": "dict", + "options": { + "time": {"type": "int"}, + "activate": {"type": "bool"}, + }, + }, + "vrfs": { + "type": "dict", + "options": { + "time": {"type": "int"}, + "activate": {"type": "bool"}, + }, + }, + "community": {"type": "str"}, + "local_preference": {"type": "int"}, + }, + }, + "inject_map": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "exist_map_name": {"type": "str"}, + "copy_attributes": {"type": "bool"}, + }, + }, + "listen": { + "type": "dict", + "options": { + "limit": {"type": "int"}, + "range": { + "type": "dict", + "options": { + "ipv4_with_subnet": {"type": "str"}, + "ipv6_with_subnet": {"type": "str"}, + "peer_group": {"type": "str"}, + }, + }, + }, + }, + "log_neighbor_changes": {"type": "bool"}, + "maxas_limit": {"type": "int"}, + "maxcommunity_limit": {"type": "int"}, + "maxextcommunity_limit": {"type": "int"}, + "nexthop": { + "type": "dict", + "options": { + "route_map": {"type": "str"}, + "trigger": { + "type": "dict", + "options": { + "delay": {"type": "int"}, + "enable": {"type": "bool"}, + }, + }, + }, + }, + "nopeerup_delay": { + "type": "list", + "elements": "dict", + "options": { + "cold_boot": {"type": "int"}, + "nsf_switchover": {"type": "int"}, + "post_boot": {"type": "int"}, + "user_initiated": {"type": "int"}, + }, + }, + "recursion": {"type": "bool"}, + "redistribute_internal": {"type": "bool"}, + "refresh": { + "type": "dict", + "options": { + "max_eor_time": {"type": "int"}, + "stalepath_time": {"type": "int"}, + }, + }, + "regexp": {"type": "bool"}, + "route_map": {"type": "bool"}, + "router_id": { + "type": "dict", + "options": { + "address": {"type": "str"}, + "interface": {"type": "str"}, + "vrf": {"type": "bool"}, + }, + }, + "scan_time": {"type": "int"}, + "slow_peer": { + "type": "dict", + "options": { + "detection": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "threshold": {"type": "int"}, + }, + }, + "split_update_group": { + "type": "dict", + "options": { + "dynamic": {"type": "bool"}, + "permanent": {"type": "int"}, + }, + }, + }, + }, + "snmp": {"type": "bool"}, + "sso": {"type": "bool"}, + "soft_reconfig_backup": {"type": "bool"}, + "suppress_inactive": {"type": "bool"}, + "transport": {"type": "bool"}, + "update_delay": {"type": "int"}, + "update_group": {"type": "bool"}, + "upgrade_cli": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "af_mode": {"type": "bool"}, + }, + }, + }, + }, + "bmp": { + "type": "dict", + "options": { + "buffer_size": {"type": "int"}, + "initial_refresh": { + "type": "dict", + "options": { + "delay": {"type": "int"}, + "skip": {"type": "bool"}, + }, + }, + "server": {"type": "int"}, + }, + }, + "default_information": {"type": "bool"}, + "default_metric": {"type": "int"}, + "distance": { + "type": "dict", + "options": { + "admin": { + "type": "dict", + "options": { + "distance": {"type": "int"}, + "address": {"type": "str"}, + "wildcard_bit": {"type": "str"}, + "acl": {"type": "str"}, + }, + }, + "bgp": { + "type": "dict", + "options": { + "routes_external": {"type": "int"}, + "routes_internal": {"type": "int"}, + "routes_local": {"type": "int"}, + }, + }, + "mbgp": { + "type": "dict", + "options": { + "routes_external": {"type": "int"}, + "routes_internal": {"type": "int"}, + "routes_local": {"type": "int"}, + }, + }, + }, + }, + "distribute_list": { + "type": "dict", + "options": { + "acl": {"type": "str"}, + "in": {"type": "bool"}, + "out": {"type": "bool"}, + "interface": {"type": "str"}, + }, + }, + "maximum_paths": { + "type": "dict", + "options": { + "paths": {"type": "int"}, + "eibgp": {"type": "int"}, + "ibgp": {"type": "int"}, + }, + }, + "maximum_secondary_paths": { + "type": "dict", + "options": { + "paths": {"type": "int"}, + "eibgp": {"type": "int"}, + "ibgp": {"type": "int"}, + }, + }, + "neighbor": { + "type": "list", + "elements": "dict", + "options": { + "address": {"type": "str"}, + "tag": {"type": "str"}, + "ipv6_adddress": {"type": "str"}, + "activate": {"type": "bool"}, + "additional_paths": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + "receive": {"type": "bool"}, + "send": {"type": "bool"}, + }, + }, + "advertise": { + "type": "dict", + "options": { + "additional_paths": { + "type": "dict", + "options": { + "all": {"type": "bool"}, + "best": {"type": "int"}, + "group_best": {"type": "bool"}, + }, + }, + "best_external": {"type": "bool"}, + "diverse_path": { + "type": "dict", + "options": { + "backup": {"type": "bool"}, + "mpath": {"type": "bool"}, + }, + }, + }, + }, + "advertise_map": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "exist_map": {"type": "str"}, + "non_exist_map": {"type": "str"}, + }, + }, + "advertisement_interval": {"type": "int"}, + "aigp": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "send": { + "type": "dict", + "options": { + "cost_community": { + "type": "dict", + "options": { + "id": {"type": "int"}, + "poi": { + "type": "dict", + "options": { + "igp_cost": { + "type": "bool" + }, + "pre_bestpath": { + "type": "bool" + }, + "transitive": { + "type": "bool" + }, + }, + }, + }, + }, + "med": {"type": "bool"}, + }, + }, + }, + }, + "allow_policy": {"type": "bool"}, + "allowas_in": {"type": "int"}, + "as_override": {"type": "bool"}, + "bmp_activate": { + "type": "dict", + "options": { + "all": {"type": "bool"}, + "server": {"type": "int"}, + }, + }, + "capability": { + "type": "dict", + "options": { + "both": {"type": "bool"}, + "receive": {"type": "bool"}, + "send": {"type": "bool"}, + }, + }, + "cluster_id": {"type": "str"}, + "default_originate": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "route_map": {"type": "str"}, + }, + }, + "description": {"type": "str"}, + "disable_connected_check": {"type": "bool"}, + "distribute_list": { + "type": "dict", + "options": { + "acl": {"type": "str"}, + "in": {"type": "bool"}, + "out": {"type": "bool"}, + }, + }, + "dmzlink_bw": {"type": "bool"}, + "ebgp_multihop": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "hop_count": {"type": "int"}, + }, + }, + "fall_over": { + "type": "dict", + "options": { + "bfd": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "multi_hop": {"type": "bool"}, + "single_hop": {"type": "bool"}, + }, + }, + "route_map": {"type": "str"}, + }, + }, + "filter_list": { + "type": "dict", + "options": { + "path_acl": {"type": "str"}, + "in": {"type": "bool"}, + "out": {"type": "bool"}, + }, + }, + "ha_mode": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "inherit": {"type": "str"}, + "local_as": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "number": {"type": "int"}, + "dual_as": {"type": "bool"}, + "no_prepend": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "replace_as": {"type": "bool"}, + }, + }, + }, + }, + "log_neighbor_changes": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "maximum_prefix": { + "type": "dict", + "options": { + "max_no": {"type": "int"}, + "threshold_val": {"type": "int"}, + "restart": {"type": "int"}, + "warning_only": {"type": "bool"}, + }, + }, + "next_hop_self": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "all": {"type": "bool"}, + }, + }, + "next_hop_unchanged": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "allpaths": {"type": "bool"}, + }, + }, + "password": {"type": "str"}, + "path_attribute": { + "type": "dict", + "options": { + "discard": { + "type": "dict", + "options": { + "type": {"type": "int"}, + "range": { + "type": "dict", + "options": { + "start": {"type": "int"}, + "end": {"type": "int"}, + }, + }, + "in": {"type": "bool"}, + }, + }, + "treat_as_withdraw": { + "type": "dict", + "options": { + "type": {"type": "int"}, + "range": { + "type": "dict", + "options": { + "start": {"type": "int"}, + "end": {"type": "int"}, + }, + }, + "in": {"type": "bool"}, + }, + }, + }, + }, + "peer_group": {"type": "str"}, + "remote_as": {"type": "int"}, + "remove_private_as": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "all": {"type": "bool"}, + "replace_as": {"type": "bool"}, + }, + }, + "route_map": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "in": {"type": "bool"}, + "out": {"type": "bool"}, + }, + }, + "route_reflector_client": {"type": "bool"}, + "route_server_client": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "context": {"type": "str"}, + }, + }, + "send_community": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "both": {"type": "bool"}, + "extended": {"type": "bool"}, + "standard": {"type": "bool"}, + }, + }, + "send_label": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "explicit_null": {"type": "bool"}, + }, + }, + "shutdown": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "graceful": {"type": "int"}, + }, + }, + "slow_peer": { + "type": "dict", + "options": { + "detection": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "disable": {"type": "bool"}, + "threshold": {"type": "int"}, + }, + }, + "split_update_group": { + "type": "dict", + "options": { + "dynamic": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "disable": {"type": "bool"}, + "permanent": {"type": "bool"}, + }, + }, + "static": {"type": "bool"}, + }, + }, + }, + }, + "soft_reconfiguration": {"type": "bool"}, + "timers": { + "type": "dict", + "options": { + "interval": {"type": "int"}, + "holdtime": {"type": "int"}, + "min_holdtime": {"type": "int"}, + }, + }, + "translate_update": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "nlri": { + "type": "dict", + "options": { + "multicast": {"type": "bool"}, + "unicast": {"type": "bool"}, + }, + }, + }, + }, + "transport": { + "type": "dict", + "options": { + "connection_mode": { + "type": "dict", + "options": { + "active": {"type": "bool"}, + "passive": {"type": "bool"}, + }, + }, + "multi_session": {"type": "bool"}, + "path_mtu_discovery": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + }, + }, + "ttl_security": {"type": "int"}, + "unsuppress_map": {"type": "str"}, + "version": {"type": "int"}, + "weight": {"type": "int"}, + }, + }, + "redistribute": { + "type": "list", + "elements": "dict", + "options": { + "application": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "bgp": { + "type": "dict", + "options": { + "as_number": {"type": "str"}, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "connected": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "eigrp": { + "type": "dict", + "options": { + "as_number": {"type": "str"}, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "isis": { + "type": "dict", + "options": { + "area_tag": {"type": "str"}, + "clns": {"type": "bool"}, + "ip": {"type": "bool"}, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "iso_igrp": { + "type": "dict", + "options": { + "area_tag": {"type": "str"}, + "route_map": {"type": "str"}, + }, + }, + "lisp": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "mobile": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "odr": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "ospf": { + "type": "dict", + "options": { + "process_id": {"type": "int"}, + "match": { + "type": "dict", + "options": { + "external": {"type": "bool"}, + "internal": {"type": "bool"}, + "nssa_external": {"type": "bool"}, + "type_1": {"type": "bool"}, + "type_2": {"type": "bool"}, + }, + }, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + "vrf": {"type": "str"}, + }, + }, + "ospfv3": { + "type": "dict", + "options": { + "process_id": {"type": "int"}, + "match": { + "type": "dict", + "options": { + "external": {"type": "bool"}, + "internal": {"type": "bool"}, + "nssa_external": {"type": "bool"}, + "type_1": {"type": "bool"}, + "type_2": {"type": "bool"}, + }, + }, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "rip": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "static": { + "type": "dict", + "options": { + "clns": {"type": "bool"}, + "ip": {"type": "bool"}, + "metric": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "vrf": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "global": {"type": "bool"}, + }, + }, + }, + }, + "route_server_context": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "address_family": { + "type": "dict", + "options": { + "afi": { + "type": "str", + "choices": ["ipv4", "ipv6"], + }, + "modifier": { + "type": "str", + "choices": ["multicast", "unicast"], + }, + "import_map": {"type": "str"}, + }, + }, + "description": {"type": "str"}, + }, + }, + "scope": { + "type": "dict", + "options": { + "global": {"type": "bool"}, + "vrf": {"type": "str"}, + }, + }, + "synchronization": {"type": "bool"}, + "table_map": { + "type": "dict", + "options": { + "name": {"type": "str"}, + "filter": {"type": "bool"}, + }, + }, + "template": { + "type": "dict", + "options": { + "peer_policy": {"type": "str"}, + "peer_session": {"type": "str"}, + }, + }, + "timers": { + "type": "dict", + "options": { + "keepalive": {"type": "int"}, + "holdtime": {"type": "int"}, + "min_holdtime": {"type": "int"}, + }, + }, + }, + }, + "running_config": {"type": "str"}, + "state": { + "type": "str", + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "purged", + "gathered", + "parsed", + "rendered", + ], + "default": "merged", + }, + } # pylint: disable=C0301 diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/facts.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/facts.py new file mode 100644 index 00000000..935fee75 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/facts/facts.py @@ -0,0 +1,27 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The arg spec for the ios facts module. +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class FactsArgs(object): + """ The arg spec for the ios facts module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "gather_subset": dict( + default=["!config"], type="list", elements="str" + ), + "gather_network_resources": dict(type="list", elements="str"), + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/interfaces.py new file mode 100644 index 00000000..5dbdda17 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/interfaces/interfaces.py @@ -0,0 +1,64 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# +""" +The arg spec for the ios_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class InterfacesArgs(object): + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"type": "str", "required": True}, + "description": {"type": "str"}, + "enabled": {"default": True, "type": "bool"}, + "speed": {"type": "str"}, + "mtu": {"type": "int"}, + "duplex": {"type": "str", "choices": ["full", "half", "auto"]}, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py new file mode 100644 index 00000000..0f21f3a3 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l2_interfaces/l2_interfaces.py @@ -0,0 +1,80 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# +""" +The arg spec for the ios_l2_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class L2_InterfacesArgs(object): + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"type": "str", "required": True}, + "mode": {"type": "str", "choices": ["access", "trunk"]}, + "access": { + "type": "dict", + "options": {"vlan": {"type": "int"}}, + }, + "voice": { + "type": "dict", + "options": {"vlan": {"type": "int"}}, + }, + "trunk": { + "type": "dict", + "options": { + "allowed_vlans": {"type": "list", "elements": "str"}, + "encapsulation": { + "type": "str", + "choices": ["dot1q", "isl", "negotiate"], + }, + "native_vlan": {"type": "int"}, + "pruning_vlans": {"type": "list", "elements": "str"}, + }, + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py new file mode 100644 index 00000000..ce8e1396 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/l3_interfaces/l3_interfaces.py @@ -0,0 +1,75 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# +""" +The arg spec for the ios_l3_interfaces module +""" + + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class L3_InterfacesArgs(object): + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"type": "str", "required": True}, + "ipv4": { + "elements": "dict", + "type": "list", + "options": { + "address": {"type": "str"}, + "secondary": {"type": "bool"}, + "dhcp_client": {"type": "int"}, + "dhcp_hostname": {"type": "str"}, + }, + }, + "ipv6": { + "elements": "dict", + "type": "list", + "options": {"address": {"type": "str"}}, + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py new file mode 100644 index 00000000..09f40b28 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp/lacp.py @@ -0,0 +1,64 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_lacp module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class LacpArgs(object): + """The arg spec for the ios_lacp module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "options": { + "system": { + "options": {"priority": {"required": True, "type": "int"}}, + "type": "dict", + } + }, + "type": "dict", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py new file mode 100644 index 00000000..b0af01a5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lacp_interfaces/lacp_interfaces.py @@ -0,0 +1,66 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_lacp_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Lacp_InterfacesArgs(object): + """The arg spec for the ios_lacp_interfaces module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"required": True, "type": "str"}, + "port_priority": {"type": "int"}, + "fast_switchover": {"type": "bool"}, + "max_bundle": {"type": "int"}, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py new file mode 100644 index 00000000..03021fed --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lag_interfaces/lag_interfaces.py @@ -0,0 +1,79 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_lag_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Lag_interfacesArgs(object): + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"required": True, "type": "str"}, + "members": { + "elements": "dict", + "options": { + "member": {"type": "str"}, + "mode": { + "choices": [ + "auto", + "on", + "desirable", + "active", + "passive", + ], + "type": "str", + "required": True, + }, + "link": {"type": "int"}, + }, + "type": "list", + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py new file mode 100644 index 00000000..9133305e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_global/lldp_global.py @@ -0,0 +1,74 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# +""" +The arg spec for the ios_lldp_global module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Lldp_globalArgs(object): + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "options": { + "holdtime": {"type": "int"}, + "reinit": {"type": "int"}, + "enabled": {"type": "bool"}, + "timer": {"type": "int"}, + "tlv_select": { + "options": { + "four_wire_power_management": {"type": "bool"}, + "mac_phy_cfg": {"type": "bool"}, + "management_address": {"type": "bool"}, + "port_description": {"type": "bool"}, + "port_vlan": {"type": "bool"}, + "power_management": {"type": "bool"}, + "system_capabilities": {"type": "bool"}, + "system_description": {"type": "bool"}, + "system_name": {"type": "bool"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py new file mode 100644 index 00000000..f4ad39f5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/lldp_interfaces/lldp_interfaces.py @@ -0,0 +1,73 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_lldp_interfaces module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Lldp_InterfacesArgs(object): + """The arg spec for the ios_lldp_interfaces module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"required": True, "type": "str"}, + "transmit": {"type": "bool"}, + "receive": {"type": "bool"}, + "med_tlv_select": { + "options": {"inventory_management": {"type": "bool"}}, + "type": "dict", + }, + "tlv_select": { + "options": {"power_management": {"type": "bool"}}, + "type": "dict", + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py new file mode 100644 index 00000000..b705c4b5 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospf_interfaces/ospf_interfaces.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the cisco.ios_ospf_interfaces module +""" + + +class Ospf_InterfacesArgs(object): # pylint: disable=R0903 + """The arg spec for the cisco.ios_ospf_interfaces module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "type": "list", + "elements": "dict", + "options": { + "name": {"type": "str", "required": True}, + "address_family": { + "type": "list", + "elements": "dict", + "options": { + "afi": { + "type": "str", + "choices": ["ipv4", "ipv6"], + "required": True, + }, + "process": { + "type": "dict", + "options": { + "id": {"type": "int"}, + "area_id": {"type": "str"}, + "secondaries": {"type": "bool"}, + "instance_id": {"type": "int"}, + }, + }, + "adjacency": {"type": "bool"}, + "authentication": { + "type": "dict", + "options": { + "key_chain": {"type": "str"}, + "message_digest": {"type": "bool"}, + "null": {"type": "bool"}, + }, + }, + "bfd": {"type": "bool"}, + "cost": { + "type": "dict", + "options": { + "interface_cost": {"type": "int"}, + "dynamic_cost": { + "type": "dict", + "options": { + "default": {"type": "int"}, + "hysteresis": { + "type": "dict", + "options": { + "percent": {"type": "int"}, + "threshold": {"type": "int"}, + }, + }, + "weight": { + "type": "dict", + "options": { + "l2_factor": {"type": "int"}, + "latency": {"type": "int"}, + "oc": {"type": "bool"}, + "resources": {"type": "int"}, + "throughput": {"type": "int"}, + }, + }, + }, + }, + }, + }, + "database_filter": {"type": "bool"}, + "dead_interval": { + "type": "dict", + "options": { + "time": {"type": "int"}, + "minimal": {"type": "int"}, + }, + }, + "demand_circuit": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "ignore": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "flood_reduction": {"type": "bool"}, + "hello_interval": {"type": "int"}, + "lls": {"type": "bool"}, + "manet": { + "type": "dict", + "options": { + "cost": { + "type": "dict", + "options": { + "percent": {"type": "int"}, + "threshold": {"type": "int"}, + }, + }, + "link_metrics": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "cost_threshold": {"type": "int"}, + }, + }, + }, + }, + "mtu_ignore": {"type": "bool"}, + "multi_area": { + "type": "dict", + "options": { + "id": {"type": "int"}, + "cost": {"type": "int"}, + }, + }, + "neighbor": { + "type": "dict", + "options": { + "address": {"type": "str"}, + "cost": {"type": "int"}, + "database_filter": {"type": "bool"}, + "poll_interval": {"type": "int"}, + "priority": {"type": "int"}, + }, + }, + "network": { + "type": "dict", + "options": { + "broadcast": {"type": "bool"}, + "manet": {"type": "bool"}, + "non_broadcast": {"type": "bool"}, + "point_to_multipoint": {"type": "bool"}, + "point_to_point": {"type": "bool"}, + }, + }, + "prefix_suppression": {"type": "bool"}, + "priority": {"type": "int"}, + "resync_timeout": {"type": "int"}, + "retransmit_interval": {"type": "int"}, + "shutdown": {"type": "bool"}, + "transmit_delay": {"type": "int"}, + "ttl_security": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "hops": {"type": "int"}, + }, + }, + }, + }, + }, + }, + "running_config": {"type": "str"}, + "state": { + "type": "str", + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + }, + } # pylint: disable=C0301 diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py new file mode 100644 index 00000000..fb053745 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv2/ospfv2.py @@ -0,0 +1,547 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_ospfv2 module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Ospfv2Args(object): + """The arg spec for the ios_ospfv2 module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "options": { + "processes": { + "elements": "dict", + "options": { + "address_family": { + "options": { + "default": {"type": "bool"}, + "snmp_context": {"type": "str"}, + "topology": { + "options": { + "base": {"type": "bool"}, + "name": {"type": "str"}, + "tid": {"type": "bool"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "adjacency": { + "options": { + "max_adjacency": {"type": "int"}, + "min_adjacency": {"type": "int"}, + "none": {"type": "bool"}, + }, + "type": "dict", + }, + "areas": { + "elements": "dict", + "options": { + "area_id": {"type": "str"}, + "authentication": { + "options": { + "enable": {"type": "bool"}, + "message_digest": {"type": "bool"}, + }, + "type": "dict", + }, + "capability": {"type": "bool"}, + "default_cost": {"type": "int"}, + "filter_list": { + "elements": "dict", + "options": { + "direction": { + "choices": ["in", "out"], + "required": True, + "type": "str", + }, + "name": {"type": "str"}, + }, + "type": "list", + }, + "nssa": { + "options": { + "default_information_originate": { + "options": { + "metric": {"type": "int"}, + "metric_type": { + "choices": [1, 2], + "type": "int", + }, + "nssa_only": {"type": "bool"}, + }, + "type": "dict", + }, + "no_ext_capability": {"type": "bool"}, + "no_redistribution": {"type": "bool"}, + "no_summary": {"type": "bool"}, + "set": {"type": "bool"}, + "translate": { + "choices": [ + "always", + "suppress-fa", + ], + "type": "str", + }, + }, + "type": "dict", + }, + "ranges": { + "options": { + "address": {"type": "str"}, + "advertise": {"type": "bool"}, + "cost": {"type": "int"}, + "netmask": {"type": "str"}, + "not_advertise": {"type": "bool"}, + }, + "type": "list", + "elements": "dict", + }, + "sham_link": { + "options": { + "cost": {"type": "int"}, + "destination": {"type": "str"}, + "source": {"type": "str"}, + "ttl_security": {"type": "int"}, + }, + "type": "dict", + }, + "stub": { + "options": { + "no_ext_capability": {"type": "bool"}, + "no_summary": {"type": "bool"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + }, + "type": "list", + }, + "auto_cost": { + "options": { + "reference_bandwidth": {"type": "int"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + "bfd": {"type": "bool"}, + "capability": { + "options": { + "lls": {"type": "bool"}, + "opaque": {"type": "bool"}, + "transit": {"type": "bool"}, + "vrf_lite": {"type": "bool"}, + }, + "type": "dict", + }, + "compatible": { + "options": { + "rfc1583": {"type": "bool"}, + "rfc1587": {"type": "bool"}, + "rfc5243": {"type": "bool"}, + }, + "type": "dict", + }, + "default_information": { + "options": { + "always": {"type": "bool"}, + "metric": {"type": "int"}, + "metric_type": {"type": "int"}, + "originate": {"type": "bool"}, + "route_map": {"type": "str"}, + }, + "type": "dict", + }, + "default_metric": {"type": "int"}, + "discard_route": { + "options": { + "external": {"type": "int"}, + "internal": {"type": "int"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + "distance": { + "options": { + "admin_distance": { + "options": { + "acl": {"type": "str"}, + "address": {"type": "str"}, + "distance": {"type": "int"}, + "wildcard_bits": {"type": "str"}, + }, + "type": "dict", + }, + "ospf": { + "options": { + "external": {"type": "int"}, + "inter_area": {"type": "int"}, + "intra_area": {"type": "int"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "distribute_list": { + "options": { + "acls": { + "elements": "dict", + "options": { + "direction": { + "choices": ["in", "out"], + "required": True, + "type": "str", + }, + "interface": {"type": "str"}, + "name": { + "required": True, + "type": "str", + }, + "protocol": {"type": "str"}, + }, + "type": "list", + }, + "prefix": { + "options": { + "direction": { + "choices": ["in", "out"], + "required": True, + "type": "str", + }, + "gateway_name": {"type": "str"}, + "interface": {"type": "str"}, + "name": { + "required": True, + "type": "str", + }, + "protocol": {"type": "str"}, + }, + "type": "dict", + }, + "route_map": { + "options": { + "name": { + "required": True, + "type": "str", + } + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "domain_id": { + "options": { + "ip_address": { + "options": { + "address": {"type": "str"}, + "secondary": {"type": "bool"}, + }, + "type": "dict", + }, + "null": {"type": "bool"}, + }, + "type": "dict", + }, + "domain_tag": {"type": "int"}, + "event_log": { + "options": { + "enable": {"type": "bool"}, + "one_shot": {"type": "bool"}, + "pause": {"type": "bool"}, + "size": {"type": "int"}, + }, + "type": "dict", + }, + "help": {"type": "bool"}, + "ignore": {"type": "bool"}, + "interface_id": {"type": "bool"}, + "ispf": {"type": "bool"}, + "limit": { + "options": { + "dc": { + "options": { + "disable": {"type": "bool"}, + "number": {"type": "int"}, + }, + "type": "dict", + }, + "non_dc": { + "options": { + "disable": {"type": "bool"}, + "number": {"type": "int"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "local_rib_criteria": { + "options": { + "enable": {"type": "bool"}, + "forwarding_address": {"type": "bool"}, + "inter_area_summary": {"type": "bool"}, + "nssa_translation": {"type": "bool"}, + }, + "type": "dict", + }, + "log_adjacency_changes": { + "options": { + "detail": {"type": "bool"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + "max_lsa": { + "options": { + "ignore_count": {"type": "int"}, + "ignore_time": {"type": "int"}, + "number": {"type": "int"}, + "reset_time": {"type": "int"}, + "threshold_value": {"type": "int"}, + "warning_only": {"type": "bool"}, + }, + "type": "dict", + }, + "max_metric": { + "options": { + "external_lsa": {"type": "int"}, + "include_stub": {"type": "bool"}, + "on_startup": { + "options": { + "time": {"type": "int"}, + "wait_for_bgp": {"type": "bool"}, + }, + "type": "dict", + }, + "router_lsa": { + "required": True, + "type": "bool", + }, + "summary_lsa": {"type": "int"}, + }, + "type": "dict", + }, + "maximum_paths": {"type": "int"}, + "mpls": { + "options": { + "ldp": { + "options": { + "autoconfig": { + "options": { + "area": {"type": "str"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + "sync": {"type": "bool"}, + }, + "type": "dict", + }, + "traffic_eng": { + "options": { + "area": {"type": "str"}, + "autoroute_exclude": {"type": "str"}, + "interface": { + "options": { + "area": {"type": "int"}, + "interface_type": { + "type": "str" + }, + }, + "type": "dict", + }, + "mesh_group": { + "options": { + "area": {"type": "str"}, + "id": {"type": "int"}, + "interface": {"type": "str"}, + }, + "type": "dict", + }, + "multicast_intact": {"type": "bool"}, + "router_id_interface": {"type": "str"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "neighbor": { + "options": { + "address": {"type": "str"}, + "cost": {"type": "int"}, + "database_filter": {"type": "bool"}, + "poll_interval": {"type": "int"}, + "priority": {"type": "int"}, + }, + "type": "dict", + }, + "network": { + "options": { + "address": {"type": "str"}, + "area": {"type": "str"}, + "wildcard_bits": {"type": "str"}, + }, + "type": "list", + "elements": "dict", + }, + "nsf": { + "options": { + "cisco": { + "options": { + "disable": {"type": "bool"}, + "helper": {"type": "bool"}, + }, + "type": "dict", + }, + "ietf": { + "options": { + "disable": {"type": "bool"}, + "helper": {"type": "bool"}, + "strict_lsa_checking": { + "type": "bool" + }, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "passive_interface": {"type": "str"}, + "prefix_suppression": {"type": "bool"}, + "priority": {"type": "int"}, + "process_id": {"required": True, "type": "int"}, + "queue_depth": { + "options": { + "hello": { + "options": { + "max_packets": {"type": "int"}, + "unlimited": {"type": "bool"}, + }, + "type": "dict", + }, + "update": { + "options": { + "max_packets": {"type": "int"}, + "unlimited": {"type": "bool"}, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "router_id": {"type": "str"}, + "shutdown": {"type": "bool"}, + "summary_address": { + "options": { + "address": {"type": "str"}, + "mask": {"type": "str"}, + "not_advertise": {"type": "bool"}, + "nssa_only": {"type": "bool"}, + "tag": {"type": "int"}, + }, + "type": "dict", + }, + "timers": { + "options": { + "lsa": {"type": "int"}, + "pacing": { + "options": { + "flood": {"type": "int"}, + "lsa_group": {"type": "int"}, + "retransmission": {"type": "int"}, + }, + "type": "dict", + }, + "throttle": { + "options": { + "lsa": { + "options": { + "first_delay": {"type": "int"}, + "max_delay": {"type": "int"}, + "min_delay": {"type": "int"}, + }, + "type": "dict", + }, + "spf": { + "options": { + "between_delay": { + "type": "int" + }, + "max_delay": {"type": "int"}, + "receive_delay": { + "type": "int" + }, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + }, + "type": "dict", + }, + "traffic_share": {"type": "bool"}, + "ttl_security": { + "options": { + "hops": {"type": "int"}, + "set": {"type": "bool"}, + }, + "type": "dict", + }, + "vrf": {"type": "str"}, + }, + "type": "list", + } + }, + "type": "dict", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py new file mode 100644 index 00000000..6b31ecd4 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/ospfv3/ospfv3.py @@ -0,0 +1,807 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the cisco.ios_ospfv3 module +""" + + +class Ospfv3Args(object): # pylint: disable=R0903 + """The arg spec for the cisco.ios_ospfv3 module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "type": "dict", + "options": { + "processes": { + "type": "list", + "elements": "dict", + "options": { + "process_id": {"required": True, "type": "int"}, + "address_family": { + "type": "list", + "elements": "dict", + "options": { + "afi": { + "type": "str", + "choices": ["ipv4", "ipv6"], + }, + "unicast": {"type": "bool"}, + "vrf": {"type": "str"}, + "adjacency": { + "type": "dict", + "options": { + "min_adjacency": {"type": "int"}, + "none": {"type": "bool"}, + "max_adjacency": {"type": "int"}, + "disable": {"type": "bool"}, + }, + }, + "areas": { + "type": "list", + "elements": "dict", + "options": { + "area_id": {"type": "str"}, + "authentication": { + "type": "dict", + "options": { + "key_chain": {"type": "str"}, + "null": {"type": "bool"}, + }, + }, + "default_cost": {"type": "int"}, + "filter_list": { + "type": "list", + "elements": "dict", + "options": { + "name": {"type": "str"}, + "direction": { + "type": "str", + "choices": ["in", "out"], + "required": True, + }, + }, + }, + "normal": {"type": "bool"}, + "nssa": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "default_information_originate": { + "type": "dict", + "options": { + "metric": { + "type": "int" + }, + "metric_type": { + "type": "int", + "choices": [1, 2], + }, + "nssa_only": { + "type": "bool" + }, + }, + }, + "no_redistribution": { + "type": "bool" + }, + "no_summary": {"type": "bool"}, + "translate": { + "type": "str", + "choices": [ + "always", + "suppress-fa", + ], + }, + }, + }, + "ranges": { + "type": "list", + "elements": "dict", + "options": { + "address": {"type": "str"}, + "netmask": {"type": "str"}, + "advertise": {"type": "bool"}, + "cost": {"type": "int"}, + "not_advertise": { + "type": "bool" + }, + }, + }, + "sham_link": { + "type": "dict", + "options": { + "source": {"type": "str"}, + "destination": {"type": "str"}, + "authentication": { + "type": "dict", + "options": { + "key_chain": { + "type": "str" + }, + "null": { + "type": "bool" + }, + }, + }, + "cost": {"type": "int"}, + "ttl_security": { + "type": "int" + }, + }, + }, + "stub": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "no_summary": {"type": "bool"}, + }, + }, + }, + }, + "authentication": { + "type": "dict", + "options": { + "deployment": {"type": "bool"}, + "normal": {"type": "bool"}, + }, + }, + "auto_cost": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "reference_bandwidth": {"type": "int"}, + }, + }, + "bfd": { + "type": "dict", + "options": { + "all_interfaces": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "capability": {"type": "bool"}, + "compatible": { + "type": "dict", + "options": { + "rfc1583": {"type": "bool"}, + "rfc1587": {"type": "bool"}, + "rfc5243": {"type": "bool"}, + }, + }, + "default_information": { + "type": "dict", + "options": { + "originate": {"type": "bool"}, + "always": {"type": "bool"}, + "metric": {"type": "int"}, + "metric_type": {"type": "int"}, + "route_map": {"type": "str"}, + }, + }, + "default_metric": {"type": "int"}, + "discard_route": { + "type": "dict", + "options": { + "sham_link": {"type": "bool"}, + "external": {"type": "bool"}, + "internal": {"type": "bool"}, + }, + }, + "distance": {"type": "int"}, + "distribute_list": { + "type": "dict", + "options": { + "acls": { + "type": "list", + "elements": "dict", + "options": { + "name": { + "type": "str", + "required": True, + }, + "direction": { + "type": "str", + "required": True, + "choices": ["in", "out"], + }, + "interface": {"type": "str"}, + "protocol": {"type": "str"}, + }, + }, + "prefix": { + "type": "dict", + "options": { + "name": { + "type": "str", + "required": True, + }, + "gateway_name": { + "type": "str" + }, + "direction": { + "type": "str", + "required": True, + "choices": ["in", "out"], + }, + "interface": {"type": "str"}, + "protocol": {"type": "str"}, + }, + }, + "route_map": { + "type": "dict", + "options": { + "name": { + "type": "str", + "required": True, + } + }, + }, + }, + }, + "event_log": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "one_shot": {"type": "bool"}, + "pause": {"type": "bool"}, + "size": {"type": "int"}, + }, + }, + "graceful_restart": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "disable": {"type": "bool"}, + "strict_lsa_checking": { + "type": "bool" + }, + }, + }, + "interface_id": { + "type": "dict", + "options": { + "ios_if_index": {"type": "bool"}, + "snmp_if_index": {"type": "bool"}, + }, + }, + "limit": { + "type": "dict", + "options": { + "dc": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "disable": {"type": "bool"}, + }, + }, + "non_dc": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "disable": {"type": "bool"}, + }, + }, + }, + }, + "local_rib_criteria": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "forwarding_address": {"type": "bool"}, + "inter_area_summary": {"type": "bool"}, + "nssa_translation": {"type": "bool"}, + }, + }, + "log_adjacency_changes": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "detail": {"type": "bool"}, + }, + }, + "manet": { + "type": "dict", + "options": { + "cache": { + "type": "dict", + "options": { + "acknowledgement": { + "type": "int" + }, + "update": {"type": "int"}, + }, + }, + "hello": { + "type": "dict", + "options": { + "multicast": {"type": "bool"}, + "unicast": {"type": "bool"}, + }, + }, + "peering": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "disable": {"type": "bool"}, + "per_interface": { + "type": "bool" + }, + "redundancy": {"type": "int"}, + }, + }, + "willingness": {"type": "int"}, + }, + }, + "max_lsa": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "threshold_value": {"type": "int"}, + "ignore_count": {"type": "int"}, + "ignore_time": {"type": "int"}, + "reset_time": {"type": "int"}, + "warning_only": {"type": "bool"}, + }, + }, + "max_metric": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + "external_lsa": {"type": "int"}, + "inter_area_lsas": {"type": "int"}, + "on_startup": { + "type": "dict", + "options": { + "time": {"type": "int"}, + "wait_for_bgp": { + "type": "bool" + }, + }, + }, + "stub_prefix_lsa": {"type": "bool"}, + }, + }, + "maximum_paths": {"type": "int"}, + "passive_interface": {"type": "str"}, + "prefix_suppression": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "queue_depth": { + "type": "dict", + "options": { + "hello": { + "type": "dict", + "options": { + "max_packets": {"type": "int"}, + "unlimited": {"type": "bool"}, + }, + }, + "update": { + "type": "dict", + "options": { + "max_packets": {"type": "int"}, + "unlimited": {"type": "bool"}, + }, + }, + }, + }, + "router_id": {"type": "str"}, + "shutdown": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "disable": {"type": "bool"}, + }, + }, + "summary_prefix": { + "type": "dict", + "options": { + "address": {"type": "str"}, + "mask": {"type": "str"}, + "not_advertise": {"type": "bool"}, + "nssa_only": {"type": "bool"}, + "tag": {"type": "int"}, + }, + }, + "timers": { + "type": "dict", + "options": { + "lsa": {"type": "int"}, + "manet": { + "type": "dict", + "options": { + "cache": { + "type": "dict", + "options": { + "acknowledgement": { + "type": "int" + }, + "redundancy": { + "type": "int" + }, + }, + }, + "hello": {"type": "bool"}, + "peering": { + "type": "dict", + "options": { + "set": { + "type": "bool" + }, + "per_interface": { + "type": "bool" + }, + "redundancy": { + "type": "int" + }, + }, + }, + "willingness": {"type": "int"}, + }, + }, + "pacing": { + "type": "dict", + "options": { + "flood": {"type": "int"}, + "lsa_group": {"type": "int"}, + "retransmission": { + "type": "int" + }, + }, + }, + "throttle": { + "type": "dict", + "options": { + "lsa": { + "type": "dict", + "options": { + "first_delay": { + "type": "int" + }, + "min_delay": { + "type": "int" + }, + "max_delay": { + "type": "int" + }, + }, + }, + "spf": { + "type": "dict", + "options": { + "receive_delay": { + "type": "int" + }, + "between_delay": { + "type": "int" + }, + "max_delay": { + "type": "int" + }, + }, + }, + }, + }, + }, + }, + }, + }, + "adjacency": { + "type": "dict", + "options": { + "min_adjacency": {"type": "int"}, + "max_adjacency": {"type": "int"}, + "none": {"type": "bool"}, + }, + }, + "areas": { + "type": "list", + "elements": "dict", + "options": { + "area_id": {"type": "str"}, + "authentication": { + "type": "dict", + "options": { + "key_chain": {"type": "str"}, + "ipsec": { + "type": "dict", + "options": { + "spi": {"type": "int"}, + "md5": {"type": "int"}, + "sha1": {"type": "int"}, + "hex_string": {"type": "str"}, + }, + }, + }, + }, + "default_cost": {"type": "int"}, + "nssa": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "default_information_originate": { + "type": "dict", + "options": { + "metric": {"type": "int"}, + "metric_type": { + "type": "int", + "choices": [1, 2], + }, + "nssa_only": {"type": "bool"}, + }, + }, + "no_redistribution": {"type": "bool"}, + "no_summary": {"type": "bool"}, + "translate": { + "type": "str", + "choices": [ + "always", + "suppress-fa", + ], + }, + }, + }, + "stub": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "no_summary": {"type": "bool"}, + }, + }, + }, + }, + "authentication": {"type": "bool"}, + "auto_cost": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "reference_bandwidth": {"type": "int"}, + }, + }, + "bfd": {"type": "bool"}, + "compatible": { + "type": "dict", + "options": { + "rfc1583": {"type": "bool"}, + "rfc1587": {"type": "bool"}, + "rfc5243": {"type": "bool"}, + }, + }, + "event_log": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "one_shot": {"type": "bool"}, + "pause": {"type": "bool"}, + "size": {"type": "int"}, + }, + }, + "graceful_restart": { + "type": "dict", + "options": { + "disable": {"type": "bool"}, + "strict_lsa_checking": {"type": "bool"}, + }, + }, + "help": {"type": "bool"}, + "interface_id": {"type": "bool"}, + "limit": { + "type": "dict", + "options": { + "dc": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "disable": {"type": "bool"}, + }, + }, + "non_dc": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "disable": {"type": "bool"}, + }, + }, + }, + }, + "local_rib_criteria": { + "type": "dict", + "options": { + "enable": {"type": "bool"}, + "forwarding_address": {"type": "bool"}, + "inter_area_summary": {"type": "bool"}, + "nssa_translation": {"type": "bool"}, + }, + }, + "log_adjacency_changes": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "detail": {"type": "bool"}, + }, + }, + "manet": { + "type": "dict", + "options": { + "cache": { + "type": "dict", + "options": { + "acknowledgement": {"type": "int"}, + "redundancy": {"type": "int"}, + }, + }, + "hello": {"type": "bool"}, + "peering": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "per_interface": {"type": "bool"}, + "redundancy": {"type": "int"}, + }, + }, + "willingness": {"type": "int"}, + }, + }, + "max_lsa": { + "type": "dict", + "options": { + "number": {"type": "int"}, + "threshold_value": {"type": "int"}, + "ignore_count": {"type": "int"}, + "ignore_time": {"type": "int"}, + "reset_time": {"type": "int"}, + "warning_only": {"type": "bool"}, + }, + }, + "max_metric": { + "type": "dict", + "options": { + "router_lsa": { + "type": "bool", + "required": True, + }, + "external_lsa": {"type": "int"}, + "include_stub": {"type": "bool"}, + "on_startup": { + "type": "dict", + "options": { + "time": {"type": "int"}, + "wait_for_bgp": {"type": "bool"}, + }, + }, + "summary_lsa": {"type": "int"}, + }, + }, + "passive_interface": {"type": "str"}, + "prefix_suppression": {"type": "bool"}, + "queue_depth": { + "type": "dict", + "options": { + "hello": { + "type": "dict", + "options": { + "max_packets": {"type": "int"}, + "unlimited": {"type": "bool"}, + }, + } + }, + }, + "router_id": {"type": "str"}, + "shutdown": {"type": "bool"}, + "timers": { + "type": "dict", + "options": { + "lsa": {"type": "int"}, + "manet": { + "type": "dict", + "options": { + "cache": { + "type": "dict", + "options": { + "acknowledgement": { + "type": "int" + }, + "redundancy": {"type": "int"}, + }, + }, + "hello": {"type": "bool"}, + "peering": { + "type": "dict", + "options": { + "set": {"type": "bool"}, + "per_interface": { + "type": "bool" + }, + "redundancy": {"type": "int"}, + }, + }, + "willingness": {"type": "int"}, + }, + }, + "pacing": { + "type": "dict", + "options": { + "flood": {"type": "int"}, + "lsa_group": {"type": "int"}, + "retransmission": {"type": "int"}, + }, + }, + "throttle": { + "type": "dict", + "options": { + "lsa": { + "type": "dict", + "options": { + "first_delay": {"type": "int"}, + "min_delay": {"type": "int"}, + "max_delay": {"type": "int"}, + }, + }, + "spf": { + "type": "dict", + "options": { + "receive_delay": { + "type": "int" + }, + "between_delay": { + "type": "int" + }, + "max_delay": {"type": "int"}, + }, + }, + }, + }, + }, + }, + }, + } + }, + }, + "running_config": {"type": "str"}, + "state": { + "type": "str", + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "parsed", + "rendered", + ], + "default": "merged", + }, + } # pylint: disable=C0301 diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/static_routes.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/static_routes.py new file mode 100644 index 00000000..e7dc942f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/static_routes/static_routes.py @@ -0,0 +1,100 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_static_routes module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class Static_RoutesArgs(object): + """The arg spec for the ios_static_routes module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "vrf": {"type": "str"}, + "address_families": { + "elements": "dict", + "type": "list", + "options": { + "afi": { + "required": True, + "choices": ["ipv4", "ipv6"], + "type": "str", + }, + "routes": { + "elements": "dict", + "type": "list", + "options": { + "dest": {"required": True, "type": "str"}, + "topology": {"type": "str"}, + "next_hops": { + "elements": "dict", + "type": "list", + "options": { + "forward_router_address": { + "type": "str" + }, + "interface": {"type": "str"}, + "dhcp": {"type": "bool"}, + "distance_metric": {"type": "int"}, + "global": {"type": "bool"}, + "name": {"type": "str"}, + "multicast": {"type": "bool"}, + "permanent": {"type": "bool"}, + "tag": {"type": "int"}, + "track": {"type": "int"}, + }, + }, + }, + }, + }, + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "gathered", + "rendered", + "parsed", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py new file mode 100644 index 00000000..29528962 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/argspec/vlans/vlans.py @@ -0,0 +1,71 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The arg spec for the ios_vlans module +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +class VlansArgs(object): + """The arg spec for the ios_vlans module + """ + + def __init__(self, **kwargs): + pass + + argument_spec = { + "config": { + "elements": "dict", + "options": { + "name": {"type": "str"}, + "vlan_id": {"required": True, "type": "int"}, + "mtu": {"type": "int"}, + "remote_span": {"type": "bool"}, + "state": {"type": "str", "choices": ["active", "suspend"]}, + "shutdown": { + "type": "str", + "choices": ["enabled", "disabled"], + }, + }, + "type": "list", + }, + "running_config": {"type": "str"}, + "state": { + "choices": [ + "merged", + "replaced", + "overridden", + "deleted", + "rendered", + "parsed", + "gathered", + ], + "default": "merged", + "type": "str", + }, + } diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py new file mode 100644 index 00000000..a650b295 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acl_interfaces/acl_interfaces.py @@ -0,0 +1,415 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_acl_interfaces class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible.module_utils.six import iteritems +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_duplicate_interface, + normalize_interface, +) + + +class Acl_Interfaces(ConfigBase): + """ + The ios_acl_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["acl_interfaces"] + + def __init__(self, module): + super(Acl_Interfaces, self).__init__(module) + + def get_acl_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + acl_interfaces_facts = facts["ansible_network_resources"].get( + "acl_interfaces" + ) + if not acl_interfaces_facts: + return [] + + return acl_interfaces_facts + + def execute_module(self): + """ Execute the module + :rtype: A dictionary + :returns: The result from moduel execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_acl_interfaces_facts = self.get_acl_interfaces_facts() + else: + existing_acl_interfaces_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_acl_interfaces_facts)) + + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_acl_interfaces_facts = self.get_acl_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_acl_interfaces_facts( + data=running_config + ) + else: + changed_acl_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_acl_interfaces_facts + if result["changed"]: + result["after"] = changed_acl_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_acl_interfaces_facts + + result["warnings"] = warnings + + return result + + def set_config(self, existing_acl_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + want = self._module.params["config"] + if want: + for item in want: + item["name"] = normalize_interface(item["name"]) + + have = existing_acl_interfaces_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + state = self._module.params["state"] + if ( + state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + state + ) + ) + + if state == "overridden": + commands = self._state_overridden(want, have) + elif state == "deleted": + commands = self._state_deleted(want, have) + elif state == "merged" or state == "rendered": + commands = self._state_merged(want, have) + elif state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + commands.extend(self._clear_config(interface, each, "replaced")) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + if each["name"] == interface["name"]: + break + else: + # We didn't find a matching desired state, which means we can + # pretend we recieved an empty desired state. + interface = dict(name=each["name"]) + commands.extend(self._clear_config(interface, each)) + continue + commands.extend(self._clear_config(interface, each, "overridden")) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + :param want: the additive configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + # configuring non-existing interface + commands.extend(self._set_config(interface, dict())) + continue + commands.extend(self._set_config(interface, each)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + :param want: the objects from which the configuration should be removed + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + commands.extend(self._clear_config(dict(), each)) + + return commands + + def dict_to_set(self, input_dict, test_set, final_set, count=0): + # recursive function to convert input dict to set for comparision + test_dict = dict() + if isinstance(input_dict, dict): + input_dict_len = len(input_dict) + for k, v in sorted(iteritems(input_dict)): + count += 1 + if isinstance(v, list): + for each in v: + if isinstance(each, dict): + input_dict_len = len(each) + if [ + True for i in each.values() if type(i) == list + ]: + self.dict_to_set(each, set(), final_set, count) + else: + self.dict_to_set(each, test_set, final_set, 0) + else: + if v is not None: + test_dict.update({k: v}) + if ( + tuple(iteritems(test_dict)) not in test_set + and count == input_dict_len + ): + test_set.add(tuple(iteritems(test_dict))) + count = 0 + if count == input_dict_len + 1: + test_set.update(tuple(iteritems(test_dict))) + final_set.add(tuple(test_set)) + + def _set_config(self, want, have): + """ Function that sets the acls config based on the want and have config + :param want: want config + :param have: have config + :param acl_want: want acl config + :param afi: acl afi type + :rtype: A list + :returns: the commands generated based on input want/have params + """ + commands = [] + + want_set = set() + have_set = set() + self.dict_to_set(want, set(), want_set) + self.dict_to_set(have, set(), have_set) + + for w in want_set: + want_afi = dict(w).get("afi") + if have_set: + + def common_diff_config_code(diff_list, cmd, commands): + for each in diff_list: + try: + temp = dict(each) + temp_cmd = cmd + " {0} {1}".format( + temp["name"], temp["direction"] + ) + if temp_cmd not in commands: + commands.append(temp_cmd) + except ValueError: + continue + + for h in have_set: + have_afi = dict(h).get("afi") + if have_afi == want_afi: + if want_afi == "ipv4": + diff = set(w) - set(h) + if diff: + cmd = "ip access-group" + common_diff_config_code(diff, cmd, commands) + if want_afi == "ipv6": + diff = set(w) - set(h) + if diff: + cmd = "ipv6 traffic-filter" + common_diff_config_code(diff, cmd, commands) + break + else: + if want_afi == "ipv4": + diff = set(w) - set(h) + if diff: + cmd = "ip access-group" + common_diff_config_code(diff, cmd, commands) + if want_afi == "ipv6": + diff = set(w) - set(h) + if diff: + cmd = "ipv6 traffic-filter" + common_diff_config_code(diff, cmd, commands) + else: + + def common_want_config_code(want, cmd, commands): + for each in want: + if each[0] == "afi": + continue + temp = dict(each) + temp_cmd = cmd + " {0} {1}".format( + temp["name"], temp["direction"] + ) + commands.append(temp_cmd) + + if want_afi == "ipv4": + cmd = "ip access-group" + common_want_config_code(w, cmd, commands) + if want_afi == "ipv6": + cmd = "ipv6 traffic-filter" + common_want_config_code(w, cmd, commands) + commands.sort() + if commands: + interface = want.get("name") + commands.insert(0, "interface {0}".format(interface)) + + return commands + + def _clear_config(self, want, have, state=""): + """ Function that deletes the acl config based on the want and have config + :param acl: acl config + :param config: config + :rtype: A list + :returns: the commands generated based on input acl/config params + """ + commands = [] + + if want.get("name"): + interface = "interface " + want["name"] + else: + interface = "interface " + have["name"] + + w_access_group = want.get("access_groups") + temp_want_acl_name = [] + if w_access_group: + # get the user input afi and acls + for each in w_access_group: + want_acls = each.get("acls") + if want_acls: + for each in want_acls: + temp_want_acl_name.append(each.get("name")) + + h_access_group = have.get("access_groups") + if h_access_group: + for access_grp in h_access_group: + for acl in access_grp.get("acls"): + acl_name = acl.get("name") + acl_direction = acl.get("direction") + if access_grp.get("afi") == "ipv4": + if acl_name in temp_want_acl_name: + continue + cmd = "no ip access-group" + cmd += " {0} {1}".format(acl_name, acl_direction) + commands.append(cmd) + elif access_grp.get("afi") == "ipv6": + if acl_name in temp_want_acl_name: + continue + cmd = "no ipv6 traffic-filter" + cmd += " {0} {1}".format(acl_name, acl_direction) + commands.append(cmd) + if commands: + # inserting the interface at first + commands.insert(0, interface) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py new file mode 100644 index 00000000..b5f7e1dc --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/acls/acls.py @@ -0,0 +1,301 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_acls class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +import copy + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.acls import ( + AclsTemplate, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.resource_module import ( + ResourceModule, +) + + +class Acls(ResourceModule): + """ + The ios_acls class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["acls"] + + def __init__(self, module): + super(Acls, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="acls", + tmplt=AclsTemplate(), + ) + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from moduel execution + """ + self.gen_config() + self.run_commands() + return self.result + + def gen_config(self): + """ Select the appropriate function based on the state provided + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + if self.want: + wantd = self.want + else: + wantd = {} + if self.have: + haved = self.have + else: + haved = {} + + # if state is merged, merge want onto have and then compare + if self.state == "merged": + temp_have = copy.deepcopy(haved) + temp = [] + temp_acls = {} + + for each in wantd: + want_in_have = False + for each_have in temp_have: + if each.get("afi") == each_have.get("afi"): + temp_acls["acls"] = [] + for each_acls in each.get("acls"): + want_acls_in_have = False + for each_have_acls in each_have.get("acls"): + if each_acls["name"] == each_have_acls["name"]: + aces = [] + for each_ace in each_acls["aces"]: + each_ace_sequence = each_ace.get( + "sequence" + ) + if each_ace_sequence: + for ( + each_have_ace + ) in each_have_acls["aces"]: + if ( + each_ace_sequence + == each_have_ace.get( + "sequence" + ) + ): + aces.append( + dict( + dict_merge( + each_have_ace, + each_ace, + ) + ) + ) + break + if aces: + temp_acls["acls"].append( + { + "aces": aces, + "name": each_acls["name"], + } + ) + else: + temp_acls["acls"].append( + dict( + dict_merge( + each_have_acls, each_acls + ) + ) + ) + want_acls_in_have = True + if not want_acls_in_have: + temp_acls["acls"].append(each_acls) + temp_acls.update({"afi": each.get("afi")}) + # temp.append(dict(dict_merge(each, each_have))) + temp.append(temp_acls) + want_in_have = True + if not want_in_have: + temp.append(each) + if temp: + wantd = temp + + # if state is deleted, empty out wantd and set haved to wantd + if self.state == "deleted": + if wantd: + for each_have in haved: + count = 0 + for every_have in each_have.get("acls"): + del_want = False + for each_want in wantd: + want_acls = each_want.get("acls") + want_afi = each_want.get("afi") + if want_acls: + for every_want in each_want.get("acls"): + if every_want.get( + "name" + ) == every_have.get("name"): + del_want = True + break + elif want_afi and want_afi == each_have["afi"]: + del_want = True + if not del_want: + del each_have.get("acls")[count] + count += 1 + wantd = {} + for each in haved: + for every_acls in each.get("acls"): + every_acls.update({"afi": each.get("afi")}) + self.addcmd(every_acls, "acls_name", True) + + # remove superfluous config for overridden and deleted + if self.state in ["overridden"] and wantd: + for each_have in haved: + count = 0 + for every_have in each_have.get("acls"): + del_want = False + for each_want in wantd: + for every_want in each_want.get("acls"): + if every_want.get("name") == every_have.get( + "name" + ): + del_want = True + break + if not del_want: + every_have.update({"afi": each_have.get("afi")}) + self.addcmd(every_have, "acls_name", True) + count += 1 + + for w in wantd: + want_in_have = False + if haved: + for h in haved: + if w["afi"] == h["afi"]: + want_in_have = True + for e_w in w["acls"]: + set_want = True + for e_h in h["acls"]: + if e_w["name"] == e_h["name"]: + e_w.update({"afi": w.get("afi")}) + e_h.update({"afi": h.get("afi")}) + self._compare(want=e_w, have=e_h) + set_want = False + break + if set_want: + e_w.update({"afi": w.get("afi")}) + self._compare(want=e_w, have={}) + if not haved or not want_in_have: + for e_w in w["acls"]: + e_w.update({"afi": w["afi"]}) + self._compare(want=e_w, have={}) + + def _compare(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 Ospf_interfaces network resource. + """ + parsers = ["aces"] + + if want.get("aces"): + cmd_added = True + for each in want.get("aces"): + set_want = True + if have.get("aces"): + for each_have in have.get("aces"): + if each.get("source") == each_have.get( + "source" + ) and each.get("destination") == each_have.get( + "destination" + ): + set_want = False + if each.get("sequence") and not each_have.get( + "sequence" + ): + each_have.update( + {"sequence": each.get("sequence")} + ) + elif not each.get("sequence") and each_have.get( + "sequence" + ): + each.update( + {"sequence": each_have.get("sequence")} + ) + if each.get("protocol") and not each_have.get( + "protocol" + ): + each_have.update( + {"protocol": each.get("protocol")} + ) + elif not each.get("protocol") and each_have.get( + "protocol" + ): + each.update( + {"protocol": each_have.get("protocol")} + ) + if each != each_have: + if cmd_added: + self.addcmd(have, "acls_name", False) + cmd_added = False + self.compare( + parsers=parsers, + want={"aces": each, "afi": want["afi"]}, + have={ + "aces": each_have, + "afi": have["afi"], + }, + ) + elif each.get("sequence") == each_have.get("sequence"): + if cmd_added: + self.addcmd(have, "acls_name", False) + cmd_added = False + self.compare( + parsers=parsers, + want={}, + have={"aces": each_have, "afi": have["afi"]}, + ) + self.compare( + parsers=parsers, + want={"aces": each, "afi": want["afi"]}, + have={}, + ) + set_want = False + else: + if cmd_added: + self.addcmd(want, "acls_name", False) + cmd_added = False + self.compare( + parsers=parsers, + want={"aces": each, "afi": want["afi"]}, + have=dict(), + ) + set_want = False + if set_want: + if cmd_added: + self.addcmd(want, "acls_name", False) + cmd_added = False + self.compare( + parsers=parsers, + want={"aces": each, "afi": want["afi"]}, + have=dict(), + ) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py new file mode 100644 index 00000000..6a20e23b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/bgp_global/bgp_global.py @@ -0,0 +1,452 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2020 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 cisco.ios_bgp_global 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 ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.resource_module import ( + ResourceModule, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.bgp_global import ( + Bgp_globalTemplate, +) + + +class Bgp_global(ResourceModule): + """ + The cisco.ios_bgp_global config class + """ + + parsers = [ + "as_number", + "bgp.additional_paths", + "bgp.dampening", + "bgp.graceful_shutdown", + "route_server_context", + "synchronization", + "table_map", + "timers", + ] + + def __init__(self, module): + super(Bgp_global, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="bgp_global", + tmplt=Bgp_globalTemplate(), + ) + + 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. + """ + if self.want: + wantd = {self.want["as_number"]: self.want} + else: + wantd = {} + if self.have: + haved = {self.have["as_number"]: self.have} + else: + haved = {} + + wantd, haved = self.list_to_dict(wantd, haved) + # 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" and self.have: + if ( + not self.want + or self.have.get("as_number") == self.want.get("as_number") + and len(self.have) > 1 + ): + self.addcmd( + {"as_number": haved[list(haved)[0]].pop("as_number")}, + "as_number", + False, + ) + self.compare( + parsers=self.parsers, want={}, have=haved[list(haved)[0]] + ) + self._compare(want={}, have=haved[list(haved)[0]]) + self._list_params_compare(want={}, have=haved[list(haved)[0]]) + wantd = {} + + if self.state == "purged" and self.have: + if ( + not self.want + or (self.have.get("as_number") == self.want.get("as_number")) + and len(self.have) >= 1 + ): + self.addcmd( + {"as_number": haved[list(haved)[0]].pop("as_number")}, + "as_number", + True, + ) + wantd = {} + + for k, want in iteritems(wantd): + self._compare(want=want, have=haved.pop(k, {})) + + def _compare(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 Ospf_interfaces network resource. + """ + if want != have and self.state != "deleted": + self.addcmd(have, "as_number", False) + self.compare(parsers=self.parsers, want=want, have=have) + self._bgp_config_compare(want.get("bgp"), have.get("bgp")) + self._list_params_compare(want, have) + elif self.state == "deleted": + self._bgp_config_compare(dict(), have.get("bgp")) + + def _bgp_config_compare(self, want, have): + if want and have and want != have and isinstance(want, dict): + set_have = True + for k, val in iteritems(want): + if isinstance(val, dict): + if k in have: + self.compare( + parsers=["bgp.config"], + want={"bgp": {k: val}}, + have={"bgp": {k: have[k]}}, + ) + if k in have and self.state == "replaced": + if set_have: + self.compare( + parsers=["bgp.config"], + want=dict(), + have={"bgp": {k: have[k]}}, + ) + self.compare( + parsers=["bgp.config"], + want={"bgp": {k: val}}, + have={"bgp": {k: have[k]}}, + ) + else: + self.compare( + parsers=["bgp.config"], + want={"bgp": {k: val}}, + have=dict(), + ) + elif want and not have: + for k, val in iteritems(want): + if not isinstance(val, list): + self.compare( + parsers=["bgp.config"], + want={"bgp": {k: val}}, + have=dict(), + ) + elif not want and have: + for k, val in iteritems(have): + if not isinstance(val, list): + self.compare( + parsers=["bgp.config"], + want=dict(), + have={"bgp": {k: val}}, + ) + + def _list_params_compare(self, want, have): + def multi_compare(parser, want, have): + if want: + dict_iter = want + else: + dict_iter = have + for k, v in iteritems(dict_iter): + if parser == "neighbor": + type = None + if want.get("address") or have.get("address"): + type = "address" + want_type_val = want.get("address") + have_type_val = have.get("address") + if want.get("tag") or have.get("tag"): + type = "tag" + want_type_val = want.get("tag") + have_type_val = have.get("tag") + if want.get("ipv6_adddress") or have.get("ipv6_address"): + type = "ipv6_adddress" + want_type_val = want.get("ipv6_adddress") + have_type_val = have.get("ipv6_adddress") + if want and have: + self.compare( + parsers=[parser], + want={parser: {k: v, type: want_type_val}}, + have={ + parser: { + k: have.get(k, {}), + type: have_type_val, + } + }, + ) + elif not have: + self.compare( + parsers=[parser], + want={parser: {k: v, type: want_type_val}}, + have=dict(), + ) + elif not want: + self.compare( + parsers=[parser], + want=dict(), + have={parser: {k: v, type: have_type_val}}, + ) + if parser == "redistribute": + if want and have: + self.compare( + parsers=[parser], + want={parser: {k: v}}, + have={parser: {k: have.get(k, {})}}, + ) + elif not have: + self.compare( + parsers=[parser], + want={parser: {k: v}}, + have=dict(), + ) + elif not want: + self.compare( + parsers=[parser], + want=dict(), + have={parser: {k: v}}, + ) + + for every in ["bgp", "neighbor", "redistribute"]: + + param_want = want.get(every) + param_have = have.get(every) + if param_want and param_want != param_have: + set_have = True + if every == "bgp": + for each in ["bestpath", "nopeerup_delay"]: + set_have = True + for k, v in iteritems(param_want.get(each)): + if ( + param_have + and k in param_have.get(each) + and self.state == "merged" + ): + if k in param_have.get(each): + self.compare( + parsers=[every + "." + each], + want={"bgp": {each: {k: v}}}, + have={ + "bgp": { + each: { + k: param_have.get( + each, {} + )[k] + } + } + }, + ) + + elif param_have and self.state == "replaced": + if set_have and param_have.get(each): + if isinstance(each, dict): + for key_have, val_have in iteritems( + param_have.get(each) + ): + multi_compare( + parser=every, + want=dict(), + have=val_have, + ) + else: + # q(param_have, param_want) + temp_have = { + each: {i: param_have[each][i]} + for i in list(param_have[each]) + if i not in param_want[each] + } + temp_want = { + each: {i: param_want[each][i]} + for i in list(param_want[each]) + if i not in param_have[each] + } + # q(temp_have) + if temp_have: + self.compare( + parsers=[every + "." + each], + want=dict(), + have={"bgp": temp_have}, + ) + if temp_want: + self.compare( + parsers=[every + "." + each], + want={"bgp": temp_want}, + have=dict(), + ) + set_have = False + else: + self.compare( + parsers=[every + "." + each], + want={"bgp": {each: {k: v}}}, + have=dict(), + ) + if every == "neighbor" or every == "redistribute": + for k, v in iteritems(param_want): + if every == "neighbor": + if param_have and self.state == "merged": + multi_compare( + parser=every, + want=v, + have=param_have.pop(k, {}), + ) + elif param_have and self.state == "replaced": + if set_have: + for key_have, val_have in iteritems( + param_have + ): + multi_compare( + parser=every, + want=dict(), + have=val_have, + ) + set_have = False + multi_compare( + parser=every, want=v, have=dict() + ) + else: + multi_compare( + parser=every, want=v, have=dict() + ) + self.commands = ( + [ + each + for each in self.commands + if "neighbor" not in each + ] + + [ + each + for each in self.commands + if "remote-as" in each + and "neighbor" in each + ] + + [ + each + for each in self.commands + if "remote-as" not in each + and "neighbor" in each + ] + ) + elif every == "redistribute": + if param_have and self.state == "merged": + multi_compare( + parser=every, + want={k: v}, + have={k: param_have.pop(k, {})}, + ) + if param_have and self.state == "replaced": + if set_have: + for key_have, val_have in iteritems( + param_have + ): + multi_compare( + parser=every, + want=dict(), + have=val_have, + ) + set_have = False + multi_compare( + parser=every, want={k: v}, have=dict() + ) + else: + multi_compare( + parser=every, want={k: v}, have=dict() + ) + elif param_have and self.state == "deleted": + del_config_have = True + if param_have: + for k, v in iteritems(param_have): + if every == "bgp" and del_config_have: + for each in ["bestpath", "nopeerup_delay"]: + for k, v in iteritems(param_have.get(each)): + self.compare( + parsers=[every + "." + each], + want=dict(), + have={"bgp": {each: {k: v}}}, + ) + del_config_have = False + elif every == "neighbor": + multi_compare(parser=every, want=dict(), have=v) + elif every == "redistribute": + if param_have: + multi_compare( + parser=every, want=dict(), have={k: v} + ) + + def list_to_dict(self, wantd, haved): + for thing in wantd, haved: + if thing: + for key, val in iteritems(thing): + for every in ["bgp", "neighbor", "redistribute"]: + value = val.get(every) + if value: + if isinstance(value, dict): + for k, v in iteritems(val.get(every)): + if isinstance(v, list): + temp = dict() + temp[k] = {} + for each in v: + temp[k].update(each) + val[every][k] = temp[k] + elif isinstance(value, list): + temp = dict() + temp[every] = {} + for each in value: + if every == "neighbor": + if each.get("address"): + temp[every].update( + {each.get("address"): each} + ) + elif each.get("tag"): + temp[every].update( + {each.get("tag"): each} + ) + elif each.get("ipv6_adddress"): + temp[every].update( + { + each.get( + "ipv6_adddress" + ): each + } + ) + elif every == "redistribute": + temp[every].update(each) + val[every] = temp[every] + return wantd, haved diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/interfaces.py new file mode 100644 index 00000000..a449f5f0 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/interfaces/interfaces.py @@ -0,0 +1,353 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_interfaces class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_command_from_config_list, + add_command_to_config_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, + remove_duplicate_interface, +) + + +class Interfaces(ConfigBase): + """ + The ios_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["interfaces"] + + params = ("description", "mtu", "speed", "duplex") + + def __init__(self, module): + super(Interfaces, self).__init__(module) + + def get_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + interfaces_facts = facts["ansible_network_resources"].get("interfaces") + if not interfaces_facts: + return [] + + return interfaces_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from moduel execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_interfaces_facts = self.get_interfaces_facts() + else: + existing_interfaces_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_interfaces_facts = self.get_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_interfaces_facts(data=running_config) + else: + changed_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_interfaces_facts + if result["changed"]: + result["after"] = changed_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_interfaces_facts + result["warnings"] = warnings + + return result + + def set_config(self, existing_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_interfaces_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state == "merged" or self.state == "rendered": + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :param interface_type: interface type + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + if interface["name"] in each["name"]: + break + else: + # configuring non-existing interface + commands.extend(self._set_config(interface, dict())) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + + :param want: the desired configuration as a dictionary + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + count = 0 + if each["name"] == interface["name"]: + break + if interface["name"] in each["name"]: + break + count += 1 + 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)) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # as the pre-existing interface are now configured by + # above set_config call, deleting the respective + # interface entry from the want list + del want[count] + + # Iterating through want list which now only have new interfaces to be + # configured + for each in want: + commands.extend(self._set_config(each, dict())) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :param want: the additive configuration as a dictionary + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + # configuring non-existing interface + commands.extend(self._set_config(interface, dict())) + continue + commands.extend(self._set_config(interface, each)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :param want: the objects from which the configuration should be removed + :param obj_in_have: the current configuration as a dictionary + :param interface_type: interface type + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + interface = dict(name=interface["name"]) + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + want = dict() + commands.extend(self._clear_config(want, each)) + + return commands + + def _set_config(self, want, have): + # Set the interface config based on the want and have config + commands = [] + interface = "interface " + want["name"] + + # Get the diff b/w want and have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + diff = dict(diff) + for item in self.params: + if diff.get(item): + cmd = item + " " + str(want.get(item)) + add_command_to_config_list(interface, cmd, commands) + if diff.get("enabled"): + add_command_to_config_list(interface, "no shutdown", commands) + elif diff.get("enabled") is False: + add_command_to_config_list(interface, "shutdown", commands) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + + if want.get("name"): + interface_type = get_interface_type(want["name"]) + interface = "interface " + want["name"] + else: + interface_type = get_interface_type(have["name"]) + interface = "interface " + have["name"] + + if have.get("description") and want.get("description") != have.get( + "description" + ): + remove_command_from_config_list(interface, "description", commands) + if not have.get("enabled") and want.get("enabled") != have.get( + "enabled" + ): + # if enable is False set enable as True which is the default behavior + remove_command_from_config_list(interface, "shutdown", commands) + + if interface_type.lower() == "gigabitethernet": + if ( + have.get("speed") + and have.get("speed") != "auto" + and want.get("speed") != have.get("speed") + ): + remove_command_from_config_list(interface, "speed", commands) + if ( + have.get("duplex") + and have.get("duplex") != "auto" + and want.get("duplex") != have.get("duplex") + ): + remove_command_from_config_list(interface, "duplex", commands) + if have.get("mtu") and want.get("mtu") != have.get("mtu"): + remove_command_from_config_list(interface, "mtu", commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py new file mode 100644 index 00000000..b9451fe0 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l2_interfaces/l2_interfaces.py @@ -0,0 +1,478 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_l2_interfaces class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_command_from_config_list, + add_command_to_config_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, + remove_duplicate_interface, +) + + +class L2_Interfaces(ConfigBase): + """ + The ios_l2_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["l2_interfaces"] + + access_cmds = {"access_vlan": "switchport access vlan"} + voice_cmds = {"voice_vlan": "switchport voice vlan"} + trunk_cmds = { + "encapsulation": "switchport trunk encapsulation", + "pruning_vlans": "switchport trunk pruning vlan", + "pruning_vlans_add": "switchport trunk pruning vlan add", + "native_vlan": "switchport trunk native vlan", + "allowed_vlans": "switchport trunk allowed vlan", + "allowed_vlans_add": "switchport trunk allowed vlan add", + } + + def get_l2_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + l2_interfaces_facts = facts["ansible_network_resources"].get( + "l2_interfaces" + ) + if not l2_interfaces_facts: + return [] + + return l2_interfaces_facts + + def execute_module(self): + """ Execute the module + :rtype: A dictionary + :returns: The result from moduel execution + """ + result = {"changed": False} + commands = [] + warnings = [] + if self.state in self.ACTION_STATES: + existing_l2_interfaces_facts = self.get_l2_interfaces_facts() + else: + existing_l2_interfaces_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_l2_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_l2_interfaces_facts = self.get_l2_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_l2_interfaces_facts( + data=running_config + ) + else: + changed_l2_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_l2_interfaces_facts + if result["changed"]: + result["after"] = changed_l2_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_l2_interfaces_facts + + result["warnings"] = warnings + return result + + def set_config(self, existing_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_facts + resp = self.set_state(want, have) + + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have, self._module) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state == "merged" or self.state == "rendered": + commands = self._state_merged(want, have, self._module) + elif self.state == "replaced": + commands = self._state_replaced(want, have, self._module) + + return commands + + def _state_replaced(self, want, have, module): + """ The command generator when state is replaced + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :param interface_type: interface type + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each, module)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have, module): + """ The command generator when state is overridden + :param want: the desired configuration as a dictionary + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + if each["name"] == interface["name"]: + break + 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"]) + kwargs = {"want": interface, "have": each} + commands.extend(self._clear_config(**kwargs)) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each, module)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have, module): + """ The command generator when state is merged + :param want: the additive configuration as a dictionary + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + # configuring non-existing interface + commands.extend(self._set_config(interface, dict(), module)) + continue + commands.extend(self._set_config(interface, each, module)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + :param want: the objects from which the configuration should be removed + :param obj_in_have: the current configuration as a dictionary + :param interface_type: interface type + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + interface = dict(name=interface["name"]) + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + want = dict() + commands.extend(self._clear_config(want, each)) + + return commands + + def _check_for_correct_vlan_range(self, vlan, module): + # Function to check if the VLAN range passed is Valid + for each in vlan: + vlan_range = each.split("-") + if len(vlan_range) > 1: + if vlan_range[0] < vlan_range[1]: + return True + else: + module.fail_json( + msg="Command rejected: Bad VLAN list - end of range not larger than the" + " start of range!" + ) + else: + return True + + def _set_config(self, want, have, module): + # Set the interface config based on the want and have config + commands = [] + interface = "interface " + want["name"] + + # Get the diff b/w want and have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + want_trunk = dict(want_dict).get("trunk") + have_trunk = dict(have_dict).get("trunk") + if want_trunk and have_trunk: + diff = set(tuple(dict(want_dict).get("trunk"))) - set( + tuple(dict(have_dict).get("trunk")) + ) + else: + diff = want_dict - have_dict + + if diff: + diff = dict(diff) + mode = diff.get("mode") + access = diff.get("access") + trunk = diff.get("trunk") + + if access: + cmd = "switchport access vlan {0}".format(access[0][1]) + add_command_to_config_list(interface, cmd, commands) + + if diff.get("voice"): + cmd = "switchport voice vlan {0}".format( + diff.get("voice")[0][1] + ) + add_command_to_config_list(interface, cmd, commands) + + if want_trunk: + if trunk: + diff = dict(trunk) + if diff.get("encapsulation"): + cmd = self.trunk_cmds["encapsulation"] + " {0}".format( + diff.get("encapsulation") + ) + add_command_to_config_list(interface, cmd, commands) + if diff.get("native_vlan"): + cmd = self.trunk_cmds["native_vlan"] + " {0}".format( + diff.get("native_vlan") + ) + add_command_to_config_list(interface, cmd, commands) + allowed_vlans = diff.get("allowed_vlans") + pruning_vlans = diff.get("pruning_vlans") + + if allowed_vlans and self._check_for_correct_vlan_range( + allowed_vlans, module + ): + diff = None + if self.state == "merged": + have_trunk = have.get("trunk") + if have_trunk and have_trunk.get("allowed_vlans"): + have_allowed_vlans = have_trunk.get( + "allowed_vlans" + ) + allowed_vlans = list(allowed_vlans) + diff = set(allowed_vlans).difference( + set(have_allowed_vlans) + ) + allowed_vlans = list(diff) if diff else tuple() + allowed_vlans = ",".join(allowed_vlans) + if allowed_vlans: + trunk_cmd = ( + self.trunk_cmds["allowed_vlans_add"] + if self.state == "merged" and diff + else self.trunk_cmds["allowed_vlans"] + ) + cmd = trunk_cmd + " {0}".format(allowed_vlans) + add_command_to_config_list(interface, cmd, commands) + if pruning_vlans and self._check_for_correct_vlan_range( + pruning_vlans, module + ): + diff = None + if self.state == "merged": + have_trunk = have.get("trunk") + if have_trunk and have_trunk.get("pruning_vlans"): + have_pruning_vlans = have_trunk.get( + "pruning_vlans" + ) + pruning_vlans = list(pruning_vlans) + diff = set(pruning_vlans).difference( + set(have_pruning_vlans) + ) + pruning_vlans = list(diff) if diff else tuple() + pruning_vlans = ",".join(pruning_vlans) + if pruning_vlans: + trunk_cmd = ( + self.trunk_cmds["pruning_vlans_add"] + if self.state == "merged" and diff + else self.trunk_cmds["pruning_vlans"] + ) + cmd = trunk_cmd + " {0}".format(pruning_vlans) + add_command_to_config_list(interface, cmd, commands) + if mode: + cmd = "switchport mode {0}".format(mode) + add_command_to_config_list(interface, cmd, commands) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + if want.get("name"): + interface = "interface " + want["name"] + else: + interface = "interface " + have["name"] + + if have.get("mode") or want.get("mode"): + remove_command_from_config_list( + interface, "switchport mode", commands + ) + + if have.get("access") and want.get("access") is None: + remove_command_from_config_list( + interface, L2_Interfaces.access_cmds["access_vlan"], commands + ) + elif have.get("access") and want.get("access"): + if have.get("access").get("vlan") != want.get("access").get( + "vlan" + ): + remove_command_from_config_list( + interface, + L2_Interfaces.access_cmds["access_vlan"], + commands, + ) + + if have.get("voice") and want.get("voice") is None: + remove_command_from_config_list( + interface, L2_Interfaces.voice_cmds["voice_vlan"], commands + ) + elif have.get("voice") and want.get("voice"): + if have.get("voice").get("vlan") != want.get("voice").get("vlan"): + remove_command_from_config_list( + interface, L2_Interfaces.voice_cmds["voice_vlan"], commands + ) + + if have.get("trunk") and want.get("trunk") is None: + # Check when no config is passed + if have.get("trunk").get("encapsulation"): + remove_command_from_config_list( + interface, self.trunk_cmds["encapsulation"], commands + ) + if have.get("trunk").get("native_vlan"): + remove_command_from_config_list( + interface, self.trunk_cmds["native_vlan"], commands + ) + if have.get("trunk").get("allowed_vlans"): + remove_command_from_config_list( + interface, self.trunk_cmds["allowed_vlans"], commands + ) + if have.get("trunk").get("pruning_vlans"): + remove_command_from_config_list( + interface, self.trunk_cmds["pruning_vlans"], commands + ) + elif have.get("trunk") and want.get("trunk"): + # Check when config is passed, also used in replaced and override state + if have.get("trunk").get("encapsulation") and have.get( + "trunk" + ).get("encapsulation") != want.get("trunk").get("encapsulation"): + remove_command_from_config_list( + interface, self.trunk_cmds["encapsulation"], commands + ) + if have.get("trunk").get("native_vlan") and have.get("trunk").get( + "native_vlan" + ) != want.get("trunk").get("native_vlan"): + remove_command_from_config_list( + interface, self.trunk_cmds["native_vlan"], commands + ) + if have.get("trunk").get("allowed_vlans") and have.get( + "trunk" + ).get("allowed_vlans") != want.get("trunk").get("allowed_vlans"): + remove_command_from_config_list( + interface, self.trunk_cmds["allowed_vlans"], commands + ) + if have.get("trunk").get("pruning_vlans") and have.get( + "trunk" + ).get("pruning_vlans") != want.get("trunk").get("pruning_vlans"): + remove_command_from_config_list( + interface, self.trunk_cmds["pruning_vlans"], commands + ) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py new file mode 100644 index 00000000..3d45588b --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/l3_interfaces/l3_interfaces.py @@ -0,0 +1,435 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_l3_interfaces class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, + remove_empties, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_command_from_config_list, + add_command_to_config_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, + remove_duplicate_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + validate_n_expand_ipv4, + validate_ipv6, +) + + +class L3_Interfaces(ConfigBase): + """ + The ios_l3_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["l3_interfaces"] + + def get_l3_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + l3_interfaces_facts = facts["ansible_network_resources"].get( + "l3_interfaces" + ) + if not l3_interfaces_facts: + return [] + + return l3_interfaces_facts + + def execute_module(self): + """ Execute the module + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_l3_interfaces_facts = self.get_l3_interfaces_facts() + else: + existing_l3_interfaces_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_l3_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_l3_interfaces_facts = self.get_l3_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_l3_interfaces_facts( + data=running_config + ) + else: + changed_l3_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_l3_interfaces_facts + if result["changed"]: + result["after"] = changed_l3_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_l3_interfaces_facts + + result["warnings"] = warnings + return result + + def set_config(self, existing_l3_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_l3_interfaces_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have, self._module) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have, self._module) + elif self.state == "replaced": + commands = self._state_replaced(want, have, self._module) + + return commands + + def _state_replaced(self, want, have, module): + """ The command generator when state is replaced + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + if "." in interface["name"]: + commands.extend( + self._set_config(interface, dict(), module) + ) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each, module)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have, module): + """ The command generator when state is overridden + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + if each["name"] == interface["name"]: + break + 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"]) + kwargs = {"want": interface, "have": each} + commands.extend(self._clear_config(**kwargs)) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each, module)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have, module): + """ The command generator when state is merged + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + if "." in interface["name"]: + commands.extend( + self._set_config(interface, dict(), module) + ) + if self.state == "rendered": + commands.extend( + self._set_config(interface, dict(), module) + ) + continue + commands.extend(self._set_config(interface, each, module)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + if interface["name"] in each["name"]: + break + else: + continue + interface = dict(name=interface["name"]) + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + want = dict() + commands.extend(self._clear_config(want, each)) + + return commands + + def verify_diff_again(self, want, have): + """ + Verify the IPV4 difference again as sometimes due to + change in order of set, set difference may result into change, + when there's actually no difference between want and have + :param want: want_dict IPV4 + :param have: have_dict IPV4 + :return: diff + """ + diff = False + for each in want: + each_want = remove_empties(dict(each)) + for every in have: + every_have = dict(every) + if ( + each_want.get("address") != every_have.get("address") + and each_want.get("secondary") + != every_have.get("secondary") + and len(each_want.keys()) == len(every_have.keys()) + ): + diff = True + break + if ( + each_want.get("dhcp_client") + != every_have.get("dhcp_client") + and each_want.get("dhcp_client") is not None + ): + diff = True + break + if ( + each_want.get("dhcp_hostname") + != every_have.get("dhcp_hostname") + and each_want.get("dhcp_hostname") is not None + ): + diff = True + break + if each_want.get("address") != every_have.get( + "address" + ) and len(each_want.keys()) == len(every_have.keys()): + diff = True + break + if diff: + break + + return diff + + def _set_config(self, want, have, module): + # Set the interface config based on the want and have config + commands = [] + interface = "interface " + want["name"] + + # To handle L3 IPV4 configuration + 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 + + # Convert the want and have dict to set + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + + # To handle L3 IPV4 configuration + if want.get("ipv4"): + # Get the diff b/w want and have IPV4 + if have.get("ipv4"): + ipv4 = tuple( + set(dict(want_dict).get("ipv4")) + - set(dict(have_dict).get("ipv4")) + ) + if ipv4: + ipv4 = ( + ipv4 + if self.verify_diff_again( + dict(want_dict).get("ipv4"), + dict(have_dict).get("ipv4"), + ) + else () + ) + else: + diff = want_dict - have_dict + ipv4 = dict(diff).get("ipv4") + if ipv4: + for each in ipv4: + ipv4_dict = dict(each) + if ipv4_dict.get("address") != "dhcp": + cmd = "ip address {0}".format(ipv4_dict["address"]) + if ipv4_dict.get("secondary"): + cmd += " secondary" + elif ipv4_dict.get("address") == "dhcp": + cmd = "ip address dhcp" + if "/" in interface: + dhcp_interface = want["name"].split("/")[0] + "/" + elif "gigabitethernet" in interface.lower(): + dhcp_interface = "GigabitEthernet" + if ipv4_dict.get( + "dhcp_client" + ) is not None and ipv4_dict.get("dhcp_hostname"): + cmd = "ip address dhcp client-id {0}{1} hostname {2}".format( + dhcp_interface, + ipv4_dict.get("dhcp_client"), + ipv4_dict.get("dhcp_hostname"), + ) + elif ipv4_dict.get( + "dhcp_client" + ) and not ipv4_dict.get("dhcp_hostname"): + cmd = "ip address dhcp client-id {0}{1}".format( + dhcp_interface, ipv4_dict.get("dhcp_client") + ) + elif not ipv4_dict.get( + "dhcp_client" + ) and ipv4_dict.get("dhcp_hostname"): + cmd = "ip address dhcp hostname {0}".format( + ipv4_dict.get("dhcp_client") + ) + + add_command_to_config_list(interface, cmd, commands) + + # To handle L3 IPV6 configuration + if want.get("ipv6"): + # Get the diff b/w want and have IPV6 + if have.get("ipv6"): + ipv6 = tuple( + set(dict(want_dict).get("ipv6")) + - set(dict(have_dict).get("ipv6")) + ) + else: + diff = want_dict - have_dict + ipv6 = dict(diff).get("ipv6") + if ipv6: + for each in ipv6: + ipv6_dict = dict(each) + validate_ipv6(ipv6_dict.get("address"), module) + cmd = "ipv6 address {0}".format(ipv6_dict.get("address")) + add_command_to_config_list(interface, cmd, commands) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + count = 0 + commands = [] + if want.get("name"): + interface = "interface " + want["name"] + else: + interface = "interface " + have["name"] + + if have.get("ipv4") and want.get("ipv4"): + for each in have.get("ipv4"): + if each.get("secondary") and not ( + want.get("ipv4")[count].get("secondary") + ): + cmd = "ipv4 address {0} secondary".format( + each.get("address") + ) + remove_command_from_config_list(interface, cmd, commands) + count += 1 + if have.get("ipv4") and not want.get("ipv4"): + remove_command_from_config_list(interface, "ip address", commands) + if have.get("ipv6") and not want.get("ipv6"): + remove_command_from_config_list( + interface, "ipv6 address", commands + ) + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py new file mode 100644 index 00000000..6adab3bd --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp/lacp.py @@ -0,0 +1,224 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lacp class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, +) + + +class Lacp(ConfigBase): + """ + The ios_lacp class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["lacp"] + + def __init__(self, module): + super(Lacp, self).__init__(module) + + def get_lacp_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + lacp_facts = facts["ansible_network_resources"].get("lacp") + if not lacp_facts: + return dict() + + return lacp_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_lacp_facts = self.get_lacp_facts() + else: + existing_lacp_facts = dict() + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_lacp_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_lacp_facts = self.get_lacp_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_lacp_facts(data=running_config) + else: + changed_lacp_facts = dict() + + if self.state in self.ACTION_STATES: + result["before"] = existing_lacp_facts + if result["changed"]: + result["after"] = changed_lacp_facts + elif self.state == "gathered": + result["gathered"] = changed_lacp_facts + result["warnings"] = warnings + + return result + + def set_config(self, existing_lacp_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + want = self._module.params["config"] + have = existing_lacp_facts + resp = self.set_state(want, have) + + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + 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( + self.state + ) + ) + + if self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + commands.extend(self._set_config(want, have)) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + commands.extend(self._set_config(want, have)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + commands.extend(self._clear_config(have)) + else: + commands.extend(self._clear_config(have)) + + return commands + + def _remove_command_from_config_list(self, cmd, commands): + commands.append("no %s" % cmd) + return commands + + def _add_command_to_config_list(self, cmd, commands): + if cmd not in commands: + commands.append(cmd) + + def _set_config(self, want, have): + # Set the interface config based on the want and have config + commands = [] + + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + cmd = "lacp system-priority {0}".format( + want.get("system").get("priority") + ) + self._add_command_to_config_list(cmd, commands) + + return commands + + def _clear_config(self, have): + # Delete the interface config based on the want and have config + commands = [] + + if ( + have.get("system").get("priority") + and have.get("system").get("priority") != 32768 + ): + cmd = "lacp system-priority" + self._remove_command_from_config_list(cmd, commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py new file mode 100644 index 00000000..3d21b635 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lacp_interfaces/lacp_interfaces.py @@ -0,0 +1,314 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lacp_interfaces class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_command_from_config_list, + add_command_to_config_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, + remove_duplicate_interface, +) + + +class Lacp_Interfaces(ConfigBase): + """ + The ios_lacp_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["lacp_interfaces"] + + def __init__(self, module): + super(Lacp_Interfaces, self).__init__(module) + + def get_lacp_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + lacp_interfaces_facts = facts["ansible_network_resources"].get( + "lacp_interfaces" + ) + + if not lacp_interfaces_facts: + return [] + return lacp_interfaces_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_lacp_interfaces_facts = self.get_lacp_interfaces_facts() + else: + existing_lacp_interfaces_facts = [] + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_lacp_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_lacp_interfaces_facts = self.get_lacp_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_lacp_interfaces_facts( + data=running_config + ) + else: + changed_lacp_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_lacp_interfaces_facts + if result["changed"]: + result["after"] = changed_lacp_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_lacp_interfaces_facts + + result["warnings"] = warnings + + return result + + def set_config(self, existing_lacp_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_lacp_interfaces_facts + resp = self.set_state(want, have) + + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + if each["name"] == interface["name"]: + break + 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)) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if interface["name"] == each["name"]: + break + else: + commands.extend(self._set_config(interface, dict())) + continue + commands.extend(self._set_config(interface, each)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + interface = dict(name=interface["name"]) + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + commands.extend(self._clear_config(dict(), each)) + + return commands + + def _set_config(self, want, have): + # Set the interface config based on the want and have config + commands = [] + interface = "interface " + want["name"] + + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + port_priotity = dict(diff).get("port_priority") + max_bundle = dict(diff).get("max_bundle") + fast_switchover = dict(diff).get("fast_switchover") + if port_priotity: + cmd = "lacp port-priority {0}".format(port_priotity) + add_command_to_config_list(interface, cmd, commands) + if max_bundle: + cmd = "lacp max-bundle {0}".format(max_bundle) + add_command_to_config_list(interface, cmd, commands) + if fast_switchover: + cmd = "lacp fast-switchover" + add_command_to_config_list(interface, cmd, commands) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + if want.get("name"): + interface = "interface " + want["name"] + else: + interface = "interface " + have["name"] + + if have.get("port_priority") and have.get("port_priority") != want.get( + "port_priority" + ): + cmd = "lacp port-priority" + remove_command_from_config_list(interface, cmd, commands) + if have.get("max_bundle") and have.get("max_bundle") != want.get( + "max_bundle" + ): + cmd = "lacp max-bundle" + remove_command_from_config_list(interface, cmd, commands) + if have.get("fast_switchover"): + cmd = "lacp fast-switchover" + remove_command_from_config_list(interface, cmd, commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py new file mode 100644 index 00000000..40482fc0 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lag_interfaces/lag_interfaces.py @@ -0,0 +1,404 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lag_interfaces class +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 it's desired end-state is +created +""" + +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 import ( + utils, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_duplicate_interface, +) + + +class Lag_interfaces(ConfigBase): + """ + The ios_lag_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["lag_interfaces"] + + def __init__(self, module): + super(Lag_interfaces, self).__init__(module) + + def get_lag_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + lag_interfaces_facts = facts["ansible_network_resources"].get( + "lag_interfaces" + ) + if not lag_interfaces_facts: + return [] + return lag_interfaces_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_lag_interfaces_facts = self.get_lag_interfaces_facts() + else: + existing_lag_interfaces_facts = [] + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_lag_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_lag_interfaces_facts = self.get_lag_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_lag_interfaces_facts( + data=running_config + ) + else: + changed_lag_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_lag_interfaces_facts + if result["changed"]: + result["after"] = changed_lag_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_lag_interfaces_facts + + result["warnings"] = warnings + return result + + def set_config(self, existing_lag_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_lag_interfaces_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + module = self._module + if self.state == "overridden": + commands = self._state_overridden(want, have, module) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have, module) + elif self.state == "replaced": + commands = self._state_replaced(want, have, module) + return commands + + def _state_replaced(self, want, have, module): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for interface in want: + for each_interface in interface.get("members"): + for each in have: + if each.get("members"): + for every in each.get("members"): + match = False + if every["member"] == each_interface["member"]: + match = True + break + continue + if match: + have_dict = self.filter_dict_having_none_value( + interface, each + ) + commands.extend( + self._clear_config(dict(), have_dict) + ) + commands.extend( + self._set_config(interface, each, module) + ) + elif each.get("name") == each_interface["member"]: + have_dict = self.filter_dict_having_none_value( + interface, each + ) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend( + self._set_config(interface, each, module) + ) + break + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have, module): + """ The command generator when state is overridden + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for interface in want: + if interface.get("members"): + for each_interface in interface.get("members"): + for each in have: + if each.get("members"): + for every in each.get("members"): + match = False + if every["member"] == each_interface["member"]: + match = True + break + commands.extend( + self._clear_config(interface, each) + ) + continue + if match: + have_dict = self.filter_dict_having_none_value( + interface, each + ) + commands.extend( + self._clear_config(dict(), have_dict) + ) + commands.extend( + self._set_config(interface, each, module) + ) + elif each.get("name") == each_interface["member"]: + have_dict = self.filter_dict_having_none_value( + interface, each + ) + commands.extend( + self._clear_config(dict(), have_dict) + ) + commands.extend( + self._set_config(interface, each, module) + ) + break + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have, module): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each_interface in interface.get("members"): + for each in have: + if each.get("members"): + for every in each.get("members"): + if every["member"] == each_interface["member"]: + break + elif each.get("name") == each_interface["member"]: + break + else: + if self.state == "rendered": + commands.extend( + self._set_config(interface, dict(), module) + ) + continue + commands.extend(self._set_config(interface, each, module)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each.get("name") == interface["name"]: + break + else: + continue + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + commands.extend(self._clear_config(dict(), each)) + + return commands + + def filter_dict_having_none_value(self, want, have): + # Generate dict with have dict value which is None in want dict + test_dict = dict() + test_key_dict = dict() + test_dict["name"] = want.get("name") + for k, v in iteritems(want): + if isinstance(v, dict): + for key, value in iteritems(v): + if value is None: + dict_val = have.get(k).get(key) + test_key_dict.update({key: dict_val}) + test_dict.update({k: test_key_dict}) + if v is None: + val = have.get(k) + test_dict.update({k: val}) + return test_dict + + def remove_command_from_config_list(self, interface, cmd, commands): + # To delete the passed config + if interface not in commands: + commands.append(interface) + commands.append("no %s" % cmd) + return commands + + def add_command_to_config_list(self, interface, cmd, commands): + # To set the passed config + if interface not in commands: + commands.append(interface) + commands.append(cmd) + return commands + + def _set_config(self, want, have, module): + # Set the interface config based on the want and have config + commands = [] + + # To remove keys with None values from want dict + want = utils.remove_empties(want) + # Get the diff b/w want and have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + # To get the channel-id from lag port-channel name + lag_config = dict(diff).get("members") + channel_name = re.search(r"(\d+)", want.get("name")) + if channel_name: + channel_id = channel_name.group() + else: + module.fail_json(msg="Lag Interface Name is not correct!") + if lag_config: + for each in lag_config: + each = dict(each) + each_interface = "interface {0}".format(each.get("member")) + if have.get("name") == want["members"][0][ + "member" + ] or want.get("name").lower().startswith("po"): + if each.get("mode"): + cmd = "channel-group {0} mode {1}".format( + channel_id, each.get("mode") + ) + self.add_command_to_config_list( + each_interface, cmd, commands + ) + elif each.get("link"): + cmd = "channel-group {0} link {1}".format( + channel_id, each.get("link") + ) + self.add_command_to_config_list( + each_interface, cmd, commands + ) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + + if have.get("members"): + for each in have["members"]: + interface = "interface " + each["member"] + if want.get("members"): + if ( + each.get("member") + and each.get("member") != want["members"][0]["member"] + ): + self.remove_command_from_config_list( + interface, "channel-group", commands + ) + elif each.get("member"): + self.remove_command_from_config_list( + interface, "channel-group", commands + ) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py new file mode 100644 index 00000000..b4e6a322 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_global/lldp_global.py @@ -0,0 +1,275 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat Inc. +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lldp_global class +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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, +) + + +class Lldp_global(ConfigBase): + """ + The ios_lldp_global class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["lldp_global"] + + tlv_select_params = { + "four_wire_power_management": "4-wire-power-management", + "mac_phy_cfg": "mac-phy-cfg", + "management_address": "management-address", + "port_description": "port-description", + "port_vlan": "port-vlan", + "power_management": "power-management", + "system_capabilities": "system-capabilities", + "system_description": "system-description", + "system_name": "system-name", + } + + def __init__(self, module): + super(Lldp_global, self).__init__(module) + + def get_lldp_global_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + lldp_global_facts = facts["ansible_network_resources"].get( + "lldp_global" + ) + if not lldp_global_facts: + return {} + + return lldp_global_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from moduel execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_lldp_global_facts = self.get_lldp_global_facts() + else: + existing_lldp_global_facts = dict() + + if self.state in self.ACTION_STATES or self.state == "rendered": + 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 + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_lldp_global_facts = self.get_lldp_global_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_lldp_global_facts(data=running_config) + else: + changed_lldp_global_facts = dict() + + if self.state in self.ACTION_STATES: + result["before"] = existing_lldp_global_facts + if result["changed"]: + result["after"] = changed_lldp_global_facts + elif self.state == "gathered": + result["gathered"] = changed_lldp_global_facts + result["warnings"] = warnings + + return result + + def set_config(self, existing_lldp_global_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + want = self._module.params["config"] + have = existing_lldp_global_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred 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( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the deisred configuration + """ + commands = [] + + have_dict = filter_dict_having_none_value(want, have) + commands.extend(self._clear_config(have_dict)) + commands.extend(self._set_config(want, have)) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :param want: the additive configuration as a dictionary + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + commands.extend(self._set_config(want, have)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :param want: the objects from which the configuration should be removed + :param obj_in_have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + commands.extend(self._clear_config(have)) + + return commands + + def _remove_command_from_config_list(self, cmd, commands): + if cmd not in commands: + commands.append("no %s" % cmd) + + def add_command_to_config_list(self, cmd, commands): + if cmd not in commands: + commands.append(cmd) + + def _set_config(self, want, have): + # Set the lldp global config based on the want and have config + commands = [] + + # Get the diff b/w want and have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + diff = dict(diff) + holdtime = diff.get("holdtime") + enabled = diff.get("enabled") + timer = diff.get("timer") + reinit = diff.get("reinit") + tlv_select = diff.get("tlv_select") + + if holdtime: + cmd = "lldp holdtime {0}".format(holdtime) + self.add_command_to_config_list(cmd, commands) + if enabled: + cmd = "lldp run" + self.add_command_to_config_list(cmd, commands) + if timer: + cmd = "lldp timer {0}".format(timer) + self.add_command_to_config_list(cmd, commands) + if reinit: + cmd = "lldp reinit {0}".format(reinit) + self.add_command_to_config_list(cmd, commands) + if tlv_select: + tlv_selec_dict = dict(tlv_select) + for k, v in iteritems(self.tlv_select_params): + if k in tlv_selec_dict and tlv_selec_dict[k]: + cmd = "lldp tlv-select {0}".format(v) + self.add_command_to_config_list(cmd, commands) + + return commands + + def _clear_config(self, have): + # Delete the lldp global config based on the want and have config + commands = [] + + if have.get("holdtime"): + cmd = "lldp holdtime" + self._remove_command_from_config_list(cmd, commands) + if have.get("enabled"): + cmd = "lldp run" + self._remove_command_from_config_list(cmd, commands) + if have.get("timer"): + cmd = "lldp timer" + self._remove_command_from_config_list(cmd, commands) + if have.get("reinit"): + cmd = "lldp reinit" + self._remove_command_from_config_list(cmd, commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py new file mode 100644 index 00000000..479f626c --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/lldp_interfaces/lldp_interfaces.py @@ -0,0 +1,328 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lldp_interfaces class +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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + remove_command_from_config_list, + add_command_to_config_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + filter_dict_having_none_value, + remove_duplicate_interface, +) + + +class Lldp_Interfaces(ConfigBase): + """ + The ios_lldp_interfaces class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["lldp_interfaces"] + + def __init__(self, module): + super(Lldp_Interfaces, self).__init__(module) + + def get_lldp_interfaces_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + lldp_interfaces_facts = facts["ansible_network_resources"].get( + "lldp_interfaces" + ) + if not lldp_interfaces_facts: + return [] + return lldp_interfaces_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_lldp_interfaces_facts = self.get_lldp_interfaces_facts() + else: + existing_lldp_interfaces_facts = [] + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_lldp_interfaces_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_lldp_interfaces_facts = self.get_lldp_interfaces_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_lldp_interfaces_facts( + data=running_config + ) + else: + changed_lldp_interfaces_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_lldp_interfaces_facts + if result["changed"]: + result["after"] = changed_lldp_interfaces_facts + elif self.state == "gathered": + result["gathered"] = changed_lldp_interfaces_facts + + result["warnings"] = warnings + + return result + + def set_config(self, existing_lldp_interfaces_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + config = self._module.params.get("config") + want = [] + if config: + for each in config: + each.update({"name": normalize_interface(each["name"])}) + want.append(each) + have = existing_lldp_interfaces_facts + resp = self.set_state(want, have) + + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + for each in have: + for interface in want: + if each["name"] == interface["name"]: + break + 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)) + continue + have_dict = filter_dict_having_none_value(interface, each) + commands.extend(self._clear_config(dict(), have_dict)) + commands.extend(self._set_config(interface, each)) + # Remove the duplicate interface call + commands = remove_duplicate_interface(commands) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + for interface in want: + for each in have: + if interface["name"] == each["name"]: + break + else: + if self.state == "rendered": + commands.extend(self._set_config(interface, dict())) + continue + commands.extend(self._set_config(interface, each)) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + for interface in want: + for each in have: + if each["name"] == interface["name"]: + break + else: + continue + interface = dict(name=interface["name"]) + commands.extend(self._clear_config(interface, each)) + else: + for each in have: + commands.extend(self._clear_config(dict(), each)) + + return commands + + def _set_config(self, want, have): + # Set the interface config based on the want and have config + commands = [] + + interface = "interface " + want["name"] + # Get the diff b/w want and have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + diff = dict(diff) + receive = diff.get("receive") + transmit = diff.get("transmit") + med_tlv_select = diff.get("med_tlv_select") + tlv_select = diff.get("tlv_select") + if receive: + cmd = "lldp receive" + add_command_to_config_list(interface, cmd, commands) + elif receive is False: + cmd = "no lldp receive" + add_command_to_config_list(interface, cmd, commands) + if transmit: + cmd = "lldp transmit" + add_command_to_config_list(interface, cmd, commands) + elif transmit is False: + cmd = "no lldp transmit" + add_command_to_config_list(interface, cmd, commands) + + if med_tlv_select: + med_tlv_select = dict(med_tlv_select) + if med_tlv_select.get("inventory_management"): + add_command_to_config_list( + interface, + "lldp med-tlv-select inventory-management", + commands, + ) + if tlv_select: + tlv_select = dict(tlv_select) + if tlv_select.get("power_management"): + add_command_to_config_list( + interface, "lldp tlv-select power-management", commands + ) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + if want.get("name"): + interface = "interface " + want["name"] + else: + interface = "interface " + have["name"] + + if have.get("receive") and have.get("receive") != want.get("receive"): + cmd = "lldp receive" + remove_command_from_config_list(interface, cmd, commands) + if have.get("transmit") and have.get("transmit") != want.get( + "transmit" + ): + cmd = "lldp transmit" + remove_command_from_config_list(interface, cmd, commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py new file mode 100644 index 00000000..3640207d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospf_interfaces/ospf_interfaces.py @@ -0,0 +1,165 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2020 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 cisco.ios_ospf_interfaces 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 ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.resource_module import ( + ResourceModule, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospf_interfaces import ( + Ospf_InterfacesTemplate, +) + + +class Ospf_Interfaces(ResourceModule): + """ + The cisco.ios_ospf_interfaces config class + """ + + def __init__(self, module): + super(Ospf_Interfaces, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="ospf_interfaces", + tmplt=Ospf_InterfacesTemplate(), + ) + self.parsers = [] + + 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. + """ + + wantd = {} + haved = {} + if self.want: + wantd = {(entry["name"]): entry for entry in self.want} + else: + wantd = {} + if self.have: + haved = {(entry["name"]): entry for entry in self.have} + else: + haved = {} + + # 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 = {} + + # remove superfluous config for overridden and deleted + if self.state in ["overridden", "deleted"]: + for k, have in iteritems(haved): + if k not in wantd: + self._compare(want={}, have=have) + + for k, want in iteritems(wantd): + self._compare(want=want, have=haved.pop(k, {})) + + def _compare(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 Ospf_interfaces network resource. + """ + parsers = [ + "name", + "process", + "adjacency", + "authentication", + "bfd", + "cost_ip", + "cost_ipv6_dynamic_cost", + "database_filter", + "dead_interval", + "demand_circuit", + "flood_reduction", + "hello_interval", + "lls", + "manet", + "mtu_ignore", + "multi_area", + "neighbor", + "network", + "prefix_suppression", + "priority", + "resync_timeout", + "retransmit_interval", + "shutdown", + "transmit_delay", + "ttl_security", + ] + + if ( + want != have + ): # and (want.get('address_family') or self.state == 'deleted'): + if have.get("address_family"): + self.addcmd(have, "name", False) + elif want.get("address_family"): + self.addcmd(want, "name", False) + + if want.get("address_family"): + for each in want["address_family"]: + set_want = True + if have.get("address_family"): + have_elements = len(have.get("address_family")) + while have_elements: + if have.get("address_family")[have_elements - 1].get( + "afi" + ) == each.get("afi"): + set_want = False + h_each = have["address_family"].pop( + have_elements - 1 + ) + self.compare( + parsers=parsers, want=each, have=h_each + ) + have_elements -= 1 + else: + h_each = dict() + self.compare(parsers=parsers, want=each, have=h_each) + set_want = False + if set_want: + self.compare(parsers=parsers, want=each, have=dict()) + if self.state in ["overridden", "deleted"]: + if have.get("address_family"): + for each in have["address_family"]: + self.compare(parsers=parsers, want=dict(), have=each) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py new file mode 100644 index 00000000..08c0af36 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv2/ospfv2.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_ospfv2 class +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 it's desired end-state is +created +""" +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible.module_utils.six import iteritems +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospfv2 import ( + Ospfv2Template, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.resource_module import ( + ResourceModule, +) + + +class Ospfv2(ResourceModule): + """ + The ios_ospfv2 class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["ospfv2"] + + def __init__(self, module): + super(Ospfv2, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="ospfv2", + tmplt=Ospfv2Template(), + ) + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + self.gen_config() + self.run_commands() + return self.result + + def gen_config(self): + """ Select the appropriate function based on the state provided + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + if self.want: + wantd = { + (entry["process_id"], entry.get("vrf")): entry + for entry in self.want.get("processes", []) + } + else: + wantd = {} + if self.have: + haved = { + (entry["process_id"], entry.get("vrf")): entry + for entry in self.have.get("processes", []) + } + else: + haved = {} + + # turn all lists of dicts into dicts prior to merge + for thing in wantd, haved: + for _pid, proc in iteritems(thing): + for area in proc.get("areas", []): + ranges = { + entry["address"]: entry + for entry in area.get("ranges", []) + } + if bool(ranges): + area["ranges"] = ranges + filter_list = { + entry["direction"]: entry + for entry in area.get("filter_list", []) + } + if bool(filter_list): + area["filter_list"] = filter_list + proc["areas"] = { + entry["area_id"]: entry for entry in proc.get("areas", []) + } + if proc.get("distribute_list"): + if "acls" in proc.get("distribute_list"): + proc["distribute_list"]["acls"] = { + entry["name"]: entry + for entry in proc["distribute_list"].get( + "acls", [] + ) + } + + # if state is merged, merge want onto have + if self.state == "merged": + wantd = dict_merge(haved, wantd) + + # if state is deleted, limit the have to anything in want + # set want to nothing + if self.state == "deleted": + 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 in ["overridden", "deleted"]: + for k, have in iteritems(haved): + if k not in wantd: + self.addcmd(have, "pid", True) + + for k, want in iteritems(wantd): + self._compare(want=want, have=haved.pop(k, {})) + + def _compare(self, want, have): + parsers = [ + "adjacency", + "address_family", + "auto_cost", + "bfd", + "capability", + "compatible", + "default_information", + "default_metric", + "discard_route", + "distance.admin_distance", + "distance.ospf", + "distribute_list.acls", + "distribute_list.prefix", + "distribute_list.route_map", + "domain_id", + "domain_tag", + "event_log", + "help", + "ignore", + "interface_id", + "ispf", + "limit", + "local_rib_criteria", + "log_adjacency_changes", + "max_lsa", + "max_metric", + "maximum_paths", + "mpls.ldp", + "mpls.traffic_eng", + "neighbor", + "network", + "nsf.cisco", + "nsf.ietf", + "passive_interface", + "prefix_suppression", + "priority", + "queue_depth.hello", + "queue_depth.update", + "router_id", + "shutdown", + "summary_address", + "timers.throttle.lsa", + "timers.throttle.spf", + "traffic_share", + "ttl_security", + ] + + if want != have: + self.addcmd(want or have, "pid", False) + self.compare(parsers, want, have) + self._areas_compare(want, have) + + def _areas_compare(self, want, have): + wareas = want.get("areas", {}) + hareas = have.get("areas", {}) + for name, entry in iteritems(wareas): + self._area_compare(want=entry, have=hareas.pop(name, {})) + for name, entry in iteritems(hareas): + self._area_compare(want={}, have=entry) + + def _area_compare(self, want, have): + parsers = [ + "area.authentication", + "area.capability", + "area.default_cost", + "area.nssa", + "area.nssa.translate", + "area.ranges", + "area.sham_link", + "area.stub", + ] + self.compare(parsers=parsers, want=want, have=have) + self._area_compare_filters(want, have) + + def _area_compare_filters(self, wantd, haved): + for name, entry in iteritems(wantd): + h_item = haved.pop(name, {}) + if entry != h_item and name == "filter_list": + filter_list_entry = {} + filter_list_entry["area_id"] = wantd["area_id"] + if h_item: + li_diff = [ + item + for item in entry + h_item + if item not in entry or item not in h_item + ] + else: + li_diff = entry + filter_list_entry["filter_list"] = li_diff + self.addcmd(filter_list_entry, "area.filter_list", False) + for name, entry in iteritems(haved): + if name == "filter_list": + self.addcmd(entry, "area.filter_list", True) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/ospfv3.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/ospfv3.py new file mode 100644 index 00000000..f3c1e3d2 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/ospfv3/ospfv3.py @@ -0,0 +1,324 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_ospfv3 class +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 it's desired end-state is +created +""" +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible.module_utils.six import iteritems +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospfv3 import ( + Ospfv3Template, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + dict_merge, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.resource_module import ( + ResourceModule, +) + + +class Ospfv3(ResourceModule): + """ + The ios_ospfv3 class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["ospfv3"] + + def __init__(self, module): + super(Ospfv3, self).__init__( + empty_fact_val={}, + facts_module=Facts(module), + module=module, + resource="ospfv3", + tmplt=Ospfv3Template(), + ) + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + self.gen_config() + self.run_commands() + return self.result + + def gen_config(self): + """ Select the appropriate function based on the state provided + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + if self.want: + wantd = { + (entry["process_id"], entry.get("vrf")): entry + for entry in self.want.get("processes", []) + } + else: + wantd = {} + if self.have: + haved = { + (entry["process_id"], entry.get("vrf")): entry + for entry in self.have.get("processes", []) + } + else: + haved = {} + + # turn all lists of dicts into dicts prior to merge + for thing in wantd, haved: + for _pid, proc in iteritems(thing): + for area in proc.get("areas", []): + ranges = { + entry["address"]: entry + for entry in area.get("ranges", []) + } + if bool(ranges): + area["ranges"] = ranges + filter_list = { + entry["direction"]: entry + for entry in area.get("filter_list", []) + } + if bool(filter_list): + area["filter_list"] = filter_list + proc["areas"] = { + entry["area_id"]: entry for entry in proc.get("areas", []) + } + if proc.get("distribute_list"): + if "acls" in proc.get("distribute_list"): + proc["distribute_list"]["acls"] = { + entry["name"]: entry + for entry in proc["distribute_list"].get( + "acls", [] + ) + } + + # if state is merged, merge want onto have + if self.state == "merged": + wantd = dict_merge(haved, wantd) + + # if state is deleted, limit the have to anything in want + # set want to nothing + if self.state == "deleted": + 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 in ["overridden", "deleted"]: + for k, have in iteritems(haved): + if k not in wantd: + self.addcmd(have, "pid", True) + + for k, want in iteritems(wantd): + self._compare(want=want, have=haved.pop(k, {})) + + def _compare(self, want, have): + parsers = [ + "adjacency", + "auto_cost", + "bfd", + "compatible", + "event_log", + "help", + "interface_id", + "limit", + "local_rib_criteria", + "log_adjacency_changes", + "manet", + "max_lsa", + "max_metric", + "passive_interface", + "prefix_suppression", + "queue_depth.hello", + "queue_depth.update", + "router_id", + "shutdown", + "timers.throttle.lsa", + "timers.throttle.spf", + ] + + if want != have: + self.addcmd(want or have, "pid", False) + self.compare(parsers, want, have) + self._areas_compare(want, have) + self._address_family_compare(want, have) + + if len(self.commands) == 1 and "router" in self.commands[0]: + del self.commands[0] + + def _areas_compare(self, want, have): + wareas = want.get("areas", {}) + hareas = have.get("areas", {}) + for name, entry in iteritems(wareas): + self._area_compare(want=entry, have=hareas.pop(name, {})) + for name, entry in iteritems(hareas): + self._area_compare(want={}, have=entry) + + def _area_compare(self, want, have): + parsers = [ + "area.authentication", + "area.capability", + "area.default_cost", + "area.nssa", + "area.nssa.translate", + "area.ranges", + "area.sham_link", + "area.stub", + ] + self.compare(parsers=parsers, want=want, have=have) + self._area_compare_filters(want, have) + + def _area_compare_filters(self, wantd, haved): + for name, entry in iteritems(wantd): + h_item = haved.pop(name, {}) + if entry != h_item and name == "filter_list": + filter_list_entry = {} + filter_list_entry["area_id"] = wantd["area_id"] + if h_item: + li_diff = [ + item + for item in entry + h_item + if item not in entry or item not in h_item + ] + else: + li_diff = entry + filter_list_entry["filter_list"] = li_diff + self.addcmd(filter_list_entry, "area.filter_list", False) + for name, entry in iteritems(haved): + if name == "filter_list": + self.addcmd(entry, "area.filter_list", True) + + def _address_family_compare(self, want, have): + if want["process_id"] == have.get("process_id") or want["process_id"]: + af_parsers = [ + "address_family.adjacency", + "address_family.auto_cost", + "address_family.bfd", + "address_family.capability", + "address_family.compatible", + "address_family.default_information", + "address_family.default_metric", + "address_family.distance.admin_distance", + "address_family.distance.ospf", + "address_family.distribute_list.acls", + "address_family.distribute_list.prefix", + "address_family.distribute_list.route_map", + "address_family.event_log", + "address_family.graceful_restart", + "address_family.interface_id", + "address_family.limit", + "address_family.local_rib_criteria", + "address_family.log_adjacency_changes", + "address_family.manet", + "address_family.max_lsa", + "address_family.max_metric", + "address_family.maximum_paths", + "address_family.passive_interface", + "address_family.prefix_suppression", + "address_family.queue_depth.hello", + "address_family.queue_depth.update", + "address_family.router_id", + "address_family.shutdown", + "address_family.summary_prefix", + "address_family.timers.throttle.lsa", + "address_family.timers.throttle.spf", + ] + delete_exit_family = False + for each_want_af in want["address_family"]: + if have.get("address_family"): + for each_have_af in have["address_family"]: + if each_have_af.get("vrf") == each_want_af.get( + "vrf" + ) and each_have_af.get("afi") == each_want_af.get( + "afi" + ): + self.compare( + parsers=["address_family"], + want={"address_family": each_want_af}, + have={"address_family": each_have_af}, + ) + self.compare( + parsers=af_parsers, + want=each_want_af, + have=each_have_af, + ) + elif each_have_af.get("afi") == each_want_af.get( + "afi" + ): + self.compare( + parsers=["address_family"], + want={"address_family": each_want_af}, + have={"address_family": each_have_af}, + ) + self.compare( + parsers=af_parsers, + want={"address_family": each_want_af}, + have={"address_family": each_have_af}, + ) + if each_want_af.get("areas"): + af_want_areas = {} + af_have_areas = {} + for each_area in each_want_af["areas"]: + af_want_areas.update( + {each_area["area_id"]: each_area} + ) + if each_have_af.get("areas"): + for each_area in each_have_af["areas"]: + af_have_areas.update( + {each_area["area_id"]: each_area} + ) + + if "exit-address-family" in self.commands: + del self.commands[ + self.commands.index("exit-address-family") + ] + delete_exit_family = True + + if af_have_areas: + self._areas_compare( + {"areas": af_want_areas}, + {"areas": af_have_areas}, + ) + else: + self._areas_compare( + {"areas": af_want_areas}, dict() + ) + if delete_exit_family: + self.commands.append("exit-address-family") + else: + temp_cmd_before = self.commands + self.commands = [] + self.compare( + parsers=["address_family"], + want={"address_family": each_want_af}, + have=dict(), + ) + self.compare( + parsers=af_parsers, want=each_want_af, have=dict() + ) + if each_want_af.get("areas"): + af_areas = {} + for each_area in each_want_af["areas"]: + af_areas.update({each_area["area_id"]: each_area}) + self._areas_compare({"areas": af_areas}, dict()) + del self.commands[ + self.commands.index("exit-address-family") + ] + self.commands.append("exit-address-family") + self.commands[0:0] = temp_cmd_before diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py new file mode 100644 index 00000000..15053f44 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/static_routes/static_routes.py @@ -0,0 +1,713 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_static_routes class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +import copy +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + new_dict_to_set, + validate_n_expand_ipv4, + filter_dict_having_none_value, +) + + +class Static_Routes(ConfigBase): + """ + The ios_static_routes class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["static_routes"] + + def __init__(self, module): + super(Static_Routes, self).__init__(module) + + def get_static_routes_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + static_routes_facts = facts["ansible_network_resources"].get( + "static_routes" + ) + if not static_routes_facts: + return [] + return static_routes_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_static_routes_facts = self.get_static_routes_facts() + else: + existing_static_routes_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_static_routes_facts)) + + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_static_routes_facts = self.get_static_routes_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_static_routes_facts( + data=running_config + ) + else: + changed_static_routes_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_static_routes_facts + if result["changed"]: + result["after"] = changed_static_routes_facts + elif self.state == "gathered": + result["gathered"] = changed_static_routes_facts + + result["warnings"] = warnings + + return result + + def set_config(self, existing_static_routes_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + want = self._module.params["config"] + have = existing_static_routes_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + state = self._module.params["state"] + if ( + state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + state + ) + ) + commands = [] + if state == "overridden": + commands = self._state_overridden(want, have) + elif state == "deleted": + commands = self._state_deleted(want, have) + elif state == "merged" or state == "rendered": + commands = self._state_merged(want, have) + elif state == "replaced": + commands = self._state_replaced(want, have) + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + commands = [] + + # Drill each iteration of want n have and then based on dest and afi tyoe comparison take config call + for w in want: + for addr_want in w.get("address_families"): + for route_want in addr_want.get("routes"): + check = False + for h in have: + if h.get("address_families"): + for addr_have in h.get("address_families"): + for route_have in addr_have.get("routes"): + if ( + route_want.get("dest") + == route_have.get("dest") + and addr_want["afi"] + == addr_have["afi"] + ): + check = True + have_set = set() + new_hops = [] + for each in route_want.get( + "next_hops" + ): + want_set = set() + new_dict_to_set( + each, [], want_set, 0 + ) + new_hops.append(want_set) + new_dict_to_set( + addr_have, [], have_set, 0 + ) + # Check if the have dict next_hops value is diff from want dict next_hops + have_dict = filter_dict_having_none_value( + route_want.get("next_hops")[0], + route_have.get("next_hops")[0], + ) + # update the have_dict with forward_router_address + have_dict.update( + { + "forward_router_address": route_have.get( + "next_hops" + )[ + 0 + ].get( + "forward_router_address" + ) + } + ) + # updating the have_dict with next_hops val that's not None + new_have_dict = {} + for k, v in have_dict.items(): + if v is not None: + new_have_dict.update({k: v}) + + # Set the new config from the user provided want config + cmd = self._set_config( + w, + h, + addr_want, + route_want, + route_have, + new_hops, + have_set, + ) + + if cmd: + # since inplace update isn't allowed for static routes, preconfigured + # static routes needs to be deleted before the new want static routes changes + # are applied + clear_route_have = copy.deepcopy( + route_have + ) + # inplace update is allowed in case of ipv6 static routes, so not deleting it + # before applying the want changes + if ":" not in route_want.get( + "dest" + ): + commands.extend( + self._clear_config( + {}, + h, + {}, + addr_have, + {}, + clear_route_have, + ) + ) + commands.extend(cmd) + if check: + break + if check: + break + if not check: + # For configuring any non-existing want config + new_hops = [] + for each in route_want.get("next_hops"): + want_set = set() + new_dict_to_set(each, [], want_set, 0) + new_hops.append(want_set) + commands.extend( + self._set_config( + w, + {}, + addr_want, + route_want, + {}, + new_hops, + set(), + ) + ) + commands = [each for each in commands if "no" in each] + [ + each for each in commands if "no" not in each + ] + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + commands = [] + # Creating a copy of want, so that want dict is intact even after delete operation + # performed during override want n have comparison + temp_want = copy.deepcopy(want) + + # Drill each iteration of want n have and then based on dest and afi tyoe comparison take config call + for h in have: + if h.get("address_families"): + for addr_have in h.get("address_families"): + for route_have in addr_have.get("routes"): + check = False + for w in temp_want: + for addr_want in w.get("address_families"): + count = 0 + for route_want in addr_want.get("routes"): + if ( + route_want.get("dest") + == route_have.get("dest") + and addr_want["afi"] + == addr_have["afi"] + ): + check = True + have_set = set() + new_hops = [] + for each in route_want.get( + "next_hops" + ): + want_set = set() + new_dict_to_set( + each, [], want_set, 0 + ) + new_hops.append(want_set) + new_dict_to_set( + addr_have, [], have_set, 0 + ) + commands.extend( + self._clear_config( + w, + h, + addr_want, + addr_have, + route_want, + route_have, + ) + ) + commands.extend( + self._set_config( + w, + h, + addr_want, + route_want, + route_have, + new_hops, + have_set, + ) + ) + del addr_want.get("routes")[count] + count += 1 + if check: + break + if check: + break + if not check: + commands.extend( + self._clear_config( + {}, h, {}, addr_have, {}, route_have + ) + ) + # For configuring any non-existing want config + for w in temp_want: + for addr_want in w.get("address_families"): + for route_want in addr_want.get("routes"): + new_hops = [] + for each in route_want.get("next_hops"): + want_set = set() + new_dict_to_set(each, [], want_set, 0) + new_hops.append(want_set) + commands.extend( + self._set_config( + w, {}, addr_want, route_want, {}, new_hops, set() + ) + ) + # Arranging the cmds suct that all delete cmds are fired before all set cmds + commands = [each for each in sorted(commands) if "no" in each] + [ + each for each in sorted(commands) if "no" not in each + ] + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + # Drill each iteration of want n have and then based on dest and afi tyoe comparison take config call + for w in want: + for addr_want in w.get("address_families"): + for route_want in addr_want.get("routes"): + check = False + for h in have: + if h.get("address_families"): + for addr_have in h.get("address_families"): + for route_have in addr_have.get("routes"): + if ( + route_want.get("dest") + == route_have.get("dest") + and addr_want["afi"] + == addr_have["afi"] + ): + check = True + have_set = set() + new_hops = [] + for each in route_want.get( + "next_hops" + ): + want_set = set() + new_dict_to_set( + each, [], want_set, 0 + ) + new_hops.append(want_set) + new_dict_to_set( + addr_have, [], have_set, 0 + ) + commands.extend( + self._set_config( + w, + h, + addr_want, + route_want, + route_have, + new_hops, + have_set, + ) + ) + if check: + break + if check: + break + if not check: + # For configuring any non-existing want config + new_hops = [] + for each in route_want.get("next_hops"): + want_set = set() + new_dict_to_set(each, [], want_set, 0) + new_hops.append(want_set) + commands.extend( + self._set_config( + w, + {}, + addr_want, + route_want, + {}, + new_hops, + set(), + ) + ) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + # Drill each iteration of want n have and then based on dest and afi type comparison fire delete config call + for w in want: + if w.get("address_families"): + for addr_want in w.get("address_families"): + for route_want in addr_want.get("routes"): + check = False + for h in have: + if h.get("address_families"): + for addr_have in h.get("address_families"): + for route_have in addr_have.get( + "routes" + ): + if ( + route_want.get("dest") + == route_have.get("dest") + and addr_want["afi"] + == addr_have["afi"] + ): + check = True + if route_want.get("next_hops"): + commands.extend( + self._clear_config( + {}, + w, + {}, + addr_want, + {}, + route_want, + ) + ) + else: + commands.extend( + self._clear_config( + {}, + h, + {}, + addr_have, + {}, + route_have, + ) + ) + if check: + break + if check: + break + else: + for h in have: + for addr_have in h.get("address_families"): + for route_have in addr_have.get("routes"): + if w.get("vrf") == h.get("vrf"): + commands.extend( + self._clear_config( + {}, + h, + {}, + addr_have, + {}, + route_have, + ) + ) + else: + # Drill each iteration of have and then based on dest and afi type comparison fire delete config call + for h in have: + for addr_have in h.get("address_families"): + for route_have in addr_have.get("routes"): + commands.extend( + self._clear_config( + {}, h, {}, addr_have, {}, route_have + ) + ) + + return commands + + def prepare_config_commands(self, config_dict, cmd): + """ + function to parse the input dict and form the prepare the config commands + :rtype: A str + :returns: The command necessary to configure the static routes + """ + + dhcp = config_dict.get("dhcp") + distance_metric = config_dict.get("distance_metric") + forward_router_address = config_dict.get("forward_router_address") + global_route_config = config_dict.get("global") + interface = config_dict.get("interface") + multicast = config_dict.get("multicast") + name = config_dict.get("name") + permanent = config_dict.get("permanent") + tag = config_dict.get("tag") + track = config_dict.get("track") + dest = config_dict.get("dest") + temp_dest = dest.split("/") + if temp_dest and ":" not in dest: + dest = validate_n_expand_ipv4(self._module, {"address": dest}) + + cmd = cmd + dest + if interface: + cmd = cmd + " {0}".format(interface) + if forward_router_address: + cmd = cmd + " {0}".format(forward_router_address) + if dhcp: + cmd = cmd + " DHCP" + if distance_metric: + cmd = cmd + " {0}".format(distance_metric) + if global_route_config: + cmd = cmd + " global" + if multicast: + cmd = cmd + " multicast" + if name: + cmd = cmd + " name {0}".format(name) + if permanent: + cmd = cmd + " permanent" + elif track: + cmd = cmd + " track {0}".format(track) + if tag: + cmd = cmd + " tag {0}".format(tag) + + return cmd + + def _set_config( + self, want, have, addr_want, route_want, route_have, hops, have_set + ): + """ + Set the interface config based on the want and have config + :rtype: A list + :returns: The commands necessary to configure the static routes + """ + + commands = [] + cmd = None + + vrf_diff = False + topology_diff = False + want_vrf = want.get("vrf") + have_vrf = have.get("vrf") + if want_vrf != have_vrf: + vrf_diff = True + want_topology = want.get("topology") + have_topology = have.get("topology") + if want_topology != have_topology: + topology_diff = True + + have_dest = route_have.get("dest") + if have_dest: + have_set.add(tuple(iteritems({"dest": have_dest}))) + + # configure set cmd for each hops under the same destination + for each in hops: + diff = each - have_set + if vrf_diff: + each.add(tuple(iteritems({"vrf": want_vrf}))) + if topology_diff: + each.add(tuple(iteritems({"topology": want_topology}))) + if diff or vrf_diff or topology_diff: + if want_vrf and not vrf_diff: + each.add(tuple(iteritems({"vrf": want_vrf}))) + if want_topology and not vrf_diff: + each.add(tuple(iteritems({"topology": want_topology}))) + each.add(tuple(iteritems({"afi": addr_want.get("afi")}))) + each.add(tuple(iteritems({"dest": route_want.get("dest")}))) + temp_want = {} + for each_want in each: + temp_want.update(dict(each_want)) + + if temp_want.get("afi") == "ipv4": + cmd = "ip route " + vrf = temp_want.get("vrf") + if vrf: + cmd = cmd + "vrf {0} ".format(vrf) + cmd = self.prepare_config_commands(temp_want, cmd) + elif temp_want.get("afi") == "ipv6": + cmd = "ipv6 route " + cmd = self.prepare_config_commands(temp_want, cmd) + commands.append(cmd) + + return commands + + def _clear_config( + self, want, have, addr_want, addr_have, route_want, route_have + ): + """ + Delete the interface config based on the want and have config + :rtype: A list + :returns: The commands necessary to configure the static routes + """ + + commands = [] + cmd = None + + vrf_diff = False + topology_diff = False + want_vrf = want.get("vrf") + have_vrf = have.get("vrf") + if want_vrf != have_vrf: + vrf_diff = True + want_topology = want.get("topology") + have_topology = have.get("topology") + if want_topology != have_topology: + topology_diff = True + + want_set = set() + new_dict_to_set(addr_want, [], want_set, 0) + + have_hops = [] + for each in route_have.get("next_hops"): + temp_have_set = set() + new_dict_to_set(each, [], temp_have_set, 0) + have_hops.append(temp_have_set) + + # configure delete cmd for each hops under the same destination + for each in have_hops: + diff = each - want_set + if vrf_diff: + each.add(tuple(iteritems({"vrf": have_vrf}))) + if topology_diff: + each.add(tuple(iteritems({"topology": want_topology}))) + if diff or vrf_diff or topology_diff: + if want_vrf and not vrf_diff: + each.add(tuple(iteritems({"vrf": want_vrf}))) + if want_topology and not vrf_diff: + each.add(tuple(iteritems({"topology": want_topology}))) + if addr_want: + each.add(tuple(iteritems({"afi": addr_want.get("afi")}))) + else: + each.add(tuple(iteritems({"afi": addr_have.get("afi")}))) + if route_want: + each.add( + tuple(iteritems({"dest": route_want.get("dest")})) + ) + else: + each.add( + tuple(iteritems({"dest": route_have.get("dest")})) + ) + temp_want = {} + for each_want in each: + temp_want.update(dict(each_want)) + + if temp_want.get("afi") == "ipv4": + cmd = "no ip route " + vrf = temp_want.get("vrf") + if vrf: + cmd = cmd + "vrf {0} ".format(vrf) + cmd = self.prepare_config_commands(temp_want, cmd) + elif temp_want.get("afi") == "ipv6": + cmd = "no ipv6 route " + cmd = self.prepare_config_commands(temp_want, cmd) + commands.append(cmd) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py new file mode 100644 index 00000000..1e6edec8 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/config/vlans/vlans.py @@ -0,0 +1,337 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_vlans class +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 it's desired end-state is +created +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base import ( + ConfigBase, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.facts import ( + Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + dict_to_set, +) + + +class Vlans(ConfigBase): + """ + The ios_vlans class + """ + + gather_subset = ["!all", "!min"] + + gather_network_resources = ["vlans"] + + def __init__(self, module): + super(Vlans, self).__init__(module) + + def get_vlans_facts(self, data=None): + """ Get the 'facts' (the current configuration) + + :rtype: A dictionary + :returns: The current configuration as a dictionary + """ + facts, _warnings = Facts(self._module).get_facts( + self.gather_subset, self.gather_network_resources, data=data + ) + interfaces_facts = facts["ansible_network_resources"].get("vlans") + if not interfaces_facts: + return [] + return interfaces_facts + + def execute_module(self): + """ Execute the module + + :rtype: A dictionary + :returns: The result from module execution + """ + result = {"changed": False} + commands = list() + warnings = list() + + if self.state in self.ACTION_STATES: + existing_vlans_facts = self.get_vlans_facts() + else: + existing_vlans_facts = [] + + if self.state in self.ACTION_STATES or self.state == "rendered": + commands.extend(self.set_config(existing_vlans_facts)) + if commands and self.state in self.ACTION_STATES: + if not self._module.check_mode: + self._connection.edit_config(commands) + result["changed"] = True + if self.state in self.ACTION_STATES: + result["commands"] = commands + + if self.state in self.ACTION_STATES or self.state == "gathered": + changed_vlans_facts = self.get_vlans_facts() + elif self.state == "rendered": + result["rendered"] = commands + elif self.state == "parsed": + running_config = self._module.params["running_config"] + if not running_config: + self._module.fail_json( + msg="value of running_config parameter must not be empty for state parsed" + ) + result["parsed"] = self.get_vlans_facts(data=running_config) + else: + changed_vlans_facts = [] + + if self.state in self.ACTION_STATES: + result["before"] = existing_vlans_facts + if result["changed"]: + result["after"] = changed_vlans_facts + elif self.state == "gathered": + result["gathered"] = changed_vlans_facts + + result["warnings"] = warnings + return result + + def set_config(self, existing_vlans_facts): + """ Collect the configuration from the args passed to the module, + collect the current configuration (as a dict from facts) + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + want = self._module.params["config"] + have = existing_vlans_facts + resp = self.set_state(want, have) + return to_list(resp) + + def set_state(self, want, have): + """ Select the appropriate function based on the state provided + + :param want: the desired configuration as a dictionary + :param have: the current configuration as a dictionary + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + + if ( + self.state in ("overridden", "merged", "replaced", "rendered") + and not want + ): + self._module.fail_json( + msg="value of config parameter must not be empty for state {0}".format( + self.state + ) + ) + + if self.state == "overridden": + commands = self._state_overridden(want, have) + elif self.state == "deleted": + commands = self._state_deleted(want, have) + elif self.state in ("merged", "rendered"): + commands = self._state_merged(want, have) + elif self.state == "replaced": + commands = self._state_replaced(want, have) + return commands + + def _state_replaced(self, want, have): + """ The command generator when state is replaced + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + check = False + for each in want: + for every in have: + if every["vlan_id"] == each["vlan_id"]: + check = True + break + continue + if check: + commands.extend(self._set_config(each, every)) + else: + commands.extend(self._set_config(each, dict())) + + return commands + + def _state_overridden(self, want, have): + """ The command generator when state is overridden + + :rtype: A list + :returns: the commands necessary to migrate the current configuration + to the desired configuration + """ + commands = [] + + want_local = want + for each in have: + count = 0 + for every in want_local: + if each["vlan_id"] == every["vlan_id"]: + break + count += 1 + else: + # We didn't find a matching desired state, which means we can + # pretend we received an empty desired state. + commands.extend(self._clear_config(every, each)) + continue + commands.extend(self._set_config(every, each)) + # as the pre-existing VLAN are now configured by + # above set_config call, deleting the respective + # VLAN entry from the want_local list + del want_local[count] + + # Iterating through want_local list which now only have new VLANs to be + # configured + for each in want_local: + commands.extend(self._set_config(each, dict())) + + return commands + + def _state_merged(self, want, have): + """ The command generator when state is merged + + :rtype: A list + :returns: the commands necessary to merge the provided into + the current configuration + """ + commands = [] + + check = False + for each in want: + for every in have: + if each.get("vlan_id") == every.get("vlan_id"): + check = True + break + continue + if check: + commands.extend(self._set_config(each, every)) + else: + commands.extend(self._set_config(each, dict())) + + return commands + + def _state_deleted(self, want, have): + """ The command generator when state is deleted + + :rtype: A list + :returns: the commands necessary to remove the current configuration + of the provided objects + """ + commands = [] + + if want: + check = False + for each in want: + for every in have: + if each.get("vlan_id") == every.get("vlan_id"): + check = True + break + check = False + continue + if check: + commands.extend(self._clear_config(each, every)) + else: + for each in have: + commands.extend(self._clear_config(dict(), each)) + + return commands + + def remove_command_from_config_list(self, vlan, cmd, commands): + if vlan not in commands and cmd != "vlan": + commands.insert(0, vlan) + elif cmd == "vlan": + commands.append("no %s" % vlan) + return commands + commands.append("no %s" % cmd) + return commands + + def add_command_to_config_list(self, vlan_id, cmd, commands): + if vlan_id not in commands: + commands.insert(0, vlan_id) + if cmd not in commands: + commands.append(cmd) + + def _set_config(self, want, have): + # Set the interface config based on the want and have config + commands = [] + vlan = "vlan {0}".format(want.get("vlan_id")) + + # Get the diff b/w want n have + want_dict = dict_to_set(want) + have_dict = dict_to_set(have) + diff = want_dict - have_dict + + if diff: + name = dict(diff).get("name") + state = dict(diff).get("state") + shutdown = dict(diff).get("shutdown") + mtu = dict(diff).get("mtu") + remote_span = dict(diff).get("remote_span") + if name: + cmd = "name {0}".format(name) + self.add_command_to_config_list(vlan, cmd, commands) + if state: + cmd = "state {0}".format(state) + self.add_command_to_config_list(vlan, cmd, commands) + if mtu: + cmd = "mtu {0}".format(mtu) + self.add_command_to_config_list(vlan, cmd, commands) + if remote_span: + self.add_command_to_config_list(vlan, "remote-span", commands) + if shutdown == "enabled": + self.add_command_to_config_list(vlan, "shutdown", commands) + elif shutdown == "disabled": + self.add_command_to_config_list(vlan, "no shutdown", commands) + + return commands + + def _clear_config(self, want, have): + # Delete the interface config based on the want and have config + commands = [] + vlan = "vlan {0}".format(have.get("vlan_id")) + + if ( + have.get("vlan_id") + and "default" not in have.get("name") + and ( + have.get("vlan_id") != want.get("vlan_id") + or self.state == "deleted" + ) + ): + self.remove_command_from_config_list(vlan, "vlan", commands) + elif "default" not in have.get("name"): + if have.get("mtu") != want.get("mtu"): + self.remove_command_from_config_list(vlan, "mtu", commands) + if have.get("remote_span") != want.get("remote_span") and want.get( + "remote_span" + ): + self.remove_command_from_config_list( + vlan, "remote-span", commands + ) + if have.get("shutdown") != want.get("shutdown") and want.get( + "shutdown" + ): + self.remove_command_from_config_list( + vlan, "shutdown", commands + ) + if have.get("state") != want.get("state") and want.get("state"): + self.remove_command_from_config_list(vlan, "state", commands) + + return commands diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py new file mode 100644 index 00000000..03d65e94 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acl_interfaces/acl_interfaces.py @@ -0,0 +1,133 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_acl_interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +import re +from copy import deepcopy + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.acl_interfaces.acl_interfaces import ( + Acl_InterfacesArgs, +) + + +class Acl_InterfacesFacts(object): + """ The ios_acl_interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Acl_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_acl_interfaces_data(self, connection): + return connection.get( + "sh running-config | include interface|ip access-group|ipv6 traffic-filter" + ) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = [] + + if not data: + data = self.get_acl_interfaces_data(connection) + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + + facts = {} + if objs: + facts["acl_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + + for cfg in params["config"]: + facts["acl_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + config["name"] = intf + config["access_groups"] = [] + acl_v4_config = {} + acl_v6_config = {} + + def common_iter_code(cmd, conf): + # Common code for IPV4 and IPV6 config parsing + acls = [] + re_cmd = cmd + " (\\S+.*)" + ip_all = re.findall(re_cmd, conf) + for each in ip_all: + acl = {} + access_grp_config = each.split(" ") + acl["name"] = access_grp_config[0] + acl["direction"] = access_grp_config[1] + acls.append(acl) + return acls + + if "ip" in conf: + acls = common_iter_code("ip access-group", conf) + acl_v4_config["afi"] = "ipv4" + acl_v4_config["acls"] = acls + config["access_groups"].append(acl_v4_config) + if "ipv6" in conf: + acls = common_iter_code("ipv6 traffic-filter", conf) + acl_v6_config["afi"] = "ipv6" + acl_v6_config["acls"] = acls + config["access_groups"].append(acl_v6_config) + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py new file mode 100644 index 00000000..7ef73e7e --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/acls/acls.py @@ -0,0 +1,127 @@ +# pylint: skip-file +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_acls 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 __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 import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.acls.acls import ( + AclsArgs, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.acls import ( + AclsTemplate, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network_template import ( + NetworkTemplate, +) + + +class AclsFacts(object): + """ The ios_acls fact class + """ + + def __init__(self, module, subspec="config", options="options"): + + self._module = module + self.argument_spec = AclsArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_acl_data(self, connection): + # Get the access-lists from the ios router + return connection.get("sh access-list") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for acls + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + + if not data: + data = self.get_acl_data(connection) + + rmmod = NetworkTemplate(lines=data.splitlines(), tmplt=AclsTemplate()) + current = rmmod.parse() + + temp_v4 = [] + temp_v6 = [] + if current.get("acls"): + for k, v in iteritems(current.get("acls")): + if v.get("afi") == "ipv4": + del v["afi"] + temp_v4.append(v) + elif v.get("afi") == "ipv6": + del v["afi"] + temp_v6.append(v) + temp_v4 = sorted(temp_v4, key=lambda i: str(i["name"])) + temp_v6 = sorted(temp_v6, key=lambda i: str(i["name"])) + for each in temp_v4: + for each_ace in each.get("aces"): + if each["acl_type"] == "standard": + each_ace["source"] = each_ace.pop("std_source") + if each_ace.get("icmp_igmp_tcp_protocol"): + each_ace["protocol_options"] = { + each_ace["protocol"]: { + each_ace.pop("icmp_igmp_tcp_protocol").replace( + "-", "_" + ): True + } + } + if each_ace.get("std_source") == {}: + del each_ace["std_source"] + for each in temp_v6: + for each_ace in each.get("aces"): + if each_ace.get("std_source") == {}: + del each_ace["std_source"] + if each_ace.get("icmp_igmp_tcp_protocol"): + each_ace["protocol_options"] = { + each_ace["protocol"]: { + each_ace.pop("icmp_igmp_tcp_protocol").replace( + "-", "_" + ): True + } + } + + objs = [] + if temp_v4: + objs.append({"afi": "ipv4", "acls": temp_v4}) + if temp_v6: + objs.append({"afi": "ipv6", "acls": temp_v6}) + # objs['ipv6'] = {'acls': temp_v6} + facts = {} + if objs: + facts["acls"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["acls"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py new file mode 100644 index 00000000..d10002c6 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/bgp_global/bgp_global.py @@ -0,0 +1,97 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 cisco.ios bgp_global 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 copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.bgp_global import ( + Bgp_globalTemplate, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.bgp_global.bgp_global import ( + Bgp_globalArgs, +) + + +class Bgp_globalFacts(object): + """ The cisco.ios bgp_global facts class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Bgp_globalArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_bgp_global_data(self, connection): + return connection.get("sh running-config | section ^router bgp") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for Bgp_global network resource + + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + + :rtype: dictionary + :returns: facts + """ + facts = {} + + if not data: + data = self.get_bgp_global_data(connection) + + # parse native config using the Bgp_global template + bgp_global_parser = Bgp_globalTemplate(lines=data.splitlines()) + objs = bgp_global_parser.parse() + + objs = utils.remove_empties(objs) + if "neighbor" in objs: + temp_neighbor = [] + temp = {} + temp["address"] = None + for each in objs["neighbor"]: + if temp["address"] != each["address"]: + if temp["address"]: + temp_neighbor.append(temp) + temp = {} + temp["address"] = each.pop("address") + if each: + temp.update(each) + else: + each.pop("address") + temp.update(each) + if temp: + temp_neighbor.append(temp) + objs["neighbor"] = temp_neighbor + if objs: + ansible_facts["ansible_network_resources"].pop("bgp_global", None) + + params = utils.remove_empties( + utils.validate_config(self.argument_spec, {"config": objs}) + ) + facts["bgp_global"] = params["config"] + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py new file mode 100644 index 00000000..91c00404 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/facts.py @@ -0,0 +1,130 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The facts class for ios +this file validates each subset of facts and selectively +calls the appropriate facts gathering function +""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts import ( + FactsBase, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.interfaces.interfaces import ( + InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.l2_interfaces.l2_interfaces import ( + L2_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.vlans.vlans import ( + VlansFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lag_interfaces.lag_interfaces import ( + Lag_interfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lacp.lacp import ( + LacpFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lacp_interfaces.lacp_interfaces import ( + Lacp_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lldp_global.lldp_global import ( + Lldp_globalFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.lldp_interfaces.lldp_interfaces import ( + Lldp_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.l3_interfaces.l3_interfaces import ( + L3_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.acl_interfaces.acl_interfaces import ( + Acl_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.static_routes.static_routes import ( + Static_RoutesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.acls.acls import ( + AclsFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospfv2.ospfv2 import ( + Ospfv2Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospfv3.ospfv3 import ( + Ospfv3Facts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.ospf_interfaces.ospf_interfaces import ( + Ospf_InterfacesFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.bgp_global.bgp_global import ( + Bgp_globalFacts, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.facts.legacy.base import ( + Default, + Hardware, + Interfaces, + Config, +) + + +FACT_LEGACY_SUBSETS = dict( + default=Default, hardware=Hardware, interfaces=Interfaces, config=Config +) + +FACT_RESOURCE_SUBSETS = dict( + interfaces=InterfacesFacts, + l2_interfaces=L2_InterfacesFacts, + vlans=VlansFacts, + lag_interfaces=Lag_interfacesFacts, + lacp=LacpFacts, + lacp_interfaces=Lacp_InterfacesFacts, + lldp_global=Lldp_globalFacts, + lldp_interfaces=Lldp_InterfacesFacts, + l3_interfaces=L3_InterfacesFacts, + acl_interfaces=Acl_InterfacesFacts, + static_routes=Static_RoutesFacts, + acls=AclsFacts, + ospfv2=Ospfv2Facts, + ospfv3=Ospfv3Facts, + ospf_interfaces=Ospf_InterfacesFacts, + bgp_global=Bgp_globalFacts, +) + + +class Facts(FactsBase): + """ The fact class for ios + """ + + VALID_LEGACY_GATHER_SUBSETS = frozenset(FACT_LEGACY_SUBSETS.keys()) + VALID_RESOURCE_SUBSETS = frozenset(FACT_RESOURCE_SUBSETS.keys()) + + def __init__(self, module): + super(Facts, self).__init__(module) + + def get_facts( + self, legacy_facts_type=None, resource_facts_type=None, data=None + ): + """ Collect the facts for ios + :param legacy_facts_type: List of legacy facts types + :param resource_facts_type: List of resource fact types + :param data: previously collected conf + :rtype: dict + :return: the facts gathered + """ + if self.VALID_RESOURCE_SUBSETS: + self.get_network_resources_facts( + FACT_RESOURCE_SUBSETS, resource_facts_type, data + ) + + if self.VALID_LEGACY_GATHER_SUBSETS: + self.get_network_legacy_facts( + FACT_LEGACY_SUBSETS, legacy_facts_type + ) + + return self.ansible_facts, self._warnings diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/interfaces.py new file mode 100644 index 00000000..098b3707 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/interfaces/interfaces.py @@ -0,0 +1,110 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +import re +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.interfaces.interfaces import ( + InterfacesArgs, +) + + +class InterfacesFacts(object): + """ The ios interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_interfaces_data(self, connection): + return connection.get("sh running-config | section ^interface") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = [] + + if not data: + data = self.get_interfaces_data(connection) + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + facts = {} + + if objs: + facts["interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + # populate the facts from the configuration + config["name"] = normalize_interface(intf) + config["description"] = utils.parse_conf_arg(conf, "description") + config["speed"] = 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/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py new file mode 100644 index 00000000..a507b2d1 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l2_interfaces/l2_interfaces.py @@ -0,0 +1,138 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from copy import deepcopy +import re +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.l2_interfaces.l2_interfaces import ( + L2_InterfacesArgs, +) + + +class L2_InterfacesFacts(object): + """ The ios l2 interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = L2_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_l2_interfaces_data(self, connection): + return connection.get("show running-config | section ^interface") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = [] + if not data: + data = self.get_l2_interfaces_data(connection) + + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + + facts = {} + if objs: + facts["l2_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["l2_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys from spec for null values + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + + if intf.upper()[:2] in ( + "HU", + "FO", + "TW", + "TE", + "GI", + "FA", + "ET", + "PO", + ): + # populate the facts from the configuration + config["name"] = normalize_interface(intf) + has_mode = utils.parse_conf_arg(conf, "switchport mode") + if has_mode: + config["mode"] = has_mode + has_access = utils.parse_conf_arg(conf, "switchport access vlan") + if has_access: + config["access"] = {"vlan": int(has_access)} + + has_voice = utils.parse_conf_arg(conf, "switchport voice vlan") + if has_voice: + config["voice"] = {"vlan": int(has_voice)} + + trunk = dict() + trunk["encapsulation"] = utils.parse_conf_arg( + conf, "switchport trunk encapsulation" + ) + native_vlan = utils.parse_conf_arg(conf, "native vlan") + if native_vlan: + trunk["native_vlan"] = int(native_vlan) + allowed_vlan = utils.parse_conf_arg(conf, "allowed vlan") + if allowed_vlan: + trunk["allowed_vlans"] = allowed_vlan.split(",") + pruning_vlan = utils.parse_conf_arg(conf, "pruning vlan") + if pruning_vlan: + trunk["pruning_vlans"] = pruning_vlan.split(",") + + config["trunk"] = trunk + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py new file mode 100644 index 00000000..8a709765 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/l3_interfaces/l3_interfaces.py @@ -0,0 +1,148 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_l3_interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +import re +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.l3_interfaces.l3_interfaces import ( + L3_InterfacesArgs, +) + + +class L3_InterfacesFacts(object): + """ The ios l3 interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = L3_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for l3 interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = [] + + if not data: + data = connection.get("show running-config | section ^interface") + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + facts = {} + + if objs: + facts["l3_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["l3_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys from spec for null values + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + # populate the facts from the configuration + config["name"] = normalize_interface(intf) + + ipv4 = [] + ipv4_all = re.findall(r"ip address (\S+.*)", conf) + for each in ipv4_all: + each_ipv4 = dict() + if "secondary" not in each and "dhcp" not in each: + each_ipv4["address"] = each + elif "secondary" in each: + each_ipv4["address"] = each.split(" secondary")[0] + each_ipv4["secondary"] = True + elif "dhcp" in each: + each_ipv4["address"] = "dhcp" + if "client-id" in each: + try: + each_ipv4["dhcp_client"] = int( + each.split(" hostname ")[0].split("/")[-1] + ) + except ValueError: + obj = re.search("\\d+", each) + if obj: + dhcp_client = obj.group() + each_ipv4["dhcp_client"] = int(dhcp_client) + if "hostname" in each: + each_ipv4["dhcp_hostname"] = each.split(" hostname ")[-1] + if "client-id" in each and each_ipv4["dhcp_client"] is None: + try: + each_ipv4["dhcp_client"] = int(each.split("/")[-1]) + except ValueError: + obj = re.search("\\d+", each) + if obj: + dhcp_client = obj.group() + each_ipv4["dhcp_client"] = int(dhcp_client) + if "hostname" in each and not each_ipv4["dhcp_hostname"]: + each_ipv4["dhcp_hostname"] = each.split(" hostname ")[-1] + 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() + if "autoconfig" in each: + each_ipv6["autoconfig"] = True + if "dhcp" in each: + each_ipv6["dhcp"] = True + each_ipv6["address"] = each.lower() + ipv6.append(each_ipv6) + config["ipv6"] = ipv6 + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/lacp.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/lacp.py new file mode 100644 index 00000000..d67bd1bd --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp/lacp.py @@ -0,0 +1,88 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios lacp 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.lacp.lacp import ( + LacpArgs, +) + + +class LacpFacts(object): + """ The ios lacp fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = LacpArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for lacp + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + if connection: + pass + + if not data: + data = connection.get("show lacp sys-id") + + obj = {} + if data: + lacp_obj = self.render_config(self.generated_spec, data) + if lacp_obj: + obj = lacp_obj + + ansible_facts["ansible_network_resources"].pop("lacp", None) + facts = {} + + params = utils.validate_config(self.argument_spec, {"config": obj}) + facts["lacp"] = utils.remove_empties(params["config"]) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + + config["system"]["priority"] = int(conf.split(",")[0]) + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py new file mode 100644 index 00000000..a1e4d6c4 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lacp_interfaces/lacp_interfaces.py @@ -0,0 +1,112 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lacp_interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +import re +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.lacp_interfaces.lacp_interfaces import ( + Lacp_InterfacesArgs, +) + + +class Lacp_InterfacesFacts(object): + """ The ios_lacp_interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + + self._module = module + self.argument_spec = Lacp_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for lacp_interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + if connection: + pass + + objs = [] + if not data: + data = connection.get("show running-config | section ^interface") + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + facts = {} + + if objs: + facts["lacp_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["lacp_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + if get_interface_type(intf) == "unknown": + return {} + + config["name"] = normalize_interface(intf) + port_priority = utils.parse_conf_arg(conf, "lacp port-priority") + max_bundle = utils.parse_conf_arg(conf, "lacp max-bundle") + if port_priority: + config["port_priority"] = int(port_priority) + if "lacp fast-switchover" in conf: + config["fast_switchover"] = True + if max_bundle: + config["max_bundle"] = int(max_bundle) + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py new file mode 100644 index 00000000..364d4e61 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lag_interfaces/lag_interfaces.py @@ -0,0 +1,128 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios lag_interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +import re +from copy import deepcopy + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.lag_interfaces.lag_interfaces import ( + Lag_interfacesArgs, +) + + +class Lag_interfacesFacts(object): + """ The ios_lag_interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Lag_interfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = [] + + if not data: + data = connection.get("show running-config | section ^interface") + # operate on a collection of resource x + config = ("\n" + data).split("\ninterface ") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + if not obj.get("members"): + obj.update({"members": []}) + objs.append(obj) + + # for appending members configured with same channel-group + for each in range(len(objs)): + if each < (len(objs) - 1): + if objs[each]["name"] == objs[each + 1]["name"]: + objs[each]["members"].append(objs[each + 1]["members"][0]) + del objs[each + 1] + facts = {} + + if objs: + facts["lag_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + + for cfg in params["config"]: + facts["lag_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)", conf) + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + member_config = {} + channel_group = utils.parse_conf_arg(conf, "channel-group") + if intf.startswith("Gi"): + config["name"] = intf + config["members"] = [] + if channel_group: + channel_group = channel_group.split(" ") + id = channel_group[0] + config["name"] = "Port-channel{0}".format(str(id)) + if "mode" in channel_group: + mode = channel_group[2] + member_config.update({"mode": mode}) + if "link" in channel_group: + link = channel_group[2] + member_config.update({"link": link}) + if member_config.get("mode") or member_config.get("link"): + member_config["member"] = normalize_interface(intf) + config["members"].append(member_config) + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py new file mode 100644 index 00000000..520a402f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/legacy/base.py @@ -0,0 +1,423 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +""" +The ios legacy 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +import platform +import re + +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.ios import ( + run_commands, + get_capabilities, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.ios import ( + normalize_interface, +) +from ansible.module_utils.six import iteritems +from ansible.module_utils.six.moves import zip + + +class FactsBase(object): + + COMMANDS = list() + + def __init__(self, module): + self.module = module + self.facts = dict() + self.warnings = list() + self.responses = None + + def populate(self): + self.responses = run_commands( + self.module, commands=self.COMMANDS, check_rc=False + ) + + def run(self, cmd): + return run_commands(self.module, commands=cmd, check_rc=False) + + +class Default(FactsBase): + + COMMANDS = ["show version", "show virtual switch"] + + def populate(self): + super(Default, self).populate() + self.facts.update(self.platform_facts()) + data = self.responses[0] + if data: + self.facts["iostype"] = self.parse_iostype(data) + self.facts["serialnum"] = self.parse_serialnum(data) + self.parse_stacks(data) + data = self.responses[1] + vss_errs = ["Invalid input", "Switch Mode : Standalone"] + if data and not any(err in data for err in vss_errs): + self.parse_virtual_switch(data) + + def parse_iostype(self, data): + match = re.search(r"\sIOS-XE\s", data) + if match: + return "IOS-XE" + else: + return "IOS" + + def parse_serialnum(self, data): + match = re.search(r"board ID (\S+)", data) + if match: + return match.group(1) + + def parse_stacks(self, data): + match = re.findall(r"^Model [Nn]umber\s+: (\S+)", data, re.M) + if match: + self.facts["stacked_models"] = match + + match = re.findall( + r"^System [Ss]erial [Nn]umber\s+: (\S+)", data, re.M + ) + if match: + self.facts["stacked_serialnums"] = match + + if "stacked_models" in self.facts: + self.facts["virtual_switch"] = "STACK" + + def parse_virtual_switch(self, data): + match = re.search( + r"^Virtual switch domain number : ([0-9]+)", data, re.M + ) + if match: + self.facts["virtual_switch"] = "VSS" + self.facts["virtual_switch_domain"] = match.group(1) + + def platform_facts(self): + platform_facts = {} + + resp = get_capabilities(self.module) + device_info = resp["device_info"] + + platform_facts["system"] = device_info["network_os"] + + for item in ("model", "image", "version", "platform", "hostname"): + val = device_info.get("network_os_%s" % item) + if val: + platform_facts[item] = val + + platform_facts["api"] = resp["network_api"] + platform_facts["python_version"] = platform.python_version() + + return platform_facts + + +class Hardware(FactsBase): + + COMMANDS = ["dir", "show memory statistics"] + + def populate(self): + warnings = list() + super(Hardware, self).populate() + data = self.responses[0] + if data: + self.facts["filesystems"] = self.parse_filesystems(data) + self.facts["filesystems_info"] = self.parse_filesystems_info(data) + + data = self.responses[1] + if data: + if "Invalid input detected" in data: + warnings.append("Unable to gather memory statistics") + else: + processor_line = [ + l for l in data.splitlines() if "Processor" in l + ].pop() + match = re.findall(r"\s(\d+)\s", processor_line) + if match: + self.facts["memtotal_mb"] = int(match[0]) / 1024 + self.facts["memfree_mb"] = int(match[3]) / 1024 + + def parse_filesystems(self, data): + return re.findall(r"^Directory of (\S+)/", data, re.M) + + def parse_filesystems_info(self, data): + facts = dict() + fs = "" + for line in data.split("\n"): + match = re.match(r"^Directory of (\S+)/", line) + if match: + fs = match.group(1) + facts[fs] = dict() + continue + match = re.match(r"^(\d+) bytes total \((\d+) bytes free\)", line) + if match: + facts[fs]["spacetotal_kb"] = int(match.group(1)) / 1024 + facts[fs]["spacefree_kb"] = int(match.group(2)) / 1024 + return facts + + +class Config(FactsBase): + + COMMANDS = ["show running-config"] + + def populate(self): + super(Config, self).populate() + data = self.responses[0] + if data: + data = re.sub( + r"^Building configuration...\s+Current configuration : \d+ bytes\n", + "", + data, + flags=re.MULTILINE, + ) + self.facts["config"] = data + + +class Interfaces(FactsBase): + + COMMANDS = [ + "show interfaces", + "show ip interface", + "show ipv6 interface", + "show lldp", + "show cdp", + ] + + def populate(self): + super(Interfaces, self).populate() + + self.facts["all_ipv4_addresses"] = list() + self.facts["all_ipv6_addresses"] = list() + self.facts["neighbors"] = {} + + data = self.responses[0] + if data: + interfaces = self.parse_interfaces(data) + self.facts["interfaces"] = self.populate_interfaces(interfaces) + + data = self.responses[1] + if data: + data = self.parse_interfaces(data) + self.populate_ipv4_interfaces(data) + + data = self.responses[2] + if data: + data = self.parse_interfaces(data) + self.populate_ipv6_interfaces(data) + + data = self.responses[3] + lldp_errs = ["Invalid input", "LLDP is not enabled"] + + if data and not any(err in data for err in lldp_errs): + neighbors = self.run(["show lldp neighbors detail"]) + if neighbors: + self.facts["neighbors"].update( + self.parse_neighbors(neighbors[0]) + ) + + data = self.responses[4] + cdp_errs = ["CDP is not enabled"] + + if data and not any(err in data for err in cdp_errs): + cdp_neighbors = self.run(["show cdp neighbors detail"]) + if cdp_neighbors: + self.facts["neighbors"].update( + self.parse_cdp_neighbors(cdp_neighbors[0]) + ) + + def populate_interfaces(self, interfaces): + facts = dict() + for key, value in iteritems(interfaces): + intf = dict() + intf["description"] = self.parse_description(value) + intf["macaddress"] = self.parse_macaddress(value) + + intf["mtu"] = self.parse_mtu(value) + intf["bandwidth"] = self.parse_bandwidth(value) + intf["mediatype"] = self.parse_mediatype(value) + intf["duplex"] = self.parse_duplex(value) + intf["lineprotocol"] = self.parse_lineprotocol(value) + intf["operstatus"] = self.parse_operstatus(value) + intf["type"] = self.parse_type(value) + + facts[key] = intf + return facts + + def populate_ipv4_interfaces(self, data): + for key, value in data.items(): + self.facts["interfaces"][key]["ipv4"] = list() + primary_address = addresses = [] + primary_address = re.findall( + r"Internet address is (.+)$", value, re.M + ) + addresses = re.findall(r"Secondary address (.+)$", value, re.M) + if len(primary_address) == 0: + continue + addresses.append(primary_address[0]) + for address in addresses: + addr, subnet = address.split("/") + ipv4 = dict(address=addr.strip(), subnet=subnet.strip()) + self.add_ip_address(addr.strip(), "ipv4") + self.facts["interfaces"][key]["ipv4"].append(ipv4) + + def populate_ipv6_interfaces(self, data): + for key, value in iteritems(data): + try: + self.facts["interfaces"][key]["ipv6"] = list() + except KeyError: + self.facts["interfaces"][key] = dict() + self.facts["interfaces"][key]["ipv6"] = list() + addresses = re.findall(r"\s+(.+), subnet", value, re.M) + subnets = re.findall(r", subnet is (.+)$", value, re.M) + for addr, subnet in zip(addresses, subnets): + ipv6 = dict(address=addr.strip(), subnet=subnet.strip()) + self.add_ip_address(addr.strip(), "ipv6") + self.facts["interfaces"][key]["ipv6"].append(ipv6) + + def add_ip_address(self, address, family): + if family == "ipv4": + self.facts["all_ipv4_addresses"].append(address) + else: + self.facts["all_ipv6_addresses"].append(address) + + def parse_neighbors(self, neighbors): + facts = dict() + for entry in neighbors.split( + "------------------------------------------------" + ): + if entry == "": + continue + intf = self.parse_lldp_intf(entry) + if intf is None: + return facts + intf = normalize_interface(intf) + if intf not in facts: + facts[intf] = list() + fact = dict() + fact["host"] = self.parse_lldp_host(entry) + fact["port"] = self.parse_lldp_port(entry) + facts[intf].append(fact) + return facts + + def parse_cdp_neighbors(self, neighbors): + facts = dict() + for entry in neighbors.split("-------------------------"): + if entry == "": + continue + intf_port = self.parse_cdp_intf_port(entry) + if intf_port is None: + return facts + intf, port = intf_port + if intf not in facts: + facts[intf] = list() + fact = dict() + fact["host"] = self.parse_cdp_host(entry) + fact["platform"] = self.parse_cdp_platform(entry) + fact["port"] = port + facts[intf].append(fact) + return facts + + def parse_interfaces(self, data): + parsed = dict() + key = "" + for line in data.split("\n"): + if len(line) == 0: + continue + if line[0] == " ": + parsed[key] += "\n%s" % line + else: + match = re.match(r"^(\S+)", line) + if match: + key = match.group(1) + parsed[key] = line + return parsed + + def parse_description(self, data): + match = re.search(r"Description: (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_macaddress(self, data): + match = re.search(r"Hardware is (?:.*), address is (\S+)", data) + if match: + return match.group(1) + + def parse_ipv4(self, data): + match = re.search(r"Internet address is (\S+)", data) + if match: + addr, masklen = match.group(1).split("/") + return dict(address=addr, masklen=int(masklen)) + + def parse_mtu(self, data): + match = re.search(r"MTU (\d+)", data) + if match: + return int(match.group(1)) + + def parse_bandwidth(self, data): + match = re.search(r"BW (\d+)", data) + if match: + return int(match.group(1)) + + def parse_duplex(self, data): + match = re.search(r"(\w+) Duplex", data, re.M) + if match: + return match.group(1) + + def parse_mediatype(self, data): + match = re.search(r"media type is (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_type(self, data): + match = re.search(r"Hardware is (.+),", data, re.M) + if match: + return match.group(1) + + def parse_lineprotocol(self, data): + match = re.search(r"line protocol is (\S+)\s*$", data, re.M) + if match: + return match.group(1) + + def parse_operstatus(self, data): + match = re.search(r"^(?:.+) is (.+),", data, re.M) + if match: + return match.group(1) + + def parse_lldp_intf(self, data): + match = re.search(r"^Local Intf: (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_lldp_host(self, data): + match = re.search(r"System Name: (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_lldp_port(self, data): + match = re.search(r"Port id: (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_cdp_intf_port(self, data): + match = re.search( + r"^Interface: (.+), Port ID \(outgoing port\): (.+)$", data, re.M + ) + if match: + return match.group(1), match.group(2) + + def parse_cdp_host(self, data): + match = re.search(r"^Device ID: (.+)$", data, re.M) + if match: + return match.group(1) + + def parse_cdp_platform(self, data): + match = re.search(r"^Platform: (.+),", data, re.M) + if match: + return match.group(1) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py new file mode 100644 index 00000000..4c8ff3c1 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_global/lldp_global.py @@ -0,0 +1,100 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios lldp_global 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.lldp_global.lldp_global import ( + Lldp_globalArgs, +) + + +class Lldp_globalFacts(object): + """ The ios lldp_global fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Lldp_globalArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_lldp_global_data(self, connection): + return connection.get("show running-config | section ^lldp") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for lldp_global + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + objs = dict() + if not data: + data = self.get_lldp_global_data(connection) + # operate on a collection of resource x + config = data.split("\n") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.update(obj) + facts = {} + + if objs: + params = utils.validate_config( + self.argument_spec, {"config": utils.remove_empties(objs)} + ) + facts["lldp_global"] = utils.remove_empties(params["config"]) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + + holdtime = utils.parse_conf_arg(conf, "lldp holdtime") + timer = utils.parse_conf_arg(conf, "lldp timer") + reinit = utils.parse_conf_arg(conf, "lldp reinit") + if holdtime: + config["holdtime"] = int(holdtime) + if "lldp run" in conf: + config["enabled"] = True + if timer: + config["timer"] = int(timer) + if reinit: + config["reinit"] = int(reinit) + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py new file mode 100644 index 00000000..11a67238 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/lldp_interfaces/lldp_interfaces.py @@ -0,0 +1,115 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_lldp_interfaces 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +import re +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + get_interface_type, + normalize_interface, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.lldp_interfaces.lldp_interfaces import ( + Lldp_InterfacesArgs, +) + + +class Lldp_InterfacesFacts(object): + """ The ios_lldp_interfaces fact class + """ + + def __init__(self, module, subspec="config", options="options"): + + self._module = module + self.argument_spec = Lldp_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for lldp_interfaces + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + + objs = [] + if not data: + data = connection.get("show lldp interface") + # operate on a collection of resource x + config = data.split("\n\n") + for conf in config: + if conf: + obj = self.render_config(self.generated_spec, conf) + if obj: + objs.append(obj) + facts = {} + + if objs: + facts["lldp_interfaces"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["lldp_interfaces"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + match = re.search(r"^(\S+)(:)", conf) + intf = "" + if match: + intf = match.group(1) + + if get_interface_type(intf) == "unknown": + return {} + if intf.lower().startswith("gi"): + config["name"] = normalize_interface(intf) + receive = utils.parse_conf_arg(conf, "Rx:") + transmit = utils.parse_conf_arg(conf, "Tx:") + + if receive == "enabled": + config["receive"] = True + elif receive == "disabled": + config["receive"] = False + if transmit == "enabled": + config["transmit"] = True + elif transmit == "disabled": + config["transmit"] = False + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py new file mode 100644 index 00000000..dcf96605 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospf_interfaces/ospf_interfaces.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 cisco.ios ospf_interfaces 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 copy import deepcopy + +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospf_interfaces import ( + Ospf_InterfacesTemplate, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.ospf_interfaces.ospf_interfaces import ( + Ospf_InterfacesArgs, +) + + +class Ospf_InterfacesFacts(object): + """ The cisco.ios ospf_interfaces facts class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Ospf_InterfacesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_ospf_interfaces_data(self, connection): + return connection.get("sh running-config | section ^interface") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for Ospf_interfaces 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_ospf_interfaces_data(connection) + + # parse native config using the Ospf_interfaces template + ospf_interfaces_parser = Ospf_InterfacesTemplate( + lines=data.splitlines() + ) + + objs = ospf_interfaces_parser.parse() + final_objs = [] + for key, value in iteritems(objs): + temp_af = [] + if value["address_family"].get("ip"): + temp_af.append(value["address_family"].get("ip")) + if value["address_family"].get("ipv6"): + temp_af.append(value["address_family"].get("ipv6")) + if temp_af: + value["address_family"] = temp_af + if value: + value = utils.remove_empties(value) + final_objs.append(value) + ansible_facts["ansible_network_resources"].pop("ospf_interfaces", None) + + params = utils.remove_empties( + utils.validate_config(self.argument_spec, {"config": final_objs}) + ) + + facts["ospf_interfaces"] = params["config"] + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py new file mode 100644 index 00000000..7c67e3b7 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv2/ospfv2.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios ospfv2 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from copy import deepcopy + +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.ospfv2.ospfv2 import ( + Ospfv2Args, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospfv2 import ( + Ospfv2Template, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network_template import ( + NetworkTemplate, +) + + +class Ospfv2Facts(object): + """ The ios ospfv2 fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Ospfv2Args.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_ospfv2_data(self, connection): + return connection.get("sh running-config | section ^router ospf") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for ospfv2 + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + if not data: + data = self.get_ospfv2_data(connection) + + ipv4 = {"processes": []} + rmmod = NetworkTemplate( + lines=data.splitlines(), tmplt=Ospfv2Template() + ) + current = rmmod.parse() + + # convert some of the dicts to lists + for key, sortv in [("processes", "process_id")]: + if key in current and current[key]: + current[key] = current[key].values() + current[key] = sorted( + current[key], key=lambda k, sk=sortv: k[sk] + ) + + for process in current.get("processes", []): + if "areas" in process: + process["areas"] = list(process["areas"].values()) + process["areas"] = sorted( + process["areas"], key=lambda k, sk="area_id": k[sk] + ) + for area in process["areas"]: + if "filters" in area: + area["filters"].sort() + ipv4["processes"].append(process) + + ansible_facts["ansible_network_resources"].pop("ospfv2", None) + facts = {} + if current: + params = utils.validate_config( + self.argument_spec, {"config": ipv4} + ) + params = utils.remove_empties(params) + + facts["ospfv2"] = params["config"] + + ansible_facts["ansible_network_resources"].update(facts) + return ansible_facts diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py new file mode 100644 index 00000000..50d3f32f --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/ospfv3/ospfv3.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios ospfv3 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + +import re +from copy import deepcopy +from ansible.module_utils.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.ospfv3.ospfv3 import ( + Ospfv3Args, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.rm_templates.ospfv3 import ( + Ospfv3Template, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network_template import ( + NetworkTemplate, +) + + +class Ospfv3Facts(object): + """ The ios ospfv3 fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = Ospfv3Args.argument_spec + + def get_ospfv3_data(self, connection): + return connection.get("sh running-config | section ^router ospfv3") + + def parse(self, net_template_obj): + """ Overrided network template parse + """ + result = {} + shared = {} + temp_pid = None + for line in net_template_obj._lines: + for parser in net_template_obj._tmplt.PARSERS: + cap = re.match(parser["getval"], line) + if cap: + capdict = cap.groupdict() + + capdict = { + k: v for k, v in iteritems(capdict) if v is not None + } + if "address-family" in line: + capdict.update({"id": temp_pid}) + if ( + "manet" in line + and "pid" not in shared + and shared.get("unicast") + ): + del shared["unicast"] + + if "router ospfv3" in line: + temp_pid = None + if parser.get("shared"): + shared = capdict + if not temp_pid and ( + shared.get("pid") or shared.get("id") + ): + temp_pid = shared.get("pid") or shared.get("id") + vals = utils.dict_merge(capdict, shared) + try: + res = net_template_obj._deepformat( + deepcopy(parser["result"]), vals + ) + except Exception: + continue + result = utils.dict_merge(result, res) + break + return result + + def parse_for_address_family(self, current): + """ Parsing and Fishing out address family contents + """ + pid_addr_family_dict = {} + temp_dict = {} + temp_pid = None + temp = [] + if current.get("address_family"): + for each in current.pop("address_family"): + each = utils.remove_empties(each) + if each.get("exit"): + if temp_pid == each.get("exit")["pid"]: + temp.append(temp_dict) + pid_addr_family_dict[temp_pid] = temp + temp_dict = dict() + else: + temp_pid = each.get("exit")["pid"] + pid_addr_family_dict[temp_pid] = [temp_dict] + temp = [] + temp.append(temp_dict) + temp_dict = dict() + elif each.get("manet") and temp_dict.get("manet"): + for k, v in iteritems(each.get("manet")): + if k in temp_dict.get("manet"): + temp_dict.get("manet")[k].update(v) + else: + temp_dict["manet"].update(each.get("manet")) + elif each.get("manet") and not temp_dict.get("manet"): + temp_dict["manet"] = each.get("manet") + else: + temp_dict.update(each) + return pid_addr_family_dict + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for ospfv3 + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + if not data: + data = self.get_ospfv3_data(connection) + + ipv4 = {"processes": []} + rmmod = NetworkTemplate( + lines=data.splitlines(), tmplt=Ospfv3Template() + ) + current = self.parse(rmmod) + address_family = self.parse_for_address_family(current) + if address_family: + for k, v in iteritems(current["processes"]): + temp = address_family.pop(k) + v.update({"address_family": temp}) + # convert some of the dicts to lists + for key, sortv in [("processes", "process_id")]: + if key in current and current[key]: + current[key] = current[key].values() + current[key] = sorted( + current[key], key=lambda k, sk=sortv: k[sk] + ) + + for process in current.get("processes", []): + if "areas" in process: + process["areas"] = list(process["areas"].values()) + process["areas"] = sorted( + process["areas"], key=lambda k, sk="area_id": k[sk] + ) + for area in process["areas"]: + if "filters" in area: + area["filters"].sort() + if "address_family" in process: + for each in process["address_family"]: + if "areas" in each: + each["areas"] = list(each["areas"].values()) + each["areas"] = sorted( + each["areas"], key=lambda k, sk="area_id": k[sk] + ) + for area in each["areas"]: + if "filters" in area: + area["filters"].sort() + ipv4["processes"].append(process) + + ansible_facts["ansible_network_resources"].pop("ospfv3", None) + facts = {} + if current: + params = utils.validate_config( + self.argument_spec, {"config": ipv4} + ) + params = utils.remove_empties(params) + + facts["ospfv3"] = params["config"] + + ansible_facts["ansible_network_resources"].update(facts) + return ansible_facts diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/static_routes.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/static_routes.py new file mode 100644 index 00000000..09805ef0 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/static_routes/static_routes.py @@ -0,0 +1,272 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios_static_routes 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + netmask_to_cidr, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.static_routes.static_routes import ( + Static_RoutesArgs, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.utils.utils import ( + is_valid_ip, +) + + +class Static_RoutesFacts(object): + """ The ios_static_routes fact class + """ + + def __init__(self, module, subspec="config", options="options"): + + self._module = module + self.argument_spec = Static_RoutesArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_static_routes_data(self, connection): + return connection.get( + "sh running-config | section ^ip route|ipv6 route" + ) + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for static_routes + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + + objs = [] + if not data: + data = self.get_static_routes_data(connection) + # operate on a collection of resource x + config = data.split("\n") + + same_dest = self.populate_destination(config) + for key in same_dest.keys(): + if key: + obj = self.render_config( + self.generated_spec, key, same_dest[key] + ) + if obj: + objs.append(obj) + facts = {} + + # append all static routes address_family with NO VRF together + no_vrf_address_family = { + "address_families": [ + each.get("address_families")[0] + for each in objs + if each.get("vrf") is None + ] + } + + temp_objs = [each for each in objs if each.get("vrf") is not None] + temp_objs.append(no_vrf_address_family) + objs = temp_objs + + if objs: + facts["static_routes"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + for cfg in params["config"]: + facts["static_routes"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def update_netmask_to_cidr(self, filter, pos, del_pos): + netmask = filter.split(" ") + dest = netmask[pos] + "/" + netmask_to_cidr(netmask[del_pos]) + netmask[pos] = dest + del netmask[del_pos] + filter_vrf = " " + return filter_vrf.join(netmask), dest + + def populate_destination(self, config): + same_dest = {} + ip_str = "" + for i in sorted(config): + if i and "ospf" not in i: + if "::" in i and "vrf" in i: + ip_str = "ipv6 route vrf" + elif "::" in i and "vrf" not in i: + ip_str = "ipv6 route" + elif "." in i and "vrf" in i: + ip_str = "ip route vrf" + elif "." in i and "vrf" not in i: + ip_str = "ip route" + + if "vrf" in i: + filter_vrf = utils.parse_conf_arg(i, ip_str) + if "::" not in filter_vrf: + filter_vrf, dest_vrf = self.update_netmask_to_cidr( + filter_vrf, 1, 2 + ) + dest_vrf = dest_vrf + "_vrf" + else: + dest_vrf = filter_vrf.split(" ")[1] + if dest_vrf not in same_dest.keys(): + same_dest[dest_vrf] = [] + same_dest[dest_vrf].append("vrf " + filter_vrf) + elif "vrf" not in same_dest[dest_vrf][0]: + same_dest[dest_vrf] = [] + same_dest[dest_vrf].append("vrf " + filter_vrf) + else: + same_dest[dest_vrf].append(("vrf " + filter_vrf)) + else: + filter_non_vrf = utils.parse_conf_arg(i, ip_str) + if ( + "::" not in filter_non_vrf + ): # "/" not in filter_non_vrf and + filter_non_vrf, dest = self.update_netmask_to_cidr( + filter_non_vrf, 0, 1 + ) + else: + dest = filter_non_vrf.split(" ")[0] + if dest not in same_dest.keys(): + same_dest[dest] = [] + same_dest[dest].append(filter_non_vrf) + elif "vrf" in same_dest[dest][0]: + same_dest[dest] = [] + same_dest[dest].append(filter_non_vrf) + else: + same_dest[dest].append(filter_non_vrf) + return same_dest + + def render_config(self, spec, conf, conf_val): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + config["address_families"] = [] + route_dict = dict() + final_route = dict() + afi = dict() + final_route["routes"] = [] + next_hops = [] + hops = {} + vrf = "" + address_family = dict() + for each in conf_val: + route = each.split(" ") + if "vrf" in conf_val[0]: + vrf = route[route.index("vrf") + 1] + route_dict["dest"] = conf.split("_")[0] + else: + route_dict["dest"] = conf + if "vrf" in conf_val[0]: + hops = {} + if "::" in conf: + hops["forward_router_address"] = route[3] + afi["afi"] = "ipv6" + elif "." in conf: + if is_valid_ip(route[3]): + hops["forward_router_address"] = route[3] + afi["afi"] = "ipv4" + else: + hops["interface"] = route[3] + afi["afi"] = "ipv4" + if is_valid_ip(route[4]): + hops["forward_router_address"] = route[4] + else: + + if "::" in conf: + if is_valid_ip(route[1]): + hops["forward_router_address"] = route[1] + afi["afi"] = "ipv6" + else: + hops["interface"] = route[1] + afi["afi"] = "ipv6" + if is_valid_ip(route[2]): + hops["forward_router_address"] = route[2] + elif "." in conf: + if is_valid_ip(route[1]): + hops["forward_router_address"] = route[1] + afi["afi"] = "ipv4" + else: + hops["interface"] = route[1] + afi["afi"] = "ipv4" + if is_valid_ip(route[2]): + hops["forward_router_address"] = route[2] + try: + temp_list = each.split(" ") + if "tag" in temp_list: + del temp_list[temp_list.index("tag") + 1] + if "track" in temp_list: + del temp_list[temp_list.index("track") + 1] + # find distance metric + dist_metrics = int( + [ + i + for i in temp_list + if "." not in i + and ":" not in i + and ord(i[0]) > 48 + and ord(i[0]) < 57 + ][0] + ) + except IndexError: + dist_metrics = None + if dist_metrics: + hops["distance_metric"] = dist_metrics + if "name" in route: + hops["name"] = route[route.index("name") + 1] + if "multicast" in route: + hops["multicast"] = True + if "dhcp" in route: + hops["dhcp"] = True + if "global" in route: + hops["global"] = True + if "permanent" in route: + hops["permanent"] = True + if "tag" in route: + hops["tag"] = route[route.index("tag") + 1] + if "track" in route: + hops["track"] = route[route.index("track") + 1] + next_hops.append(hops) + hops = {} + route_dict["next_hops"] = next_hops + if route_dict: + final_route["routes"].append(route_dict) + address_family.update(afi) + address_family.update(final_route) + config["address_families"].append(address_family) + if vrf: + config["vrf"] = vrf + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py new file mode 100644 index 00000000..d2959182 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/facts/vlans/vlans.py @@ -0,0 +1,168 @@ +# +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +""" +The ios vlans 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 __future__ import absolute_import, division, print_function + +__metaclass__ = type + + +from copy import deepcopy +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common import ( + utils, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.argspec.vlans.vlans import ( + VlansArgs, +) + + +class VlansFacts(object): + """ The ios vlans fact class + """ + + def __init__(self, module, subspec="config", options="options"): + self._module = module + self.argument_spec = VlansArgs.argument_spec + spec = deepcopy(self.argument_spec) + if subspec: + if options: + facts_argument_spec = spec[subspec][options] + else: + facts_argument_spec = spec[subspec] + else: + facts_argument_spec = spec + + self.generated_spec = utils.generate_dict(facts_argument_spec) + + def get_vlans_data(self, connection): + return connection.get("show vlan") + + def populate_facts(self, connection, ansible_facts, data=None): + """ Populate the facts for vlans + :param connection: the device connection + :param ansible_facts: Facts dictionary + :param data: previously collected conf + :rtype: dictionary + :returns: facts + """ + + objs = [] + mtu_objs = [] + remote_objs = [] + final_objs = [] + if not data: + data = self.get_vlans_data(connection) + # operate on a collection of resource x + config = data.split("\n") + # Get individual vlan configs separately + vlan_info = "" + temp = "" + vlan_name = True + for conf in config: + if len(list(filter(None, conf.split(" ")))) <= 2 and vlan_name: + temp = temp + conf + if len(list(filter(None, temp.split(" ")))) <= 2: + continue + if "VLAN Name" in conf: + vlan_info = "Name" + elif "VLAN Type" in conf: + vlan_info = "Type" + vlan_name = False + elif "Remote SPAN" in conf: + vlan_info = "Remote" + vlan_name = False + elif "VLAN AREHops" in conf or "STEHops" in conf: + vlan_info = "Hops" + vlan_name = False + if temp: + conf = temp + temp = "" + if conf and " " not in filter(None, conf.split("-")): + obj = self.render_config(self.generated_spec, conf, vlan_info) + if "mtu" in obj: + mtu_objs.append(obj) + elif "remote_span" in obj: + remote_objs = obj + elif obj: + objs.append(obj) + # Appending MTU value to the retrieved dictionary + for o, m in zip(objs, mtu_objs): + o.update(m) + final_objs.append(o) + + # Appending Remote Span value to related VLAN: + if remote_objs: + if remote_objs.get("remote_span"): + for each in remote_objs.get("remote_span"): + for every in final_objs: + if each == every.get("vlan_id"): + every.update({"remote_span": True}) + break + facts = {} + if final_objs: + facts["vlans"] = [] + params = utils.validate_config( + self.argument_spec, {"config": objs} + ) + + for cfg in params["config"]: + facts["vlans"].append(utils.remove_empties(cfg)) + ansible_facts["ansible_network_resources"].update(facts) + + return ansible_facts + + def render_config(self, spec, conf, vlan_info): + """ + Render config as dictionary structure and delete keys + from spec for null values + + :param spec: The facts tree, generated from the argspec + :param conf: The configuration + :rtype: dictionary + :returns: The generated config + """ + config = deepcopy(spec) + + if vlan_info == "Name" and "VLAN Name" not in conf: + conf = list(filter(None, conf.split(" "))) + config["vlan_id"] = int(conf[0]) + config["name"] = conf[1] + try: + if len(conf[2].split("/")) > 1: + if conf[2].split("/")[0] == "sus": + config["state"] = "suspend" + elif conf[2].split("/")[0] == "act": + config["state"] = "active" + config["shutdown"] = "enabled" + else: + if conf[2] == "suspended": + config["state"] = "suspend" + elif conf[2] == "active": + config["state"] = "active" + config["shutdown"] = "disabled" + except IndexError: + pass + elif vlan_info == "Type" and "VLAN Type" not in conf: + conf = list(filter(None, conf.split(" "))) + config["mtu"] = int(conf[3]) + elif vlan_info == "Remote": + if len(conf.split(",")) > 1 or conf.isdigit(): + remote_span_vlan = [] + if len(conf.split(",")) > 1: + remote_span_vlan = conf.split(",") + else: + remote_span_vlan.append(conf) + remote_span = [] + for each in remote_span_vlan: + remote_span.append(int(each)) + config["remote_span"] = remote_span + + return utils.remove_empties(config) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py new file mode 100644 index 00000000..18f87a09 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py @@ -0,0 +1,205 @@ +# This code is part of Ansible, but is an independent component. +# This particular file snippet, and this file snippet only, is BSD licensed. +# Modules you write using this snippet, which is embedded dynamically by Ansible +# still belong to the author of the module, and may assign their own license +# to the complete work. +# +# (c) 2016 Red Hat Inc. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +from __future__ import absolute_import, division, print_function + +__metaclass__ = type +import json + +from ansible.module_utils._text import to_text +from ansible.module_utils.basic import env_fallback +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible.module_utils.connection import Connection, ConnectionError + +_DEVICE_CONFIGS = {} + +ios_provider_spec = { + "host": dict(), + "port": dict(type="int"), + "username": dict(fallback=(env_fallback, ["ANSIBLE_NET_USERNAME"])), + "password": dict( + fallback=(env_fallback, ["ANSIBLE_NET_PASSWORD"]), no_log=True + ), + "ssh_keyfile": dict( + fallback=(env_fallback, ["ANSIBLE_NET_SSH_KEYFILE"]), type="path" + ), + "authorize": dict( + default=False, + fallback=(env_fallback, ["ANSIBLE_NET_AUTHORIZE"]), + type="bool", + ), + "auth_pass": dict( + fallback=(env_fallback, ["ANSIBLE_NET_AUTH_PASS"]), no_log=True + ), + "timeout": dict(type="int"), +} +ios_argument_spec = { + "provider": dict( + type="dict", + options=ios_provider_spec, + removed_at_date="2022-06-01", + removed_from_collection="cisco.ios", + ) +} + + +def get_provider_argspec(): + return ios_provider_spec + + +def get_connection(module): + if hasattr(module, "_ios_connection"): + return module._ios_connection + + capabilities = get_capabilities(module) + network_api = capabilities.get("network_api") + if network_api == "cliconf": + module._ios_connection = Connection(module._socket_path) + else: + module.fail_json(msg="Invalid connection type %s" % network_api) + + return module._ios_connection + + +def get_capabilities(module): + if hasattr(module, "_ios_capabilities"): + return module._ios_capabilities + try: + capabilities = Connection(module._socket_path).get_capabilities() + except ConnectionError as exc: + module.fail_json(msg=to_text(exc, errors="surrogate_then_replace")) + module._ios_capabilities = json.loads(capabilities) + return module._ios_capabilities + + +def get_defaults_flag(module): + connection = get_connection(module) + try: + out = connection.get_defaults_flag() + except ConnectionError as exc: + module.fail_json(msg=to_text(exc, errors="surrogate_then_replace")) + return to_text(out, errors="surrogate_then_replace").strip() + + +def get_config(module, flags=None): + flags = to_list(flags) + + section_filter = False + if flags and "section" in flags[-1]: + section_filter = True + + flag_str = " ".join(flags) + + try: + return _DEVICE_CONFIGS[flag_str] + except KeyError: + connection = get_connection(module) + try: + out = connection.get_config(flags=flags) + except ConnectionError as exc: + if section_filter: + # Some ios devices don't understand `| section foo` + out = get_config(module, flags=flags[:-1]) + else: + module.fail_json( + msg=to_text(exc, errors="surrogate_then_replace") + ) + cfg = to_text(out, errors="surrogate_then_replace").strip() + _DEVICE_CONFIGS[flag_str] = cfg + return cfg + + +def run_commands(module, commands, check_rc=True): + connection = get_connection(module) + try: + return connection.run_commands(commands=commands, check_rc=check_rc) + except ConnectionError as exc: + module.fail_json(msg=to_text(exc)) + + +def load_config(module, commands): + connection = get_connection(module) + + try: + resp = connection.edit_config(commands) + return resp.get("response") + except ConnectionError as exc: + module.fail_json(msg=to_text(exc)) + + +def normalize_interface(name): + """Return the normalized interface name + """ + if not name: + return + + def _get_number(name): + digits = "" + for char in name: + if char.isdigit() or char in "/.": + digits += char + return digits + + if name.lower().startswith("gi"): + if_type = "GigabitEthernet" + elif name.lower().startswith("te"): + if_type = "TenGigabitEthernet" + elif name.lower().startswith("fa"): + if_type = "FastEthernet" + elif name.lower().startswith("fo"): + if_type = "FortyGigabitEthernet" + elif name.lower().startswith("et"): + if_type = "Ethernet" + elif name.lower().startswith("vl"): + if_type = "Vlan" + elif name.lower().startswith("lo"): + if_type = "loopback" + elif name.lower().startswith("po"): + if_type = "port-channel" + elif name.lower().startswith("nv"): + if_type = "nve" + elif name.lower().startswith("twe"): + if_type = "TwentyFiveGigE" + elif name.lower().startswith("hu"): + if_type = "HundredGigE" + else: + if_type = None + + number_list = name.split(" ") + if len(number_list) == 2: + if_number = number_list[-1].strip() + else: + if_number = _get_number(name) + + if if_type: + proper_interface = if_type + if_number + else: + proper_interface = name + + return proper_interface diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/base.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/base.py new file mode 100644 index 00000000..848542bb --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/base.py @@ -0,0 +1,84 @@ +# +# (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.six import iteritems +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( + to_list, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.config import ( + NetworkConfig, +) + + +class ConfigBase(object): + + argument_spec = {} + + mutually_exclusive = [] + + identifier = () + + def __init__(self, **kwargs): + self.values = {} + self._rendered_configuration = {} + self.active_configuration = None + + for item in self.identifier: + self.values[item] = kwargs.pop(item) + + for key, value in iteritems(kwargs): + if key in self.argument_spec: + setattr(self, key, value) + + for key, value in iteritems(self.argument_spec): + if value.get("default"): + if not getattr(self, key, None): + setattr(self, key, value.get("default")) + + def __getattr__(self, key): + if key in self.argument_spec: + return self.values.get(key) + + def __setattr__(self, key, value): + if key in self.argument_spec: + if key in self.identifier: + raise TypeError("cannot set value") + elif value is not None: + self.values[key] = value + else: + super(ConfigBase, self).__setattr__(key, value) + + def context_config(self, cmd): + if "context" not in self._rendered_configuration: + self._rendered_configuration["context"] = list() + self._rendered_configuration["context"].extend(to_list(cmd)) + + def global_config(self, cmd): + if "global" not in self._rendered_configuration: + self._rendered_configuration["global"] = list() + self._rendered_configuration["global"].extend(to_list(cmd)) + + def get_rendered_configuration(self): + config = list() + for section in ("context", "global"): + config.extend(self._rendered_configuration.get(section, [])) + return config + + def set_active_configuration(self, config): + self.active_configuration = config + + def render(self, config=None): + raise NotImplementedError + + def get_section(self, config, section): + if config is not None: + netcfg = NetworkConfig(indent=1, contents=config) + try: + config = netcfg.get_block_config(to_list(section)) + except ValueError: + config = None + return config diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/__init__.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py new file mode 100644 index 00000000..0e0ce1ab --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/address_family.py @@ -0,0 +1,158 @@ +# +# (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.ios.plugins.module_utils.network.ios.providers.providers import ( + CliProvider, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.cli.config.bgp.neighbors import ( + AFNeighbors, +) +from ansible.module_utils.common.network import to_netmask + + +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" % item["afi"] + if item["safi"] != "unicast": + context += " %s" % 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-address-family") + + safe_list.append(context) + + if self.params["operation"] == "replace": + 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_auto_summary(self, item, config=None): + cmd = "auto-summary" + if item["auto_summary"] is False: + cmd = "no %s" % cmd + if not config or cmd not in config: + return cmd + + def _render_synchronization(self, item, config=None): + cmd = "synchronization" + if item["synchronization"] is False: + cmd = "no %s" % cmd + if not config or cmd not in config: + return cmd + + def _render_networks(self, item, config=None): + commands = list() + safe_list = list() + + for entry in item["networks"]: + network = entry["prefix"] + cmd = "network %s" % network + if entry["masklen"]: + cmd += " mask %s" % to_netmask(entry["masklen"]) + network += " mask %s" % to_netmask(entry["masklen"]) + if entry["route_map"]: + cmd += " route-map %s" % entry["route_map"] + network += " route-map %s" % entry["route_map"] + + safe_list.append(network) + + if not config or cmd not in config: + commands.append(cmd) + + if self.params["operation"] == "replace": + if config: + matches = re.findall(r"network (.*)", 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", + "ospfv3", + "eigrp", + ): + cmd += " %s" % entry["id"] + option += " %s" % entry["id"] + + if entry["metric"]: + cmd += " metric %s" % entry["metric"] + + if entry["route_map"]: + cmd += " route-map %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 + + def _render_neighbors(self, item, config): + """ generate bgp neighbor configuration + """ + return AFNeighbors(self.params).render( + config, nbr_list=item["neighbors"] + ) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py new file mode 100644 index 00000000..4db23b9d --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/neighbors.py @@ -0,0 +1,225 @@ +# +# (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.ios.plugins.module_utils.network.ios.providers.providers import ( + CliProvider, +) + + +class Neighbors(CliProvider): + def render(self, config=None, nbr_list=None): + commands = list() + safe_list = list() + if not nbr_list: + nbr_list = self.get_value("config.neighbors") + + for item in nbr_list: + neighbor_commands = list() + context = "neighbor %s" % item["neighbor"] + cmd = "%s remote-as %s" % (context, item["remote_as"]) + + if not config or cmd not in config: + neighbor_commands.append(cmd) + + for key, value in iteritems(item): + if value is not None: + meth = getattr(self, "_render_%s" % key, None) + if meth: + resp = meth(item, config) + if resp: + neighbor_commands.extend(to_list(resp)) + + commands.extend(neighbor_commands) + safe_list.append(context) + + if self.params["operation"] == "replace": + 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_local_as(self, item, config=None): + cmd = "neighbor %s local-as %s" % (item["neighbor"], item["local_as"]) + if not config or cmd not in config: + return cmd + + def _render_port(self, item, config=None): + cmd = "neighbor %s port %s" % (item["neighbor"], item["port"]) + if not config or cmd not in config: + return cmd + + def _render_description(self, item, config=None): + cmd = "neighbor %s description %s" % ( + item["neighbor"], + item["description"], + ) + if not config or cmd not in config: + return cmd + + def _render_enabled(self, item, config=None): + cmd = "neighbor %s shutdown" % item["neighbor"] + if item["enabled"] is True: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_update_source(self, item, config=None): + cmd = "neighbor %s update-source %s" % ( + item["neighbor"], + item["update_source"], + ) + if not config or cmd not in config: + return cmd + + def _render_password(self, item, config=None): + cmd = "neighbor %s password %s" % (item["neighbor"], item["password"]) + if not config or cmd not in config: + return cmd + + def _render_ebgp_multihop(self, item, config=None): + cmd = "neighbor %s ebgp-multihop %s" % ( + item["neighbor"], + item["ebgp_multihop"], + ) + if not config or cmd not in config: + return cmd + + def _render_peer_group(self, item, config=None): + cmd = "neighbor %s peer-group %s" % ( + item["neighbor"], + item["peer_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"] + neighbor = item["neighbor"] + + if keepalive and holdtime: + cmd = "neighbor %s timers %s %s" % (neighbor, keepalive, holdtime) + if min_neighbor_holdtime: + cmd += " %s" % min_neighbor_holdtime + if not config or cmd not in config: + return cmd + + +class AFNeighbors(CliProvider): + def render(self, config=None, nbr_list=None): + commands = list() + if not nbr_list: + return + + for item in nbr_list: + neighbor_commands = list() + for key, value in iteritems(item): + if value is not None: + meth = getattr(self, "_render_%s" % key, None) + if meth: + resp = meth(item, config) + if resp: + neighbor_commands.extend(to_list(resp)) + + commands.extend(neighbor_commands) + + return commands + + def _render_advertisement_interval(self, item, config=None): + cmd = "neighbor %s advertisement-interval %s" % ( + item["neighbor"], + item["advertisement_interval"], + ) + if not config or cmd not in config: + return cmd + + def _render_route_reflector_client(self, item, config=None): + cmd = "neighbor %s route-reflector-client" % item["neighbor"] + if item["route_reflector_client"] is False: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_route_server_client(self, item, config=None): + cmd = "neighbor %s route-server-client" % item["neighbor"] + if item["route_server_client"] is False: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_remove_private_as(self, item, config=None): + cmd = "neighbor %s remove-private-as" % item["neighbor"] + if item["remove_private_as"] is False: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_next_hop_self(self, item, config=None): + cmd = "neighbor %s next-hop-self" % item["neighbor"] + if item["next_hop_self"] is False: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_activate(self, item, config=None): + cmd = "neighbor %s activate" % item["neighbor"] + if item["activate"] is False: + if not config or cmd in config: + cmd = "no %s" % cmd + return cmd + elif not config or cmd not in config: + return cmd + + def _render_maximum_prefix(self, item, config=None): + cmd = "neighbor %s maximum-prefix %s" % ( + item["neighbor"], + item["maximum_prefix"], + ) + if not config or cmd not in config: + return cmd + + def _render_prefix_list_in(self, item, config=None): + cmd = "neighbor %s prefix-list %s in" % ( + item["neighbor"], + item["prefix_list_in"], + ) + if not config or cmd not in config: + return cmd + + def _render_prefix_list_out(self, item, config=None): + cmd = "neighbor %s prefix-list %s out" % ( + item["neighbor"], + item["prefix_list_out"], + ) + if not config or cmd not in config: + return cmd diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/process.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/process.py new file mode 100644 index 00000000..9512d9d2 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/cli/config/bgp/process.py @@ -0,0 +1,168 @@ +# +# (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.ios.plugins.module_utils.network.ios.providers.providers import ( + register_provider, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.providers import ( + CliProvider, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.cli.config.bgp.neighbors import ( + Neighbors, +) +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers.cli.config.bgp.address_family import ( + AddressFamily, +) +from ansible.module_utils.common.network import to_netmask + +REDISTRIBUTE_PROTOCOLS = [ + "ospf", + "ospfv3", + "eigrp", + "isis", + "static", + "connected", + "odr", + "lisp", + "mobile", + "rip", +] + + +@register_provider("ios", "ios_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: + self._validate_input(config) + if operation == "replace": + if existing_as and int(existing_as) != self.get_value( + "config.bgp_as" + ): + commands.append("no router bgp %s" % existing_as) + config = None + + elif operation == "override": + if existing_as: + commands.append("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 cmd + elif log_neighbor_changes is False: + if config and cmd in config: + return "no %s" % cmd + + def _render_networks(self, config=None): + commands = list() + safe_list = list() + + for entry in self.get_value("config.networks"): + network = entry["prefix"] + cmd = "network %s" % network + if entry["masklen"] and entry["masklen"] not in (24, 16, 8): + cmd += " mask %s" % to_netmask(entry["masklen"]) + network += " mask %s" % to_netmask(entry["masklen"]) + + if entry["route_map"]: + cmd += " route-map %s" % entry["route_map"] + network += " route-map %s" % entry["route_map"] + + safe_list.append(network) + + if not config or cmd not in config: + commands.append(cmd) + + if self.params["operation"] == "replace": + if config: + matches = re.findall(r"network (.*)", config, re.M) + for entry in set(matches).difference(safe_list): + commands.append("no network %s" % entry) + + return commands + + 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) + + def _validate_input(self, config=None): + def device_has_AF(config): + return re.search(r"address-family (?:.*)", config) + + address_family = self.get_value("config.address_family") + root_networks = self.get_value("config.networks") + operation = self.params["operation"] + + if operation == "replace": + if address_family and root_networks: + for item in address_family: + if item["networks"]: + raise ValueError( + "operation is replace but provided both root level network(s) and network(s) under %s %s address family" + % (item["afi"], item["safi"]) + ) + + if root_networks and config and device_has_AF(config): + raise ValueError( + "operation is replace and device has one or more address family activated but root level network(s) provided" + ) diff --git a/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/module.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/module.py new file mode 100644 index 00000000..cc516ff1 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/module.py @@ -0,0 +1,72 @@ +# +# (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.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.cisco.ios.plugins.module_utils.network.ios.providers import ( + providers, +) +from ansible.module_utils._text import to_text + + +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/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/providers.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/providers.py new file mode 100644 index 00000000..485eb383 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/providers/providers.py @@ -0,0 +1,128 @@ +# +# (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.utils import ( + to_list, +) +from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.config import ( + NetworkConfig, +) + + +_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/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py new file mode 100644 index 00000000..f9d64a58 --- /dev/null +++ b/collections-debian-merged/ansible_collections/cisco/ios/plugins/module_utils/network/ios/rm_templates/acls.py @@ -0,0 +1,284 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 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 acls 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.network_template import ( + NetworkTemplate, +) + + +def _tmplt_access_list_name(config_data): + try: + acl_id = int(config_data.get("name")) + if not config_data.get("acl_type"): + if acl_id >= 1 and acl_id <= 99: + config_data["acl_type"] = "standard" + if acl_id >= 100 and acl_id <= 199: + config_data["acl_type"] = "extended" + except ValueError: + pass + afi = config_data.get("afi") + if afi == "ipv4": + command = "ip access-list {acl_type} {name}".format(**config_data) + elif afi == "ipv6": + command = "ipv6 access-list {name}".format(**config_data) + return command + + +def _tmplt_access_list_entries(config_data): + if "aces" in config_data: + command = [] + + def source_destination_common_config(config_data, command, type): + if config_data[type].get("address"): + command += " {address}".format(**config_data[type]) + if config_data[type].get("wildcard_bits"): + command += " {wildcard_bits}".format( + **config_data["source"] + ) + elif config_data[type].get("any"): + command += " any".format(**config_data[type]) + elif config_data[type].get("host"): + command += " host {host}".format(**config_data[type]) + if config_data[type].get("port_protocol"): + port_proto_type = list( + config_data[type]["port_protocol"].keys() + )[0] + command += " {0} {1}".format( + port_proto_type, + config_data[type]["port_protocol"][port_proto_type], + ) + return command + + command = "" + proto_option = None + if config_data.get("aces"): + aces = config_data["aces"] + if aces.get("sequence") and config_data.get("afi") == "ipv4": + command += "{sequence}".format(**aces) + if ( + aces.get("grant") + and aces.get("sequence") + and config_data.get("afi") == "ipv4" + ): + command += " {grant}".format(**aces) + elif ( + aces.get("grant") + and aces.get("sequence") + and config_data.get("afi") == "ipv6" + ): + command += "{grant}".format(**aces) + elif aces.get("grant"): + command += "{grant}".format(**aces) + if aces.get("protocol_options"): + if "protocol_number" in aces["protocol_options"]: + command += " {protocol_number}".format( + **aces["protocol_options"] + ) + else: + command += " {0}".format(list(aces["protocol_options"])[0]) + proto_option = aces["protocol_options"].get( + list(aces["protocol_options"])[0] + ) + elif aces.get("protocol"): + command += " {protocol}".format(**aces) + if aces.get("source"): + command = source_destination_common_config( + aces, command, "source" + ) + if aces.get("destination"): + command = source_destination_common_config( + aces, command, "destination" + ) + if proto_option: + command += " {0}".format(list(proto_option.keys())[0]) + if aces.get("dscp"): + command += " dscp {dscp}".format(**aces) + if aces.get("sequence") and config_data.get("afi") == "ipv6": + command += " sequence {sequence}".format(**aces) + if aces.get("fragments"): + command += " fragments {fragments}".format(**aces) + if aces.get("log"): + command += " log {log}".format(**aces) + if aces.get("log_input"): + command += " log-input {log_input}".format(**aces) + if aces.get("option"): + option_val = list(aces.get("option").keys())[0] + command += " option {0}".format(option_val) + if aces.get("precedence"): + command += " precedence {precedence}".format(**aces) + if aces.get("time_range"): + command += " time-range {time_range}".format(**aces) + if aces.get("tos"): + command += " tos" + if aces["tos"].get("service_value"): + command += " {service_value}".format(**aces["tos"]) + elif aces["tos"].get("max_reliability"): + command += " max-reliability" + elif aces["tos"].get("max_throughput"): + command += " max-throughput" + elif aces["tos"].get("min_delay"): + command += " min-delay" + elif aces["tos"].get("min_monetary_cost"): + command += " min-monetary-cost" + elif aces["tos"].get("normal"): + command += " normal" + if aces.get("ttl"): + command += " ttl {0}".format(list(aces["ttl"])[0]) + proto_option = aces["ttl"].get(list(aces["ttl"])[0]) + command += " {0}".format(proto_option) + return command + return command + + +class AclsTemplate(NetworkTemplate): + def __init__(self, lines=None): + super(AclsTemplate, self).__init__(lines=lines, tmplt=self) + + PARSERS = [ + { + "name": "acls_name", + "getval": re.compile( + r"""^(?PStandard|Extended)* + \s*(?PIP|IPv6)* + \s*access* + \s*list* + \s*(?P\S+)* + $""", + re.VERBOSE, + ), + "compval": "name", + "setval": _tmplt_access_list_name, + "result": { + "acls": { + "{{ acl_name }}": { + "name": "{{ acl_name }}", + "acl_type": "{{ acl_type.lower() if acl_type is defined }}", + "afi": "{{ 'ipv4' if afi == 'IP' else 'ipv6' }}", + } + } + }, + "shared": True, + }, + { + "name": "aces", + "getval": re.compile( + r"""\s*(?P\d+)* + \s*(?Pdeny|permit)* + \s*(?Pany|(?:[0-9]{1,3}\.){3}[0-9]{1,3},\swildcard\sbits\s(?:[0-9]{1,3}\.){3}[0-9]{1,3}|(?:[0-9]{1,3}\.){3}[0-9]{1,3}|host\s(?:[0-9]{1,3}\.){3}[0-9]{1,3})* + \s*(?Pevaluate\s\S+)* + \s*(?Pahp|eigrp|esp|gre|icmp|igmp|ip|ipinip|nos|object-group|ospf|pcp|pim|sctp|tcp|udp)* + \s*(?P\d+\s)* + \s*(?Pany|(?:[0-9]{1,3}\.){3}[0-9]{1,3}\s(?:[0-9]{1,3}\.){3}[0-9]{1,3}|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\S+|host\s(?:[0-9]{1,3}\.){3}[0-9]{1,3}|object-group\s\S+)* + \s*(?P(eq|gts|lt|neq)\s(\S+|\d+))* + \s*(?Pany|(?:[0-9]{1,3}\.){3}[0-9]{1,3}\s(?:[0-9]{1,3}\.){3}[0-9]{1,3}|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\S+|host\s(?:[0-9]{1,3}\.){3}[0-9]{1,3}|object-group\s\S+)* + \s*(?P(eq|gts|lt|neq)\s(\S+|\d+))* + \s*(?Padministratively-prohibited|alternate-address|conversion-error|dod-host-prohibited|dod-net-prohibited|echo|echo-reply|general-parameter-problem|host-isolated|host-precedence-unreachable|host-redirect|host-tos-redirect|host-tos-unreachable|host-unknown|host-unreachable|information-reply|information-request|mask-reply|mask-request|mobile-redirect|net-redirect|net-tos-redirect|net-tos-unreachable|net-unreachable|network-unknown|no-room-for-option|option-missing|packet-too-big|parameter-problem|port-unreachable|precedence-unreachable|protocol-unreachable|reassembly-timeout|redirect|router-advertisement|router-solicitation|source-quench|source-route-failed|time-exceeded|timestamp-reply|timestamp-request|traceroute|ttl-exceeded|unreachable|dvmrp|host-query|mtrace-resp|mtrace-route|pim|trace|v1host-report|v2host-report|v2leave-group|v3host-report|ack|established|fin|psh|rst|syn|urg)* + \s*(?Pdscp\s\S+)* + \s*(?Pfragments\s\S+)* + \s*(?Plog\s\S+)* + \s*(?Plog-input\s\S+)* + \s*(?P